manpagez: man pages & more
man X11::Protocol::Ext::Composite(3)
Home | html | info | man
X11::Protocol::Ext::Composite(3)



NAME

       X11::Protocol::Ext::Composite - off-screen window contents


SYNOPSIS

        use X11::Protocol;
        my $X = X11::Protocol->new;
        $X->init_extension('Composite')
          or print "Composite extension not available";

        $X->CompositeRedirectWindow ($mywindow, 'Automatic');


DESCRIPTION

       The Composite extension holds the full pixel contents of windows in
       off-screen storage, ready for things like "CopyArea()".  Normally the
       server only keeps the visible parts of a window, not areas overlapped
       or obscured.

       In "Automatic" mode the visible parts of a window are displayed on
       screen as normal.  The off-screen storage is then a little like the
       backing store feature, but just when one or more clients declare an
       interest in the full content.

       In "Manual" mode the window contents are not drawn on screen, only kept
       off-screen.  This mode is for use by special "composite manager"
       programs which might make a composite display (hence the name of the
       extension) of the overlapping windows with partial-transparency or
       shadowing effects.

       There's nothing here to draw or combine to actually make a composite
       window result.  When required that's done with the usual core protocol
       drawing or with drawing extensions such as RENDER (see
       X11::Protocol::Ext::RENDER).


REQUESTS

       The following requests are made available with an "init_extension()",
       as per "EXTENSIONS" in X11::Protocol.

           my $is_available = $X->init_extension('Composite');

   Composite 0.1
       "($server_major, $server_minor) = $X->CompositeQueryVersion
       ($client_major, $client_minor)"
           Negotiate a protocol version with the server.  $client_major and
           $client_minor is what the client would like, the returned
           $server_major and $server_minor is what the server will do, which
           might be less than requested (but not more than).

           Actually the X.org server circa 1.10 will return a higher minor
           version than the client requests.

           The current code supports up to 0.3 and the intention is to
           automatically negotiate in "init_extension()" if/when necessary.

       "$X->CompositeRedirectWindow ($window, $update)"
       "$X->CompositeRedirectSubwindows ($window, $update)"
       "$X->CompositeUnredirectWindow ($window, $update)"
       "$X->CompositeUnredirectSubwindows ($window, $update)"
           Enable or disable a redirect of $window to off-screen storage.

           "Window()" acts on just the given $window.  "Subwindows()" acts on
           $window and also any subwindows it has now or in the future.  The
           root window cannot be redirected.

           $update is string "Automatic" or "Manual".  Only one client at a
           time may use Manual mode on a given $window (normally a "composite
           manager" program).

           Redirection is a per-client setting and is automatically
           unredirected if the client disconnects.  An unredirect when not
           redirected is a "BadValue" error.  Off-screen storage remains in
           effect while at least one current client has requested it.

       "$X->CompositeCreateRegionFromBorderClip ($region, $window)"
           Create $region (a new XID) as a server-side region object
           initialized to, umm, something about $window and its current border
           or visible parts or whatnot.

           Region objects are from XFIXES 2.0 (X11::Protocol::Ext::XFIXES).
           "CompositeCreateRegionFromBorderClip()" can be used without
           "init_extension()" of XFIXES, but there's not much which can be
           done with a region except through XFIXES.

   Composite 0.2
       "$X->CompositeNameWindowPixmap ($window, $pixmap)"
           Set $pixmap (a new XID) to refer to the off-screen storage of
           $window.  $window must be viewable (mapped and all of its parents
           mapped) and must be redirected (by any client).

               my $pixmap = $X->new_rsrc;
               $X->CompositeNameWindowPixmap ($window, $pixmap);

           $pixmap is released with "FreePixmap()" in the usual way.  If
           $window or a parent is unmapped then $pixmap continues to exist,
           but it's association with $window is lost.  If $window is mapped
           and redirected again later then it has a new off-screen storage and
           a new "CompositeNameWindowPixmap()" must be called to get a new
           pixmap for it.

   Composite 0.3
       "$overlay_window = $X->CompositeGetOverlayWindow ($window)"
           Return the composite overlay window for the screen of $window.

           This window covers the whole screen and is always above ordinary
           windows but below any screen saver, and doesn't appear in a
           "QueryTree()".  It's created when the first client asks for it, and
           shared by any further clients who ask.

       "$X->CompositeReleaseOverlayWindow ($window)"
           Release the composite overlay window for the screen of $window.
           When all clients release it the overlay window is destroyed.


SEE ALSO

       X11::Protocol(3), X11::Protocol::Ext::XFIXES(3),
       X11::Protocol::Ext::DOUBLE_BUFFER(3)

       "Composite Extension", Version 0.4, 2007-7-3,
       /usr/share/doc/x11proto-composite-dev/compositeproto.txt.gz,
       "http://cgit.freedesktop.org/xorg/proto/compositeproto/plain/compositeproto.txt"


HOME PAGE

       <http://user42.tuxfamily.org/x11-protocol-other/index.html>


LICENSE

       Copyright 2011, 2012, 2013, 2014 Kevin Ryde

       X11-Protocol-Other is free software; you can redistribute it and/or
       modify it under the terms of the GNU General Public License as
       published by the Free Software Foundation; either version 3, or (at
       your option) any later version.

       X11-Protocol-Other is distributed in the hope that it will be useful,
       but WITHOUT ANY WARRANTY; without even the implied warranty of
       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
       General Public License for more details.

       You should have received a copy of the GNU General Public License along
       with X11-Protocol-Other.  If not, see <http://www.gnu.org/licenses/>.



perl v5.28.1                      2014-01-18  X11::Protocol::Ext::Composite(3)

x11-protocol-other 30 - Generated Tue Feb 19 13:17:34 CST 2019
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.