diff options
Diffstat (limited to 'matchbox2/comp-mgr/README')
-rw-r--r-- | matchbox2/comp-mgr/README | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/matchbox2/comp-mgr/README b/matchbox2/comp-mgr/README new file mode 100644 index 0000000..fb53cf1 --- /dev/null +++ b/matchbox2/comp-mgr/README @@ -0,0 +1,70 @@ + +BRIEF OVERVIEW OF THE COMPOSITING INFRASTRUCTURE +================================================ + +The composite manager framework consists of three primary classes, + + * MBWMCompMgr -- The compositor interface, + + * MBWMCompMgrClient -- Per-client, compositor- specific data, + + * MBWMCompMgrEffect -- A simple client effect. + +The whole framework, and its integration with the WM, can be outlined as +follows: + + + MBWindowManager: + | | + | --> client stack + | | + | --> MBWindowManagerClient + | | +========================================================================== + | | + | --> MBWMCompMgrClient + | | | + | | --> MBWMCompMgrBackendClient + | | + | event-effect mapping + | | + | -->an-event:effect-list pair + | | + | --> MBWMCompMgrEffect + | | + | --> MBWMCompMgrBackendEffect + | + --> MBWMCompMgr + | + --> MBWMCompMgrBackend + + +The framwork seeks to provide a clean separation between the WM and the CM -- +the implementation of the CM is opaque to the WM, which simply deffers to the +CM at appropriate points through its public interface. To this end each of the +MBWindowManagerClient objects managed by the WM holds a pointer to a +MBWMCompMgrClient object, which holds any per-client data that the CM +requires; this data is allocated when the WM calls +mb_wm_comp_mgr_register_client() and deallocated when it +calls mb_wm_comp_mgr_unregister_client(). + +As much as the CM internals are opaque to the WM, also the workings of the WM +are intended to be opaque to the CM; its API is hooked into common operations +that the WM carries out on its clients, such as map and unmap events, or +processing of damage notifications, but the CM per se is agnostic of the inner +workings of the WM. + +The effect framework is event driven. MBWMCompMgrEffect is a common interface +for simple effect, defined by a type, duration (in ms) and gravity. Each +MBWMCompMgrClient instance is then associated with a mapping between +effect-events (such as client window mapping, unmapping or minimizing) and a +list of effects that are to be triggered by the event; a small set of effects +(such as scaling, fading or sliding, is predefined, and the event-effect +mapping is defined on per-client-type basis by the theme. + +MBWMCompMgr, MBWMCompMgrClient and MBWMCompMgrEffect are abstract interfaces +that provide public API through which the WM communicates with the +CM; the CM itself is implememented by one or more backends, +which subclass these objects. Currently, two backends are included with MBWM2: +an XRender-based implementation MBWMCompMgrDefault, and a Clutter-based +implementation MBWMCompMgrClutter. |