1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef widget_headless_HeadlessCompositorWidget_h
7 #define widget_headless_HeadlessCompositorWidget_h
9 #include "mozilla/widget/CompositorWidget.h"
11 #include "HeadlessWidget.h"
16 class HeadlessCompositorWidgetInitData
;
18 class HeadlessCompositorWidget final
: public CompositorWidget
,
19 public CompositorWidgetDelegate
{
21 HeadlessCompositorWidget(const HeadlessCompositorWidgetInitData
& aInitData
,
22 const layers::CompositorOptions
& aOptions
,
23 HeadlessWidget
* aWindow
);
25 void NotifyClientSizeChanged(const LayoutDeviceIntSize
& aClientSize
);
27 // CompositorWidget Overrides
29 uintptr_t GetWidgetKey() override
;
31 LayoutDeviceIntSize
GetClientSize() override
;
33 nsIWidget
* RealWidget() override
;
34 CompositorWidgetDelegate
* AsDelegate() override
{ return this; }
36 void ObserveVsync(VsyncObserver
* aObserver
) override
;
38 // CompositorWidgetDelegate Overrides
40 HeadlessCompositorWidget
* AsHeadlessCompositorWidget() override
{
45 HeadlessWidget
* mWidget
;
47 // See GtkCompositorWidget for the justification for this mutex.
48 DataMutex
<LayoutDeviceIntSize
> mClientSize
;
52 } // namespace mozilla
54 #endif // widget_headless_HeadlessCompositor_h