/* -*- 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 LayersSurfaces; include protocol PGrallocBuffer; include protocol PLayers; using mozilla::layers::LayersBackend; using mozilla::null_t; namespace mozilla { namespace layers { /** * The PCompositor protocol is used to manage communication between * the main thread and the compositor thread context. It's primary * purpose is to manage the PLayers sub protocol. */ // This should really be 'sync', but we're using 'rpc' as a workaround // for Bug 716631. rpc protocol PCompositor { manages PGrallocBuffer; // A Compositor manages a single Layer Manager (PLayers) manages PLayers; parent: // Release disposable memory. This will clear the tile store (stale tiles). async MemoryPressure(); // The child is about to be destroyed, so perform any necessary cleanup. sync WillStop(); // Clean up in preparation for own destruction. sync Stop(); // Pause/resume the compositor. These are intended to be used on mobile, when // the compositor needs to pause/resume in lockstep with the application. sync Pause(); sync Resume(); // Make a snapshot of the content that would have been drawn to our // render target at the time this message is received. If the size // or format of |inSnapshot| doesn't match our render target, // results are undefined. // // NB: this message will result in animations, transforms, effects, // and so forth being interpolated. That's what we want to happen. sync MakeSnapshot(SurfaceDescriptor inSnapshot) returns (SurfaceDescriptor outSnapshot); sync PLayers(LayersBackend backendHint, uint64_t id) returns (LayersBackend backend, int32_t maxTextureSize); // FIXME/bug 783451 sync PGrallocBuffer(gfxIntSize size, uint32_t format, uint32_t usage) returns (MaybeMagicGrallocBufferHandle handle); }; } // layers } // mozilla