commit f37ec715c24cbb7e207768ae7ef1b0e45ec07d6c
parent 3a459d51b89efc2e9122f912aafb3500153f255c
Author: Cristina Horotan <chorotan@mozilla.com>
Date: Mon, 24 Nov 2025 13:52:57 +0200
Revert "Bug 2001152 - Make PCompositorBridge::Initialize async. r=aosmond,ipc-reviewers,mccr8" for causing build bustage at RefPtr.h
This reverts commit c19fcf010e8d31dbdc4990f8fb15efc675d2d69c.
Revert "Bug 2001152 - Initialize UiCompositorController along with rest of CompositorSession. r=aosmond"
This reverts commit cbe021867d387eb143f9a57eff6bdd88a3e8774e.
Diffstat:
17 files changed, 114 insertions(+), 106 deletions(-)
diff --git a/gfx/ipc/CompositorSession.cpp b/gfx/ipc/CompositorSession.cpp
@@ -4,8 +4,12 @@
* 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/. */
#include "CompositorSession.h"
+#include "base/process_util.h"
+#include "GPUChild.h"
+#include "mozilla/gfx/Logging.h"
+#include "mozilla/gfx/GPUProcessHost.h"
#include "mozilla/layers/CompositorBridgeChild.h"
-#include "mozilla/layers/UiCompositorControllerChild.h"
+#include "mozilla/layers/CompositorBridgeParent.h"
namespace mozilla {
namespace layers {
@@ -15,12 +19,10 @@ using namespace gfx;
CompositorSession::CompositorSession(nsIWidget* aWidget,
CompositorWidgetDelegate* aDelegate,
CompositorBridgeChild* aChild,
- UiCompositorControllerChild* aUiController,
const LayersId& aRootLayerTreeId)
: mWidget(aWidget),
mCompositorWidgetDelegate(aDelegate),
mCompositorBridgeChild(aChild),
- mUiCompositorControllerChild(aUiController),
mRootLayerTreeId(aRootLayerTreeId) {}
CompositorSession::~CompositorSession() = default;
@@ -29,12 +31,5 @@ CompositorBridgeChild* CompositorSession::GetCompositorBridgeChild() {
return mCompositorBridgeChild;
}
-#if defined(MOZ_WIDGET_ANDROID)
-RefPtr<UiCompositorControllerChild>
-CompositorSession::GetUiCompositorControllerChild() const {
- return mUiCompositorControllerChild;
-}
-#endif
-
} // namespace layers
} // namespace mozilla
diff --git a/gfx/ipc/CompositorSession.h b/gfx/ipc/CompositorSession.h
@@ -10,6 +10,9 @@
#include "mozilla/layers/LayersTypes.h"
#include "mozilla/layers/CompositorTypes.h"
#include "nsISupportsImpl.h"
+#if defined(MOZ_WIDGET_ANDROID)
+# include "mozilla/layers/UiCompositorControllerChild.h"
+#endif // defined(MOZ_WIDGET_ANDROID)
class nsIWidget;
@@ -29,7 +32,6 @@ class IAPZCTreeManager;
class CompositorBridgeParent;
class CompositorBridgeChild;
class ClientLayerManager;
-class UiCompositorControllerChild;
// A CompositorSession provides access to a compositor without exposing whether
// or not it's in-process or out-of-process.
@@ -68,12 +70,20 @@ class CompositorSession {
LayersId RootLayerTreeId() const { return mRootLayerTreeId; }
#if defined(MOZ_WIDGET_ANDROID)
- RefPtr<UiCompositorControllerChild> GetUiCompositorControllerChild() const;
+ // Set the UiCompositorControllerChild after Session creation so the Session
+ // constructor doesn't get mucked up for other platforms.
+ void SetUiCompositorControllerChild(
+ RefPtr<UiCompositorControllerChild>&& aUiController) {
+ mUiCompositorControllerChild = std::move(aUiController);
+ }
+
+ RefPtr<UiCompositorControllerChild> GetUiCompositorControllerChild() {
+ return mUiCompositorControllerChild;
+ }
#endif // defined(MOZ_WIDGET_ANDROID)
protected:
CompositorSession(nsIWidget* aWidget, CompositorWidgetDelegate* aDelegate,
CompositorBridgeChild* aChild,
- UiCompositorControllerChild* aUiController,
const LayersId& aRootLayerTreeId);
virtual ~CompositorSession();
@@ -81,9 +91,10 @@ class CompositorSession {
nsIWidget* mWidget;
CompositorWidgetDelegate* mCompositorWidgetDelegate;
RefPtr<CompositorBridgeChild> mCompositorBridgeChild;
- RefPtr<UiCompositorControllerChild> mUiCompositorControllerChild;
LayersId mRootLayerTreeId;
-
+#if defined(MOZ_WIDGET_ANDROID)
+ RefPtr<UiCompositorControllerChild> mUiCompositorControllerChild;
+#endif // defined(MOZ_WIDGET_ANDROID)
private:
DISALLOW_COPY_AND_ASSIGN(CompositorSession);
};
diff --git a/gfx/ipc/GPUParent.cpp b/gfx/ipc/GPUParent.cpp
@@ -46,6 +46,7 @@
#include "mozilla/ipc/CrashReporterClient.h"
#include "mozilla/ipc/ProcessChild.h"
#include "mozilla/ipc/ProcessUtils.h"
+#include "mozilla/layers/APZInputBridgeParent.h"
#include "mozilla/layers/APZPublicUtils.h" // for apz::InitializeGlobalState
#include "mozilla/layers/APZThreadUtils.h"
#include "mozilla/layers/CompositorBridgeParent.h"
@@ -54,6 +55,7 @@
#include "mozilla/layers/ImageBridgeParent.h"
#include "mozilla/layers/LayerTreeOwnerTracker.h"
#include "mozilla/layers/RemoteTextureMap.h"
+#include "mozilla/layers/UiCompositorControllerParent.h"
#include "mozilla/layers/VideoBridgeParent.h"
#include "mozilla/webrender/RenderThread.h"
#include "mozilla/webrender/WebRenderAPI.h"
@@ -470,6 +472,20 @@ mozilla::ipc::IPCResult GPUParent::RecvInitVR(
return IPC_OK();
}
+mozilla::ipc::IPCResult GPUParent::RecvInitUiCompositorController(
+ const LayersId& aRootLayerTreeId,
+ Endpoint<PUiCompositorControllerParent>&& aEndpoint) {
+ UiCompositorControllerParent::Start(aRootLayerTreeId, std::move(aEndpoint));
+ return IPC_OK();
+}
+
+mozilla::ipc::IPCResult GPUParent::RecvInitAPZInputBridge(
+ const LayersId& aRootLayerTreeId,
+ Endpoint<PAPZInputBridgeParent>&& aEndpoint) {
+ APZInputBridgeParent::Create(aRootLayerTreeId, std::move(aEndpoint));
+ return IPC_OK();
+}
+
mozilla::ipc::IPCResult GPUParent::RecvInitProfiler(
Endpoint<PProfilerChild>&& aEndpoint) {
mProfilerController = ChildProfilerController::Create(std::move(aEndpoint));
diff --git a/gfx/ipc/GPUParent.h b/gfx/ipc/GPUParent.h
@@ -66,6 +66,12 @@ class GPUParent final : public PGPUParent {
mozilla::ipc::IPCResult RecvInitVRManager(
Endpoint<PVRManagerParent>&& aEndpoint);
mozilla::ipc::IPCResult RecvInitVR(Endpoint<PVRGPUChild>&& aVRGPUChild);
+ mozilla::ipc::IPCResult RecvInitUiCompositorController(
+ const LayersId& aRootLayerTreeId,
+ Endpoint<PUiCompositorControllerParent>&& aEndpoint);
+ mozilla::ipc::IPCResult RecvInitAPZInputBridge(
+ const LayersId& aRootLayerTreeId,
+ Endpoint<PAPZInputBridgeParent>&& aEndpoint);
mozilla::ipc::IPCResult RecvInitProfiler(
Endpoint<PProfilerChild>&& aEndpoint);
mozilla::ipc::IPCResult RecvUpdateVar(const nsTArray<GfxVarUpdate>& var);
diff --git a/gfx/ipc/GPUProcessManager.cpp b/gfx/ipc/GPUProcessManager.cpp
@@ -550,6 +550,39 @@ bool GPUProcessManager::EnsureVRManager() {
return true;
}
+#if defined(MOZ_WIDGET_ANDROID)
+RefPtr<UiCompositorControllerChild>
+GPUProcessManager::CreateUiCompositorController(nsIWidget* aWidget,
+ const LayersId aId) {
+ MOZ_DIAGNOSTIC_ASSERT(IsGPUReady());
+
+ if (!mGPUChild) {
+ return UiCompositorControllerChild::CreateForSameProcess(aId, aWidget);
+ }
+
+ ipc::Endpoint<PUiCompositorControllerParent> parentPipe;
+ ipc::Endpoint<PUiCompositorControllerChild> childPipe;
+ nsresult rv = PUiCompositorController::CreateEndpoints(
+ mGPUChild->OtherEndpointProcInfo(), ipc::EndpointProcInfo::Current(),
+ &parentPipe, &childPipe);
+ if (NS_FAILED(rv)) {
+ DisableGPUProcess("Failed to create PUiCompositorController endpoints");
+ return nullptr;
+ }
+
+ mGPUChild->SendInitUiCompositorController(aId, std::move(parentPipe));
+ RefPtr<UiCompositorControllerChild> result =
+ UiCompositorControllerChild::CreateForGPUProcess(
+ mProcessToken, std::move(childPipe), aWidget);
+
+ if (result) {
+ result->SetCompositorSurfaceManager(
+ mProcess->GetCompositorSurfaceManager());
+ }
+ return result;
+}
+#endif // defined(MOZ_WIDGET_ANDROID)
+
void GPUProcessManager::OnProcessLaunchComplete(GPUProcessHost* aHost) {
MOZ_ASSERT(mProcess && mProcess == aHost);
@@ -1252,6 +1285,16 @@ already_AddRefed<CompositorSession> GPUProcessManager::CreateTopLevelCompositor(
aInnerWindowId);
}
+#if defined(MOZ_WIDGET_ANDROID)
+ if (session) {
+ // Nothing to do if controller gets a nullptr
+ auto controller =
+ CreateUiCompositorController(aWidget, session->RootLayerTreeId());
+ MOZ_ASSERT(controller);
+ session->SetUiCompositorControllerChild(std::move(controller));
+ }
+#endif // defined(MOZ_WIDGET_ANDROID)
+
*aRetryOut = false;
return session.forget();
}
@@ -1303,12 +1346,12 @@ RefPtr<CompositorSession> GPUProcessManager::CreateRemoteSession(
ipc::Endpoint<PAPZInputBridgeParent> parentPipe;
ipc::Endpoint<PAPZInputBridgeChild> childPipe;
nsresult rv = PAPZInputBridge::CreateEndpoints(
- child->OtherEndpointProcInfo(), ipc::EndpointProcInfo::Current(),
+ mGPUChild->OtherEndpointProcInfo(), ipc::EndpointProcInfo::Current(),
&parentPipe, &childPipe);
if (NS_FAILED(rv)) {
return nullptr;
}
- child->SendInitAPZInputBridge(std::move(parentPipe));
+ mGPUChild->SendInitAPZInputBridge(aRootLayerTreeId, std::move(parentPipe));
RefPtr<APZInputBridgeChild> inputBridge =
APZInputBridgeChild::Create(mProcessToken, std::move(childPipe));
@@ -1319,30 +1362,7 @@ RefPtr<CompositorSession> GPUProcessManager::CreateRemoteSession(
apz->SetInputBridge(inputBridge);
}
- RefPtr<UiCompositorControllerChild> uiController = nullptr;
-# if defined(MOZ_WIDGET_ANDROID)
- {
- ipc::Endpoint<PUiCompositorControllerParent> parentPipe;
- ipc::Endpoint<PUiCompositorControllerChild> childPipe;
- nsresult rv = PUiCompositorController::CreateEndpoints(
- child->OtherEndpointProcInfo(), ipc::EndpointProcInfo::Current(),
- &parentPipe, &childPipe);
- if (NS_FAILED(rv)) {
- return nullptr;
- }
- child->SendInitUiCompositorController(std::move(parentPipe));
- uiController = UiCompositorControllerChild::CreateForGPUProcess(
- mProcessToken, std::move(childPipe), aWidget);
- MOZ_ASSERT(uiController);
- if (!uiController) {
- return nullptr;
- }
- uiController->SetCompositorSurfaceManager(
- mProcess->GetCompositorSurfaceManager());
- }
-# endif
-
- return new RemoteCompositorSession(aWidget, child, widget, apz, uiController,
+ return new RemoteCompositorSession(aWidget, child, widget, apz,
aRootLayerTreeId);
#else
gfxCriticalNote << "Platform does not support out-of-process compositing";
diff --git a/gfx/ipc/GPUProcessManager.h b/gfx/ipc/GPUProcessManager.h
@@ -338,6 +338,11 @@ class GPUProcessManager final : public GPUProcessHost::Listener {
void SetProcessIsForeground();
#endif
+#if defined(MOZ_WIDGET_ANDROID)
+ RefPtr<UiCompositorControllerChild> CreateUiCompositorController(
+ nsIWidget* aWidget, const LayersId aId);
+#endif // defined(MOZ_WIDGET_ANDROID)
+
RefPtr<CompositorSession> CreateRemoteSession(
nsIWidget* aWidget, WebRenderLayerManager* aLayerManager,
const LayersId& aRootLayerTreeId, CSSToLayoutDeviceScale aScale,
diff --git a/gfx/ipc/InProcessCompositorSession.cpp b/gfx/ipc/InProcessCompositorSession.cpp
@@ -21,10 +21,9 @@ namespace layers {
InProcessCompositorSession::InProcessCompositorSession(
nsIWidget* aWidget, widget::CompositorWidget* aCompositorWidget,
- CompositorBridgeChild* aChild, CompositorBridgeParent* aParent,
- UiCompositorControllerChild* aUiController)
+ CompositorBridgeChild* aChild, CompositorBridgeParent* aParent)
: CompositorSession(aWidget, aCompositorWidget->AsDelegate(), aChild,
- aUiController, aParent->RootLayerTreeId()),
+ aParent->RootLayerTreeId()),
mCompositorBridgeParent(aParent),
mCompositorWidget(aCompositorWidget) {
gfx::GPUProcessManager::Get()->RegisterInProcessSession(this);
@@ -58,18 +57,7 @@ RefPtr<InProcessCompositorSession> InProcessCompositorSession::Create(
return nullptr;
}
- RefPtr<UiCompositorControllerChild> uiController = nullptr;
-#if defined(MOZ_WIDGET_ANDROID)
- uiController = UiCompositorControllerChild::CreateForSameProcess(
- aRootLayerTreeId, aWidget);
- MOZ_ASSERT(uiController);
- if (!uiController) {
- return nullptr;
- }
-#endif
-
- return new InProcessCompositorSession(aWidget, widget, child, parent,
- uiController);
+ return new InProcessCompositorSession(aWidget, widget, child, parent);
}
void InProcessCompositorSession::NotifySessionLost() {
diff --git a/gfx/ipc/InProcessCompositorSession.h b/gfx/ipc/InProcessCompositorSession.h
@@ -41,8 +41,7 @@ class InProcessCompositorSession final : public CompositorSession {
InProcessCompositorSession(nsIWidget* aWidget,
widget::CompositorWidget* aCompositorWidget,
CompositorBridgeChild* aChild,
- CompositorBridgeParent* aParent,
- UiCompositorControllerChild* aUiController);
+ CompositorBridgeParent* aParent);
private:
RefPtr<CompositorBridgeParent> mCompositorBridgeParent;
diff --git a/gfx/ipc/PGPU.ipdl b/gfx/ipc/PGPU.ipdl
@@ -8,6 +8,7 @@ include GraphicsMessages;
include MemoryReportTypes;
include HangTypes;
include PrefsTypes;
+include protocol PAPZInputBridge;
include protocol PCompositorManager;
include protocol PImageBridge;
include protocol PProfiler;
@@ -15,6 +16,7 @@ include protocol PVRGPU;
include protocol PVRManager;
include protocol PVideoBridge;
include protocol PVsyncBridge;
+include protocol PUiCompositorController;
include protocol PRemoteMediaManager;
#if defined(MOZ_SANDBOX) && defined(MOZ_DEBUG) && defined(ENABLE_TESTS)
@@ -71,6 +73,9 @@ parent:
async InitImageBridge(Endpoint<PImageBridgeParent> endpoint);
async InitVideoBridge(Endpoint<PVideoBridgeParent> endpoint, VideoBridgeSource aSource);
async InitVRManager(Endpoint<PVRManagerParent> endpoint);
+ async InitUiCompositorController(LayersId rootLayerTreeId, Endpoint<PUiCompositorControllerParent> endpoint);
+ async InitAPZInputBridge(LayersId layersId,
+ Endpoint<PAPZInputBridgeParent> endpoint);
async InitProfiler(Endpoint<PProfilerChild> endpoint);
// Forward GPU process its endpoints to the VR process.
async InitVR(Endpoint<PVRGPUChild> endpoint);
diff --git a/gfx/ipc/RemoteCompositorSession.cpp b/gfx/ipc/RemoteCompositorSession.cpp
@@ -26,10 +26,8 @@ using namespace widget;
RemoteCompositorSession::RemoteCompositorSession(
nsIWidget* aWidget, CompositorBridgeChild* aChild,
CompositorWidgetDelegate* aWidgetDelegate, APZCTreeManagerChild* aAPZ,
- UiCompositorControllerChild* aUiController,
const LayersId& aRootLayerTreeId)
- : CompositorSession(aWidget, aWidgetDelegate, aChild, aUiController,
- aRootLayerTreeId),
+ : CompositorSession(aWidget, aWidgetDelegate, aChild, aRootLayerTreeId),
mAPZ(aAPZ) {
MOZ_ASSERT(!gfxPlatform::IsHeadless());
GPUProcessManager::Get()->RegisterRemoteProcessSession(this);
diff --git a/gfx/ipc/RemoteCompositorSession.h b/gfx/ipc/RemoteCompositorSession.h
@@ -22,7 +22,6 @@ class RemoteCompositorSession final : public CompositorSession {
RemoteCompositorSession(nsIWidget* aWidget, CompositorBridgeChild* aChild,
CompositorWidgetDelegate* aWidgetDelegate,
APZCTreeManagerChild* aAPZ,
- UiCompositorControllerChild* aUiController,
const LayersId& aRootLayerTreeId);
virtual ~RemoteCompositorSession();
diff --git a/gfx/layers/ipc/CompositorBridgeParent.cpp b/gfx/layers/ipc/CompositorBridgeParent.cpp
@@ -32,7 +32,6 @@
#include "mozilla/gfx/GPUParent.h"
#include "mozilla/gfx/GPUProcessManager.h"
#include "mozilla/layers/APZCTreeManagerParent.h" // for APZCTreeManagerParent
-#include "mozilla/layers/APZInputBridgeParent.h" // for APZInputBridgeParent
#include "mozilla/layers/APZSampler.h" // for APZSampler
#include "mozilla/layers/APZThreadUtils.h" // for APZThreadUtils
#include "mozilla/layers/APZUpdater.h" // for APZUpdater
@@ -384,20 +383,6 @@ void CompositorBridgeParent::StopAndClearResources() {
mAnimationStorage = nullptr;
}
-mozilla::ipc::IPCResult CompositorBridgeParent::RecvInitAPZInputBridge(
- Endpoint<PAPZInputBridgeParent>&& aEndpoint) {
- NS_DispatchToMainThread(NewRunnableFunction(
- "APZInputBridgeParent::Create", &APZInputBridgeParent::Create,
- mRootLayerTreeID, std::move(aEndpoint)));
- return IPC_OK();
-}
-
-mozilla::ipc::IPCResult CompositorBridgeParent::RecvInitUiCompositorController(
- Endpoint<PUiCompositorControllerParent>&& aEndpoint) {
- UiCompositorControllerParent::Start(mRootLayerTreeID, std::move(aEndpoint));
- return IPC_OK();
-}
-
mozilla::ipc::IPCResult CompositorBridgeParent::RecvWillClose() {
StopAndClearResources();
// Once we get the WillClose message, the client side is going to go away
diff --git a/gfx/layers/ipc/CompositorBridgeParent.h b/gfx/layers/ipc/CompositorBridgeParent.h
@@ -188,10 +188,6 @@ class CompositorBridgeParentBase : public PCompositorBridgeParent,
EndRecordingResolver&& aResolve) = 0;
virtual mozilla::ipc::IPCResult RecvInitialize(
const LayersId& rootLayerTreeId) = 0;
- virtual mozilla::ipc::IPCResult RecvInitAPZInputBridge(
- Endpoint<PAPZInputBridgeParent>&& aEndpoint) = 0;
- virtual mozilla::ipc::IPCResult RecvInitUiCompositorController(
- Endpoint<PUiCompositorControllerParent>&& aEndpoint) = 0;
virtual mozilla::ipc::IPCResult RecvWillClose() = 0;
virtual mozilla::ipc::IPCResult RecvPause() = 0;
virtual mozilla::ipc::IPCResult RecvRequestFxrOutput() = 0;
@@ -263,10 +259,6 @@ class CompositorBridgeParent final : public CompositorBridgeParentBase,
#endif
mozilla::ipc::IPCResult RecvInitialize(
const LayersId& aRootLayerTreeId) override;
- mozilla::ipc::IPCResult RecvInitAPZInputBridge(
- Endpoint<PAPZInputBridgeParent>&& aEndpoint) override;
- mozilla::ipc::IPCResult RecvInitUiCompositorController(
- Endpoint<PUiCompositorControllerParent>&& aEndpoint) override;
mozilla::ipc::IPCResult RecvWillClose() override;
mozilla::ipc::IPCResult RecvPause() override;
mozilla::ipc::IPCResult RecvRequestFxrOutput() override;
diff --git a/gfx/layers/ipc/ContentCompositorBridgeParent.h b/gfx/layers/ipc/ContentCompositorBridgeParent.h
@@ -36,14 +36,6 @@ class ContentCompositorBridgeParent final : public CompositorBridgeParentBase {
const LayersId& aRootLayerTreeId) override {
return IPC_FAIL_NO_REASON(this);
}
- mozilla::ipc::IPCResult RecvInitAPZInputBridge(
- Endpoint<PAPZInputBridgeParent>&& aEndpoint) override {
- return IPC_FAIL(this, "Must only be called for top-level compositors");
- }
- mozilla::ipc::IPCResult RecvInitUiCompositorController(
- Endpoint<PUiCompositorControllerParent>&& aEndpoint) override {
- return IPC_FAIL(this, "Must only be called for top-level compositors");
- }
mozilla::ipc::IPCResult RecvWillClose() override { return IPC_OK(); }
mozilla::ipc::IPCResult RecvPause() override { return IPC_OK(); }
mozilla::ipc::IPCResult RecvRequestFxrOutput() override {
diff --git a/gfx/layers/ipc/PCompositorBridge.ipdl b/gfx/layers/ipc/PCompositorBridge.ipdl
@@ -11,12 +11,10 @@ include PlatformWidgetTypes;
include PCompositorBridgeTypes;
include protocol PAPZ;
include protocol PAPZCTreeManager;
-include protocol PAPZInputBridge;
include protocol PBrowser;
include protocol PCompositorManager;
include protocol PCompositorWidget;
include protocol PTexture;
-include protocol PUiCompositorController;
include protocol PWebRenderBridge;
include "mozilla/GfxMessageUtils.h";
include "mozilla/layers/LayersMessageUtils.h";
@@ -128,16 +126,8 @@ parent:
async PCompositorWidget(CompositorWidgetInitData aInitData);
// When out-of-process, this must be called to finish initialization.
- async Initialize(LayersId rootLayerTreeId);
+ sync Initialize(LayersId rootLayerTreeId);
- // Must be called after Initialize(), and only for top-level compositors and
- // when using a GPU process.
- async InitAPZInputBridge(Endpoint<PAPZInputBridgeParent> endpoint);
-
- // Must be called after Initialize(), and only for top-level compositors.
- async InitUiCompositorController(
- Endpoint<PUiCompositorControllerParent> endpoint);
-
// Must be called after Initialize(), and only succeeds if AsyncPanZoomEnabled() is true.
async PAPZ(LayersId layersId);
async PAPZCTreeManager(LayersId layersId);
diff --git a/gfx/layers/ipc/UiCompositorControllerParent.cpp b/gfx/layers/ipc/UiCompositorControllerParent.cpp
@@ -42,10 +42,15 @@ UiCompositorControllerParent::GetFromRootLayerTreeId(
RefPtr<UiCompositorControllerParent> UiCompositorControllerParent::Start(
const LayersId& aRootLayerTreeId,
Endpoint<PUiCompositorControllerParent>&& aEndpoint) {
- MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread());
RefPtr<UiCompositorControllerParent> parent =
new UiCompositorControllerParent(aRootLayerTreeId);
- parent->Open(std::move(aEndpoint));
+
+ RefPtr<Runnable> task =
+ NewRunnableMethod<Endpoint<PUiCompositorControllerParent>&&>(
+ "layers::UiCompositorControllerParent::Open", parent,
+ &UiCompositorControllerParent::Open, std::move(aEndpoint));
+ CompositorThread()->Dispatch(task.forget());
+
return parent;
}
diff --git a/ipc/ipdl/sync-messages.ini b/ipc/ipdl/sync-messages.ini
@@ -206,6 +206,8 @@ description = legacy sync IPC - please add detailed description
description = legacy sync IPC - please add detailed description
[PCanvasManager::GetSnapshot]
description = Retrieving canvas contents is synchronous (see also, PWebGL::GetFrontBufferSnapshot).
+[PCompositorBridge::Initialize]
+description = legacy sync IPC - please add detailed description
[PCompositorBridge::WillClose]
description = legacy sync IPC - please add detailed description
[PCompositorBridge::Pause]