Provided by: libx11-protocol-other-perl_31-1build1_all bug

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, X11::Protocol::Ext::XFIXES, X11::Protocol::Ext::DOUBLE_BUFFER

       "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, 2017 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.40.1                                       2025-11-24                 X11::Protocol::Ext::Composite(3pm)