Skip to content

Commit

Permalink
Remove SetLayerClipRect and add SetLayerOrigin
Browse files Browse the repository at this point in the history
The constallation has accurate information about iframe layer origins,
but not their size.
  • Loading branch information
bjwbell authored and mrobinson committed Sep 12, 2014
1 parent e17cc2d commit ff71c32
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 23 deletions.
26 changes: 13 additions & 13 deletions components/compositing/compositor.rs
Expand Up @@ -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;
Expand Down Expand Up @@ -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) => {
Expand Down Expand Up @@ -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<f32>) {
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<f32>) {
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();
Expand Down
6 changes: 2 additions & 4 deletions components/compositing/compositor_task.rs
Expand Up @@ -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));
}
}

Expand Down Expand Up @@ -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<f32>),
/// Alerts the compositor that the specified layer's origin has changed.
SetLayerOrigin(PipelineId, LayerId, Point2D<f32>),
/// Scroll a page in a window
ScrollFragmentPoint(PipelineId, LayerId, Point2D<f32>),
/// Requests that the compositor paint the given layer buffer set for the given page size.
Expand Down
8 changes: 4 additions & 4 deletions components/compositing/constellation.rs
Expand Up @@ -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;
Expand Down Expand Up @@ -507,9 +507,9 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
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);
}
Expand Down
4 changes: 2 additions & 2 deletions components/compositing/headless.rs
Expand Up @@ -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;
Expand Down Expand Up @@ -90,7 +90,7 @@ impl NullCompositor {

CreateOrUpdateRootLayer(..) |
CreateOrUpdateDescendantLayer(..) |
SetLayerClipRect(..) | Paint(..) |
SetLayerOrigin(..) | Paint(..) |
ChangeReadyState(..) | ChangeRenderState(..) | ScrollFragmentPoint(..) |
LoadComplete(..) | RenderMsgDiscarded(..) => ()
}
Expand Down

0 comments on commit ff71c32

Please sign in to comment.