DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (b6057e17f856)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
/* -*- 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 protocol PLayerTransaction;

namespace mozilla {
namespace layers {

/**
 * PLayer represents a layer shared across thread contexts.
 */

async protocol PLayer {
    manager PLayerTransaction;

    /**
     * OWNERSHIP MODEL
     *
     * Roughly speaking, the child side "actually owns" a Layer.  This
     * is because the parent side is the "shadow"; when the child
     * releases a Layer, the parent's shadow is no longer meaningful.
     *
     * To implement this model, the concrete PLayerParent keeps a
     * strong ref to its Layer, so the Layer's lifetime is bound to
     * the PLayerParent's.  Then, when the Layer's refcount hits 0 on
     * the child side, we send __delete__() from the child to parent.
     * The parent then releases its Layer, which results in the Layer
     * being deleted "soon" (usually immediately).
     */
parent:
    async __delete__();
};

} // layers
} // mozilla