aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-07-29 15:29:58 -0600
committerbors-servo <metajack+bors@gmail.com>2015-07-29 15:29:58 -0600
commitb90fd5931dbba9cf26e3111132587ea285dbca05 (patch)
treeb07705c04f074d00cfeed4b76280c03479577c12 /components/script/dom/webglrenderingcontext.rs
parent58fa3b69b76387958db45bc9831ac7c79caab2ea (diff)
parentbc908458ff24e42cc0c1ad32df44481456737bdb (diff)
downloadservo-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.rs21
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),
+ }
})
}