Bug 1874684 - Part 28: Return DateDuration from DifferenceISODateTime. r=mgaudet
[gecko.git] / gfx / ipc / CanvasManagerChild.h
blobc59ba7c502019e4e543249fbb4daf5b8bdfbad21
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef _include_gfx_ipc_CanvasManagerChild_h__
7 #define _include_gfx_ipc_CanvasManagerChild_h__
9 #include "mozilla/Atomics.h"
10 #include "mozilla/gfx/PCanvasManagerChild.h"
11 #include "mozilla/gfx/Types.h"
12 #include "mozilla/ThreadLocal.h"
14 namespace mozilla {
15 namespace dom {
16 class CanvasRenderingContext2D;
17 class ThreadSafeWorkerRef;
18 class WorkerPrivate;
19 } // namespace dom
21 namespace layers {
22 class CanvasChild;
23 class ActiveResourceTracker;
24 } // namespace layers
26 namespace webgpu {
27 class WebGPUChild;
28 } // namespace webgpu
30 namespace gfx {
31 class DataSourceSurface;
33 class CanvasManagerChild final : public PCanvasManagerChild {
34 public:
35 NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CanvasManagerChild, override);
37 explicit CanvasManagerChild(dom::ThreadSafeWorkerRef* aWorkerRef,
38 uint32_t aId);
39 uint32_t Id() const { return mId; }
40 already_AddRefed<DataSourceSurface> GetSnapshot(
41 uint32_t aManagerId, int32_t aProtocolId,
42 const Maybe<RemoteTextureOwnerId>& aOwnerId, SurfaceFormat aFormat,
43 bool aPremultiply, bool aYFlip);
44 void ActorDestroy(ActorDestroyReason aReason) override;
46 static CanvasManagerChild* Get();
47 static CanvasManagerChild* MaybeGet();
48 static void Shutdown();
49 static bool CreateParent(
50 mozilla::ipc::Endpoint<PCanvasManagerParent>&& aEndpoint);
52 bool IsCanvasActive() { return mActive; }
53 void EndCanvasTransaction();
54 void ClearCachedResources();
55 void DeactivateCanvas();
56 void BlockCanvas();
58 RefPtr<layers::CanvasChild> GetCanvasChild();
60 RefPtr<webgpu::WebGPUChild> GetWebGPUChild();
62 layers::ActiveResourceTracker* GetActiveResourceTracker();
64 private:
65 ~CanvasManagerChild();
66 void DestroyInternal();
67 void Destroy();
69 RefPtr<mozilla::dom::ThreadSafeWorkerRef> mWorkerRef;
70 RefPtr<layers::CanvasChild> mCanvasChild;
71 RefPtr<webgpu::WebGPUChild> mWebGPUChild;
72 UniquePtr<layers::ActiveResourceTracker> mActiveResourceTracker;
73 const uint32_t mId;
74 bool mActive = true;
75 bool mBlocked = false;
77 static MOZ_THREAD_LOCAL(CanvasManagerChild*) sLocalManager;
78 static Atomic<uint32_t> sNextId;
81 } // namespace gfx
82 } // namespace mozilla
84 #endif // _include_gfx_ipc_CanvasManagerChild_h__