diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index fe3092a5017..02d1f9fc825 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -5,7 +5,7 @@ use compositor_data::{CompositorData, DoesntWantScrollEvents, WantsScrollEvents}; use compositor_task::{Msg, CompositorTask, Exit, ChangeReadyState, SetIds, LayerProperties}; use compositor_task::{GetGraphicsMetadata, CreateOrUpdateRootLayer, CreateOrUpdateDescendantLayer}; -use compositor_task::{SetLayerClipRect, Paint, ScrollFragmentPoint, LoadComplete}; +use compositor_task::{SetLayerOrigin, Paint, ScrollFragmentPoint, LoadComplete}; use compositor_task::{ShutdownComplete, ChangeRenderState, RenderMsgDiscarded}; use constellation::SendableFrameTree; use events; @@ -312,8 +312,8 @@ impl IOCompositor { self.create_or_update_descendant_layer(layer_properties); } - (Ok(SetLayerClipRect(pipeline_id, layer_id, new_rect)), NotShuttingDown) => { - self.set_layer_clip_rect(pipeline_id, layer_id, new_rect); + (Ok(SetLayerOrigin(pipeline_id, layer_id, origin)), NotShuttingDown) => { + self.set_layer_origin(pipeline_id, layer_id, origin); } (Ok(Paint(pipeline_id, epoch, replies)), NotShuttingDown) => { @@ -558,17 +558,17 @@ impl IOCompositor { self.recomposite_if(needs_recomposite); } - fn set_layer_clip_rect(&mut self, - pipeline_id: PipelineId, - layer_id: LayerId, - new_rect_in_page_coordinates: Rect) { - let new_rect_in_layer_coordinates = - self.convert_page_rect_to_layer_coordinates(new_rect_in_page_coordinates); - let new_rect_in_layer_coordinates = Rect::from_untyped(&new_rect_in_layer_coordinates); - + fn set_layer_origin(&mut self, + pipeline_id: PipelineId, + layer_id: LayerId, + new_origin: Point2D) { + let new_origin_in_device_coordinates = new_origin * self.device_pixels_per_page_px().get(); match self.find_layer_with_pipeline_and_layer_id(pipeline_id, layer_id) { - Some(ref layer) => *layer.bounds.borrow_mut() = new_rect_in_layer_coordinates, - None => fail!("compositor received SetLayerClipRect for nonexistent layer"), + Some(ref layer) => { + layer.bounds.borrow_mut().origin = + Point2D::from_untyped(&new_origin_in_device_coordinates) + } + None => fail!("Compositor received SetLayerOrigin for nonexistent layer"), }; self.send_buffer_requests_for_all_layers(); diff --git a/components/compositing/compositor_task.rs b/components/compositing/compositor_task.rs index 0f63b11d4b0..14cf50bea75 100644 --- a/components/compositing/compositor_task.rs +++ b/components/compositing/compositor_task.rs @@ -117,8 +117,6 @@ impl RenderListener for CompositorChan { } else { self.chan.send(CreateOrUpdateDescendantLayer(layer_properties)); } - - self.chan.send(SetLayerClipRect(pipeline_id, metadata.id, layer_properties.rect)); } } @@ -167,8 +165,8 @@ pub enum Msg { /// Tells the compositor to create a descendant layer for a pipeline if necessary (i.e. if no /// layer with that ID exists). CreateOrUpdateDescendantLayer(LayerProperties), - /// Alerts the compositor that the specified layer's clipping rect has changed. - SetLayerClipRect(PipelineId, LayerId, Rect), + /// Alerts the compositor that the specified layer's origin has changed. + SetLayerOrigin(PipelineId, LayerId, Point2D), /// Scroll a page in a window ScrollFragmentPoint(PipelineId, LayerId, Point2D), /// Requests that the compositor paint the given layer buffer set for the given page size. diff --git a/components/compositing/constellation.rs b/components/compositing/constellation.rs index 0cf02f2ce35..add70aaf39c 100644 --- a/components/compositing/constellation.rs +++ b/components/compositing/constellation.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use compositor_task::{CompositorChan, LoadComplete, ShutdownComplete, SetLayerClipRect, SetIds}; +use compositor_task::{CompositorChan, LoadComplete, ShutdownComplete, SetLayerOrigin, SetIds}; use std::collections::hashmap::{HashMap, HashSet}; use geom::rect::{Rect, TypedRect}; use geom::scale_factor::ScaleFactor; @@ -507,9 +507,9 @@ impl Constellation { initial_viewport: rect.size * ScaleFactor(1.0), device_pixel_ratio: self.window_size.device_pixel_ratio, })); - self.compositor_chan.send(SetLayerClipRect(pipeline.id, - LayerId::null(), - rect.to_untyped())); + self.compositor_chan.send(SetLayerOrigin(pipeline.id, + LayerId::null(), + rect.to_untyped().origin)); } else { already_sent.insert(pipeline.id); } diff --git a/components/compositing/headless.rs b/components/compositing/headless.rs index d8d56e64d00..a1817560670 100644 --- a/components/compositing/headless.rs +++ b/components/compositing/headless.rs @@ -4,7 +4,7 @@ use compositor_task::{Msg, Exit, ChangeReadyState, SetIds}; use compositor_task::{GetGraphicsMetadata, CreateOrUpdateRootLayer, CreateOrUpdateDescendantLayer}; -use compositor_task::{SetLayerClipRect, Paint, ScrollFragmentPoint, LoadComplete}; +use compositor_task::{SetLayerOrigin, Paint, ScrollFragmentPoint, LoadComplete}; use compositor_task::{ShutdownComplete, ChangeRenderState, RenderMsgDiscarded}; use geom::scale_factor::ScaleFactor; @@ -90,7 +90,7 @@ impl NullCompositor { CreateOrUpdateRootLayer(..) | CreateOrUpdateDescendantLayer(..) | - SetLayerClipRect(..) | Paint(..) | + SetLayerOrigin(..) | Paint(..) | ChangeReadyState(..) | ChangeRenderState(..) | ScrollFragmentPoint(..) | LoadComplete(..) | RenderMsgDiscarded(..) => () }