aboutsummaryrefslogtreecommitdiffstats
path: root/components/compositing/compositor.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/compositing/compositor.rs')
-rw-r--r--components/compositing/compositor.rs48
1 files changed, 7 insertions, 41 deletions
diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs
index cb2abb781fa..f6f1a02fcc5 100644
--- a/components/compositing/compositor.rs
+++ b/components/compositing/compositor.rs
@@ -6,7 +6,6 @@ use CompositionPipeline;
use SendableFrameTree;
use compositor_thread::{CompositorProxy, CompositorReceiver};
use compositor_thread::{InitialCompositorState, Msg, RenderListener};
-use delayed_composition::DelayedCompositionTimerProxy;
use euclid::{Point2D, TypedPoint2D, TypedVector2D, TypedRect, ScaleFactor, TypedSize2D};
use gfx_traits::Epoch;
use gleam::gl;
@@ -131,9 +130,6 @@ pub struct IOCompositor<Window: WindowMethods> {
channel_to_self: CompositorProxy,
- /// A handle to the delayed composition timer.
- delayed_composition_timer: DelayedCompositionTimerProxy,
-
/// The type of composition to perform
composite_target: CompositeTarget,
@@ -207,7 +203,6 @@ struct ScrollZoomEvent {
#[derive(PartialEq, Debug)]
enum CompositionRequest {
NoCompositingNecessary,
- DelayedComposite(u64),
CompositeNow(CompositingReason),
}
@@ -363,7 +358,6 @@ impl<Window: WindowMethods> IOCompositor<Window> {
scale: ScaleFactor::new(1.0),
scale_factor: scale_factor,
channel_to_self: state.sender.clone_compositor_proxy(),
- delayed_composition_timer: DelayedCompositionTimerProxy::new(state.sender),
composition_request: CompositionRequest::NoCompositingNecessary,
touch_handler: TouchHandler::new(),
pending_scroll_zoom_events: Vec::new(),
@@ -437,8 +431,6 @@ impl<Window: WindowMethods> IOCompositor<Window> {
let _ = receiver.recv();
}
- self.delayed_composition_timer.shutdown();
-
self.shutdown_state = ShutdownState::FinishedShuttingDown;
}
@@ -524,16 +516,6 @@ impl<Window: WindowMethods> IOCompositor<Window> {
}
}
- (Msg::DelayedCompositionTimeout(timestamp), ShutdownState::NotShuttingDown) => {
- if let CompositionRequest::DelayedComposite(this_timestamp) =
- self.composition_request {
- if timestamp == this_timestamp {
- self.composition_request = CompositionRequest::CompositeNow(
- CompositingReason::DelayedCompositeTimeout)
- }
- }
- }
-
(Msg::Recomposite(reason), ShutdownState::NotShuttingDown) => {
self.composition_request = CompositionRequest::CompositeNow(reason)
}
@@ -753,18 +735,6 @@ impl<Window: WindowMethods> IOCompositor<Window> {
}
}
- fn schedule_delayed_composite_if_necessary(&mut self) {
- match self.composition_request {
- CompositionRequest::CompositeNow(_) => return,
- CompositionRequest::DelayedComposite(_) |
- CompositionRequest::NoCompositingNecessary => {}
- }
-
- let timestamp = precise_time_ns();
- self.delayed_composition_timer.schedule_composite(timestamp);
- self.composition_request = CompositionRequest::DelayedComposite(timestamp);
- }
-
fn scroll_fragment_to_point(&mut self, id: ClipId, point: Point2D<f32>) {
self.webrender_api.scroll_node_with_id(LayoutPoint::from_untyped(&point), id,
ScrollClamping::ToContentBounds);
@@ -1235,13 +1205,18 @@ impl<Window: WindowMethods> IOCompositor<Window> {
pipeline_ids.push(*pipeline_id);
}
}
+ let animation_state = if pipeline_ids.is_empty() {
+ windowing::AnimationState::Idle
+ } else {
+ windowing::AnimationState::Animating
+ };
+ self.window.set_animation_state(animation_state);
for pipeline_id in &pipeline_ids {
self.tick_animations_for_pipeline(*pipeline_id)
}
}
fn tick_animations_for_pipeline(&mut self, pipeline_id: PipelineId) {
- self.schedule_delayed_composite_if_necessary();
let animation_callbacks_running = self.pipeline_details(pipeline_id).animation_callbacks_running;
if animation_callbacks_running {
let msg = ConstellationMsg::TickAnimation(pipeline_id, AnimationTickType::Script);
@@ -1635,14 +1610,6 @@ impl<Window: WindowMethods> IOCompositor<Window> {
_ => compositor_messages.push(msg),
}
}
- if found_recomposite_msg {
- compositor_messages.retain(|msg| {
- match *msg {
- Msg::DelayedCompositionTimeout(_) => false,
- _ => true,
- }
- })
- }
for msg in compositor_messages {
if !self.handle_browser_message(msg) {
break
@@ -1664,8 +1631,7 @@ impl<Window: WindowMethods> IOCompositor<Window> {
}
match self.composition_request {
- CompositionRequest::NoCompositingNecessary |
- CompositionRequest::DelayedComposite(_) => {}
+ CompositionRequest::NoCompositingNecessary => {}
CompositionRequest::CompositeNow(_) => {
self.composite()
}