Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 * vim: sw=2 ts=8 et :
3 */
4 /* This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
8 #ifndef MOZILLA_LAYERS_COMPOSITABLETRANSACTIONPARENT_H
9 #define MOZILLA_LAYERS_COMPOSITABLETRANSACTIONPARENT_H
11 #include <vector> // for vector
12 #include "mozilla/Attributes.h" // for MOZ_OVERRIDE
13 #include "mozilla/layers/ISurfaceAllocator.h" // for ISurfaceAllocator
14 #include "mozilla/layers/LayersMessages.h" // for EditReply, etc
16 namespace mozilla {
17 namespace layers {
19 class CompositableHost;
21 typedef std::vector<mozilla::layers::EditReply> EditReplyVector;
23 // Since PCompositble has two potential manager protocols, we can't just call
24 // the Manager() method usually generated when there's one manager protocol,
25 // so both manager protocols implement this and we keep a reference to them
26 // through this interface.
27 class CompositableParentManager : public ISurfaceAllocator
28 {
29 protected:
30 /**
31 * Handle the IPDL messages that affect PCompositable actors.
32 */
33 bool ReceiveCompositableUpdate(const CompositableOperation& aEdit,
34 EditReplyVector& replyv);
35 bool IsOnCompositorSide() const MOZ_OVERRIDE { return true; }
37 /**
38 * Return true if this protocol is asynchronous with respect to the content
39 * thread (ImageBridge for instance).
40 */
41 virtual bool IsAsync() const { return false; }
43 void ReturnTextureDataIfNecessary(CompositableHost* aCompositable,
44 EditReplyVector& replyv,
45 PCompositableParent* aParent);
46 void ClearPrevFenceHandles();
48 protected:
49 std::vector<FenceHandle> mPrevFenceHandles;
50 };
52 } // namespace
53 } // namespace
55 #endif