Bug 1527661 [wpt PR 15356] - Update wpt metadata, a=testonly
[gecko.git] / widget / InProcessCompositorWidget.cpp
blobf591009dbc0de239f29c808ca09a0158edc97108
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #include "InProcessCompositorWidget.h"
7 #include "mozilla/VsyncDispatcher.h"
8 #include "nsBaseWidget.h"
10 #if defined(MOZ_WIDGET_ANDROID) && !defined(MOZ_WIDGET_SUPPORTS_OOP_COMPOSITING)
11 # include "mozilla/widget/AndroidCompositorWidget.h"
12 #endif
14 namespace mozilla {
15 namespace widget {
17 // Platforms with no OOP compositor process support use
18 // InProcessCompositorWidget by default.
19 #if !defined(MOZ_WIDGET_SUPPORTS_OOP_COMPOSITING)
20 /* static */
21 RefPtr<CompositorWidget> CompositorWidget::CreateLocal(
22 const CompositorWidgetInitData& aInitData,
23 const layers::CompositorOptions& aOptions, nsIWidget* aWidget) {
24 MOZ_ASSERT(aWidget);
25 # ifdef MOZ_WIDGET_ANDROID
26 return new AndroidCompositorWidget(aOptions,
27 static_cast<nsBaseWidget*>(aWidget));
28 # else
29 return new InProcessCompositorWidget(aOptions,
30 static_cast<nsBaseWidget*>(aWidget));
31 # endif
33 #endif
35 InProcessCompositorWidget::InProcessCompositorWidget(
36 const layers::CompositorOptions& aOptions, nsBaseWidget* aWidget)
37 : CompositorWidget(aOptions), mWidget(aWidget) {}
39 bool InProcessCompositorWidget::PreRender(WidgetRenderingContext* aContext) {
40 return mWidget->PreRender(aContext);
43 void InProcessCompositorWidget::PostRender(WidgetRenderingContext* aContext) {
44 mWidget->PostRender(aContext);
47 void InProcessCompositorWidget::DrawWindowUnderlay(
48 WidgetRenderingContext* aContext, LayoutDeviceIntRect aRect) {
49 mWidget->DrawWindowUnderlay(aContext, aRect);
52 void InProcessCompositorWidget::DrawWindowOverlay(
53 WidgetRenderingContext* aContext, LayoutDeviceIntRect aRect) {
54 mWidget->DrawWindowOverlay(aContext, aRect);
57 already_AddRefed<gfx::DrawTarget>
58 InProcessCompositorWidget::StartRemoteDrawing() {
59 return mWidget->StartRemoteDrawing();
62 already_AddRefed<gfx::DrawTarget>
63 InProcessCompositorWidget::StartRemoteDrawingInRegion(
64 LayoutDeviceIntRegion& aInvalidRegion, layers::BufferMode* aBufferMode) {
65 return mWidget->StartRemoteDrawingInRegion(aInvalidRegion, aBufferMode);
68 void InProcessCompositorWidget::EndRemoteDrawing() {
69 mWidget->EndRemoteDrawing();
72 void InProcessCompositorWidget::EndRemoteDrawingInRegion(
73 gfx::DrawTarget* aDrawTarget, LayoutDeviceIntRegion& aInvalidRegion) {
74 mWidget->EndRemoteDrawingInRegion(aDrawTarget, aInvalidRegion);
77 void InProcessCompositorWidget::CleanupRemoteDrawing() {
78 mWidget->CleanupRemoteDrawing();
81 void InProcessCompositorWidget::CleanupWindowEffects() {
82 mWidget->CleanupWindowEffects();
85 bool InProcessCompositorWidget::InitCompositor(
86 layers::Compositor* aCompositor) {
87 return mWidget->InitCompositor(aCompositor);
90 LayoutDeviceIntSize InProcessCompositorWidget::GetClientSize() {
91 return mWidget->GetClientSize();
94 uint32_t InProcessCompositorWidget::GetGLFrameBufferFormat() {
95 return mWidget->GetGLFrameBufferFormat();
98 uintptr_t InProcessCompositorWidget::GetWidgetKey() {
99 return reinterpret_cast<uintptr_t>(mWidget);
102 nsIWidget* InProcessCompositorWidget::RealWidget() { return mWidget; }
104 void InProcessCompositorWidget::ObserveVsync(VsyncObserver* aObserver) {
105 if (RefPtr<CompositorVsyncDispatcher> cvd =
106 mWidget->GetCompositorVsyncDispatcher()) {
107 cvd->SetCompositorVsyncObserver(aObserver);
111 } // namespace widget
112 } // namespace mozilla