diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index 960f99f5568..346666ac31b 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -1292,6 +1292,8 @@ impl IOCompositor { if !self.context.is_some() { return None } + let (width, height) = + (self.window_size.width.get() as usize, self.window_size.height.get() as usize); if !self.window.prepare_for_composite(width, height) { return None } @@ -1305,9 +1307,6 @@ impl IOCompositor { _ => {} } - let (width, height) = - (self.window_size.width.get() as usize, self.window_size.height.get() as usize); - let (framebuffer_ids, texture_ids) = match target { CompositeTarget::Window => (vec!(), vec!()), _ => initialize_png(width, height) diff --git a/components/compositing/windowing.rs b/components/compositing/windowing.rs index 51b13bfdf81..196e1e2653f 100644 --- a/components/compositing/windowing.rs +++ b/components/compositing/windowing.rs @@ -123,7 +123,7 @@ pub trait WindowMethods { /// Requests that the window system prepare a composite. Typically this will involve making /// some type of platform-specific graphics context current. Returns true if the composite may /// proceed and false if it should not. - fn prepare_for_composite(&self) -> bool; + fn prepare_for_composite(&self, width: usize, height: usize) -> bool; /// Sets the cursor to be used in the window. fn set_cursor(&self, cursor: Cursor); diff --git a/ports/cef/render_handler.rs b/ports/cef/render_handler.rs index ef80b6ea881..01d2f51603c 100644 --- a/ports/cef/render_handler.rs +++ b/ports/cef/render_handler.rs @@ -8,12 +8,12 @@ use types::cef_paint_element_type_t::PET_VIEW; use std::ptr; pub trait CefRenderHandlerExtensions { - fn paint(&self, browser: CefBrowser); + fn paint(&self, browser: CefBrowser, width: usize, height: usize); } impl CefRenderHandlerExtensions for CefRenderHandler { - fn paint(&self, browser: CefBrowser) { - self.on_paint(browser, PET_VIEW, 0, ptr::null(), &mut (), 0, 0) + fn paint(&self, browser: CefBrowser, width: usize, height: usize) { + self.on_paint(browser, PET_VIEW, 0, ptr::null(), &mut (), width as i32, height as i32) } } diff --git a/ports/cef/window.rs b/ports/cef/window.rs index fd93081b1d6..96a2379deca 100644 --- a/ports/cef/window.rs +++ b/ports/cef/window.rs @@ -253,12 +253,12 @@ impl WindowMethods for Window { box receiver as Box) } - fn prepare_for_composite(&self) -> bool { + fn prepare_for_composite(&self, width: usize, height: usize) -> bool { let browser = self.cef_browser.borrow(); match *browser { None => {} Some(ref browser) => { - browser.get_host().get_client().get_render_handler().paint(browser.clone()); + browser.get_host().get_client().get_render_handler().paint(browser.clone(), width, height); } } true diff --git a/ports/glutin/window.rs b/ports/glutin/window.rs index 1878389ced3..74f6d8d2a62 100644 --- a/ports/glutin/window.rs +++ b/ports/glutin/window.rs @@ -550,7 +550,7 @@ impl WindowMethods for Window { self.window.set_cursor(glutin_cursor); } - fn prepare_for_composite(&self) -> bool { + fn prepare_for_composite(&self, _width: usize, _height: usize) -> bool { true } diff --git a/ports/gonk/src/window.rs b/ports/gonk/src/window.rs index c6c60088232..457f9d01aec 100644 --- a/ports/gonk/src/window.rs +++ b/ports/gonk/src/window.rs @@ -818,7 +818,7 @@ impl WindowMethods for Window { fn set_cursor(&self, _: Cursor) { } - fn prepare_for_composite(&self) -> bool { + fn prepare_for_composite(&self, _width: usize, _height: usize) -> bool { true } }