From 48971d875b387922cef1ac4398d93d7f98dbbdf9 Mon Sep 17 00:00:00 2001 From: Jean-Yves Avenard Date: Fri, 8 May 2020 20:20:25 +0000 Subject: [PATCH] Bug 1634253 - P5. Make threading model clearer. r=kats CompositorBridgeParent::ScheduleTask was always called from the compositor thread ; so make it explicit that we are dispatching the task to the compositor thread. We inline the method instead. Differential Revision: https://phabricator.services.mozilla.com/D73824 --- gfx/layers/ipc/CompositorBridgeParent.cpp | 16 ++++++---------- gfx/layers/ipc/CompositorBridgeParent.h | 1 - 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/gfx/layers/ipc/CompositorBridgeParent.cpp b/gfx/layers/ipc/CompositorBridgeParent.cpp index 443fddf866c9..f959a25c8ea0 100644 --- a/gfx/layers/ipc/CompositorBridgeParent.cpp +++ b/gfx/layers/ipc/CompositorBridgeParent.cpp @@ -833,15 +833,6 @@ bool CompositorBridgeParent::ScheduleResumeOnCompositorThread(int x, int y, return !mPaused; } -void CompositorBridgeParent::ScheduleTask( - already_AddRefed task, int time) { - if (time == 0) { - MessageLoop::current()->PostTask(std::move(task)); - } else { - MessageLoop::current()->PostDelayedTask(std::move(task), time); - } -} - void CompositorBridgeParent::UpdatePaintTime(LayerTransactionParent* aLayerTree, const TimeDuration& aPaintTime) { // We get a lot of paint timings for things with empty transactions. @@ -1234,7 +1225,12 @@ void CompositorBridgeParent::ScheduleRotationOnCompositorThread( "layers::CompositorBridgeParent::ForceComposition", this, &CompositorBridgeParent::ForceComposition); mForceCompositionTask = task; - ScheduleTask(task.forget(), StaticPrefs::layers_orientation_sync_timeout()); + if (StaticPrefs::layers_orientation_sync_timeout() == 0) { + CompositorThreadHolder::Loop()->PostTask(task.forget()); + } else { + CompositorThreadHolder::Loop()->PostDelayedTask( + task.forget(), StaticPrefs::layers_orientation_sync_timeout()); + } } } diff --git a/gfx/layers/ipc/CompositorBridgeParent.h b/gfx/layers/ipc/CompositorBridgeParent.h index 44adbfa7150b..adf3c25bb70f 100644 --- a/gfx/layers/ipc/CompositorBridgeParent.h +++ b/gfx/layers/ipc/CompositorBridgeParent.h @@ -750,7 +750,6 @@ class CompositorBridgeParent final : public CompositorBridgeParentBase, const LayersId& aId) override; bool DeallocPLayerTransactionParent( PLayerTransactionParent* aLayers) override; - virtual void ScheduleTask(already_AddRefed, int); void SetEGLSurfaceRect(int x, int y, int width, int height);