1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * 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/. */
- #ifndef _include_mozilla_gfx_ipc_CompositorSession_h_
- #define _include_mozilla_gfx_ipc_CompositorSession_h_
- #include "base/basictypes.h"
- #include "mozilla/layers/LayersTypes.h"
- #include "mozilla/layers/CompositorTypes.h"
- #include "nsISupportsImpl.h"
- class nsIWidget;
- namespace mozilla {
- namespace widget {
- class CompositorWidget;
- class CompositorWidgetDelegate;
- } // namespace widget
- namespace gfx {
- class GPUProcessHost;
- class GPUProcessManager;
- } // namespace gfx
- namespace layers {
- class GeckoContentController;
- class IAPZCTreeManager;
- class CompositorBridgeParent;
- class CompositorBridgeChild;
- class ClientLayerManager;
- // A CompositorSession provides access to a compositor without exposing whether
- // or not it's in-process or out-of-process.
- class CompositorSession
- {
- friend class gfx::GPUProcessManager;
- protected:
- typedef gfx::GPUProcessHost GPUProcessHost;
- typedef widget::CompositorWidget CompositorWidget;
- typedef widget::CompositorWidgetDelegate CompositorWidgetDelegate;
- public:
- NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CompositorSession)
- virtual bool Reset(const nsTArray<LayersBackend>& aBackendHints,
- TextureFactoryIdentifier* aOutIdentifier) = 0;
- virtual void Shutdown() = 0;
- // This returns a CompositorBridgeParent if the compositor resides in the same process.
- virtual CompositorBridgeParent* GetInProcessBridge() const = 0;
- // Set the GeckoContentController for the root of the layer tree.
- virtual void SetContentController(GeckoContentController* aController) = 0;
- // Return the Async Pan/Zoom Tree Manager for this compositor.
- virtual RefPtr<IAPZCTreeManager> GetAPZCTreeManager() const = 0;
- // Return the child end of the compositor IPC bridge.
- CompositorBridgeChild* GetCompositorBridgeChild();
- // Return the proxy for accessing the compositor's widget.
- CompositorWidgetDelegate* GetCompositorWidgetDelegate() {
- return mCompositorWidgetDelegate;
- }
- // Return the id of the root layer tree.
- uint64_t RootLayerTreeId() const {
- return mRootLayerTreeId;
- }
- protected:
- CompositorSession(CompositorWidgetDelegate* aDelegate,
- CompositorBridgeChild* aChild,
- const uint64_t& aRootLayerTreeId);
- virtual ~CompositorSession();
- protected:
- CompositorWidgetDelegate* mCompositorWidgetDelegate;
- RefPtr<CompositorBridgeChild> mCompositorBridgeChild;
- uint64_t mRootLayerTreeId;
- private:
- DISALLOW_COPY_AND_ASSIGN(CompositorSession);
- };
- } // namespace layers
- } // namespace mozilla
- #endif // _include_mozilla_gfx_ipc_CompositorSession_h_
|