summaryrefslogtreecommitdiffstats
path: root/gfx/layers/ipc/PCanvas.ipdl
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/layers/ipc/PCanvas.ipdl')
-rw-r--r--gfx/layers/ipc/PCanvas.ipdl52
1 files changed, 52 insertions, 0 deletions
diff --git a/gfx/layers/ipc/PCanvas.ipdl b/gfx/layers/ipc/PCanvas.ipdl
new file mode 100644
index 0000000000..6f068ac00c
--- /dev/null
+++ b/gfx/layers/ipc/PCanvas.ipdl
@@ -0,0 +1,52 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ * vim: sw=2 ts=8 et : */
+/* 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/. */
+
+include "mozilla/layers/LayersMessageUtils.h";
+include "mozilla/layers/CanvasTranslator.h";
+
+[MoveOnly] using mozilla::CrossProcessSemaphoreHandle from "mozilla/ipc/CrossProcessSemaphore.h";
+using mozilla::layers::TextureType from "mozilla/layers/LayersTypes.h";
+[MoveOnly] using mozilla::ipc::SharedMemoryBasic::Handle from "mozilla/ipc/SharedMemoryBasic.h";
+
+namespace mozilla {
+namespace layers {
+
+/**
+ * PCanvas is the IPDL for recorded Canvas drawing.
+ */
+[NeedsOtherPid, ParentImpl="CanvasTranslator"]
+async protocol PCanvas {
+parent:
+ /**
+ * Initialize a CanvasTranslator for a particular TextureType, which
+ * translates events from a CanvasEventRingBuffer. aReadHandle is the shared
+ * memory handle for the ring buffer. aReaderSem and aWriterSem are handles
+ * for the semaphores to handle waiting on either side.
+ */
+ async InitTranslator(TextureType aTextureType, Handle aReadHandle,
+ CrossProcessSemaphoreHandle aReaderSem,
+ CrossProcessSemaphoreHandle aWriterSem);
+
+ /**
+ * Used to tell the CanvasTranslator to start translating again after it has
+ * stopped due to a timeout waiting for events.
+ */
+ async ResumeTranslation();
+
+ child:
+ /**
+ * Notify that the canvas device used by the translator has changed.
+ */
+ async NotifyDeviceChanged();
+
+ /**
+ * Deactivate remote canvas, which will cause fall back to software.
+ */
+ async Deactivate();
+};
+
+} // layers
+} // mozilla