diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-07-29 15:29:58 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-07-29 15:29:58 -0600 |
commit | b90fd5931dbba9cf26e3111132587ea285dbca05 (patch) | |
tree | b07705c04f074d00cfeed4b76280c03479577c12 /components/script/dom/webglrenderingcontext.rs | |
parent | 58fa3b69b76387958db45bc9831ac7c79caab2ea (diff) | |
parent | bc908458ff24e42cc0c1ad32df44481456737bdb (diff) | |
download | servo-b90fd5931dbba9cf26e3111132587ea285dbca05.tar.gz servo-b90fd5931dbba9cf26e3111132587ea285dbca05.zip |
Auto merge of #6812 - ecoal95:webgl-fail, r=jdm
webgl: Make context creation fallible. Fixes #6806
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6812)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 78a2567cbd2..750edfb8329 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -64,20 +64,23 @@ impl WebGLRenderingContext { canvas: &HTMLCanvasElement, size: Size2D<i32>, attrs: GLContextAttributes) - -> Result<WebGLRenderingContext, &'static str> { + -> Result<WebGLRenderingContext, String> { let (sender, receiver) = ipc::channel().unwrap(); let constellation_chan = global.constellation_chan(); constellation_chan.0 .send(ConstellationMsg::CreateWebGLPaintTask(size, attrs, sender)) .unwrap(); - let (ipc_renderer, renderer_id) = receiver.recv().unwrap(); - Ok(WebGLRenderingContext { - reflector_: Reflector::new(), - global: GlobalField::from_rooted(&global), - renderer_id: renderer_id, - ipc_renderer: ipc_renderer, - last_error: Cell::new(None), - canvas: JS::from_ref(canvas), + let result = receiver.recv().unwrap(); + + result.map(|(ipc_renderer, renderer_id)| { + WebGLRenderingContext { + reflector_: Reflector::new(), + global: GlobalField::from_rooted(&global), + renderer_id: renderer_id, + ipc_renderer: ipc_renderer, + last_error: Cell::new(None), + canvas: JS::from_ref(canvas), + } }) } |