aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
authorecoal95 <ecoal95@gmail.com>2015-07-28 16:58:53 +0200
committerecoal95 <ecoal95@gmail.com>2015-07-28 17:34:23 +0200
commitbc908458ff24e42cc0c1ad32df44481456737bdb (patch)
tree0d1ac6a2490e56fb8dd159b2a3aee7bb926c051d /components/script/dom/webglrenderingcontext.rs
parente0bd80f80715bdbdf30de1de9c79a99a41cfd99e (diff)
downloadservo-bc908458ff24e42cc0c1ad32df44481456737bdb.tar.gz
servo-bc908458ff24e42cc0c1ad32df44481456737bdb.zip
webgl: Make context creation fallible. Fixes #6806
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r--components/script/dom/webglrenderingcontext.rs21
1 files changed, 12 insertions, 9 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 4dcd1705782..f02cd0d9524 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),
+ }
})
}