Bug 1409736 - Update bindings for API changes in WR PR 1904. r?jrmuizel draft
authorGlenn Watson <gwatson@mozilla.com>
Mon, 23 Oct 2017 09:49:28 -0400
changeset 684724 709db0dd529ebf781942e417c29c45a474b70b63
parent 684723 c2dc3ae0c0e2f1c3b804a6c0d9074373e750779e
child 736944 de9946b7458fdf2a59066cbaebec2c87e68b503c
push id85704
push userkgupta@mozilla.com
push dateMon, 23 Oct 2017 13:50:55 +0000
reviewersjrmuizel
bugs1409736
milestone58.0a1
Bug 1409736 - Update bindings for API changes in WR PR 1904. r?jrmuizel MozReview-Commit-ID: Ipsv4QSgLYB
gfx/webrender_bindings/src/bindings.rs
--- a/gfx/webrender_bindings/src/bindings.rs
+++ b/gfx/webrender_bindings/src/bindings.rs
@@ -413,30 +413,36 @@ extern "C" {
     fn wr_notifier_new_frame_ready(window_id: WrWindowId);
     fn wr_notifier_new_scroll_frame_ready(window_id: WrWindowId,
                                           composite_needed: bool);
     fn wr_notifier_external_event(window_id: WrWindowId,
                                   raw_event: usize);
 }
 
 impl webrender_api::RenderNotifier for CppNotifier {
-    fn new_frame_ready(&mut self) {
+    fn clone(&self) -> Box<webrender_api::RenderNotifier> {
+        Box::new(CppNotifier {
+            window_id: self.window_id,
+        })
+    }
+
+    fn new_frame_ready(&self) {
         unsafe {
             wr_notifier_new_frame_ready(self.window_id);
         }
     }
 
-    fn new_scroll_frame_ready(&mut self,
+    fn new_scroll_frame_ready(&self,
                               composite_needed: bool) {
         unsafe {
             wr_notifier_new_scroll_frame_ready(self.window_id, composite_needed);
         }
     }
 
-    fn external_event(&mut self,
+    fn external_event(&self,
                       event: ExternalEvent) {
         unsafe {
             wr_notifier_external_event(self.window_id, event.unwrap());
         }
     }
 }
 
 #[no_mangle]
@@ -638,31 +644,31 @@ pub extern "C" fn wr_window_new(window_i
                     Ok(override_str) => Some(PathBuf::from(override_str)),
                     _ => None
                 }
             }
         },
         ..Default::default()
     };
 
-    let (renderer, sender) = match Renderer::new(gl, opts) {
+    let notifier = Box::new(CppNotifier {
+        window_id: window_id,
+    });
+    let (renderer, sender) = match Renderer::new(gl, notifier, opts) {
         Ok((renderer, sender)) => (renderer, sender),
         Err(e) => {
             println!(" Failed to create a Renderer: {:?}", e);
             let msg = CString::new(format!("wr_window_new: {:?}", e)).unwrap();
             unsafe {
                 gfx_critical_note(msg.as_ptr());
             }
             return false;
         },
     };
 
-    renderer.set_render_notifier(Box::new(CppNotifier {
-                                              window_id: window_id,
-                                          }));
     unsafe {
         *out_max_texture_size = renderer.get_max_texture_size();
     }
     let window_size = DeviceUintSize::new(window_width, window_height);
     *out_handle = Box::into_raw(Box::new(
             DocumentHandle::new(sender.create_api(), window_size)));
     *out_renderer = Box::into_raw(Box::new(renderer));