Bug 1769547 - Do not MOZ_CRASH() on missing process r=nika
[gecko.git] / widget / InProcessCompositorWidget.h
blobeb44668de9d4d55c04719d8306115907cadf941b
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 #ifndef mozilla_widget_InProcessCompositorWidget_h__
6 #define mozilla_widget_InProcessCompositorWidget_h__
8 #include "CompositorWidget.h"
10 namespace mozilla {
11 namespace widget {
13 // This version of CompositorWidget implements a wrapper around
14 // nsBaseWidget.
15 class InProcessCompositorWidget : public CompositorWidget {
16 public:
17 explicit InProcessCompositorWidget(const layers::CompositorOptions& aOptions,
18 nsBaseWidget* aWidget);
20 virtual bool PreRender(WidgetRenderingContext* aManager) override;
21 virtual void PostRender(WidgetRenderingContext* aManager) override;
22 virtual RefPtr<layers::NativeLayerRoot> GetNativeLayerRoot() override;
23 virtual already_AddRefed<gfx::DrawTarget> StartRemoteDrawing() override;
24 virtual already_AddRefed<gfx::DrawTarget> StartRemoteDrawingInRegion(
25 const LayoutDeviceIntRegion& aInvalidRegion,
26 layers::BufferMode* aBufferMode) override;
27 virtual void EndRemoteDrawing() override;
28 virtual void EndRemoteDrawingInRegion(
29 gfx::DrawTarget* aDrawTarget,
30 const LayoutDeviceIntRegion& aInvalidRegion) override;
31 virtual void CleanupRemoteDrawing() override;
32 virtual void CleanupWindowEffects() override;
33 virtual bool InitCompositor(layers::Compositor* aCompositor) override;
34 virtual LayoutDeviceIntSize GetClientSize() override;
35 virtual uint32_t GetGLFrameBufferFormat() override;
36 virtual void ObserveVsync(VsyncObserver* aObserver) override;
37 virtual uintptr_t GetWidgetKey() override;
39 // If you can override this method, inherit from CompositorWidget instead.
40 nsIWidget* RealWidget() override;
42 protected:
43 nsBaseWidget* mWidget;
44 // Bug 1679368: Maintain an additional widget pointer, constant, and
45 // function for sanity checking while we chase a crash.
46 static const char* CANARY_VALUE;
47 const char* mCanary;
48 nsBaseWidget* mWidgetSanity;
49 void CheckWidgetSanity();
52 } // namespace widget
53 } // namespace mozilla
55 #endif