diff --git a/src/render_backend.rs b/src/render_backend.rs index ed73f4923e..0ca611f52f 100644 --- a/src/render_backend.rs +++ b/src/render_backend.rs @@ -33,6 +33,7 @@ pub struct RenderBackend { notifier: Arc>>>, webrender_context_handle: Option, webgl_contexts: HashMap>, + current_bound_webgl_context_id: Option, } impl RenderBackend { @@ -68,6 +69,7 @@ impl RenderBackend { notifier: notifier, webrender_context_handle: webrender_context_handle, webgl_contexts: HashMap::new(), + current_bound_webgl_context_id: None, }; backend @@ -210,6 +212,7 @@ impl RenderBackend { let ctx = self.webgl_contexts.get(&context_id).unwrap(); ctx.make_current().unwrap(); command.apply(ctx); + self.current_bound_webgl_context_id = Some(context_id); } } } @@ -224,6 +227,10 @@ impl RenderBackend { // Flatten the stacking context hierarchy let mut new_pipeline_sizes = HashMap::new(); + if let Some(id) = self.current_bound_webgl_context_id { + self.webgl_contexts.get(&id).unwrap().unbind().unwrap(); + } + self.frame.create(&self.scene, Size2D::new(self.viewport.size.width as u32, self.viewport.size.height as u32),