Re: pseudo transparency
- From: Owen Taylor <otaylor redhat com>
- To: Olivier Chapuis <olivier chapuis free fr>
- Cc: wm-spec-list gnome org
- Subject: Re: pseudo transparency
- Date: Fri, 11 Jan 2002 14:49:28 -0500 (EST)
Olivier Chapuis <olivier chapuis free fr> writes:
> About the E method. Here there is a de facto standard which
> uses the ESETROOT_PMAP_ID and the _XROOTPMAP_ID atoms. Maybe,
> this can be documented in the wm-spec? If I well understand
> this method, applications should use the _XROOTPMAP_ID and
> setroot programs should destroy the pixmap if
> 	ESETROOT_PMAP_ID == _XROOTPMAP_ID
> before setting the background with its own pixmap (and
> then set _XROOTPMAP_ID and also ESETROOT_PMAP_ID if its
> own pixmap can be destroyed). That's it?
A program that wants to set the background should:
 - Create a persistant pixmap by calling to the server with:
    dpy = XOpenDisplay(display_name);
    XSetCloseDownDisplay (dpy, RetainPixmap);
    pmap = XCreatePixmap (dpy, DefaultRootWindow (dpy), width, height,
                           DefaultDepthOfScreen (DefaultScreenOfDisplay (dpy)));
    XCloseDisplay (dpy)
 - Grab the server
 - See if ESETROOT_PMAP_ID is set
 - If so, call XKillClient(xdisplay, *(Pixmap*)data_esetroot)
 - Change ESETROOT_PMAP_ID and _XROOTPMAP_ID to point to the
   new pixmap
 - Set the pixmap as the background for the root window
 - Ungrab the server
 
There is no point in checking to see if ESETROOT_PMAP_ID is
equal to _XROOTPMAP_ID ... if ESETROOT_PMAP_ID is set, it
will point to a pixmap that must be killed before changing
ESETROOT_PMAP_ID.
> Now one problem with the E method is that it may need
> a lot of memory (this depends on the memory you have and
It takes _no_ extra memory. The pixmap is already referenced
by the server, all the E method does is keep around a 
XID pointing to the pixmap.
Regards,
                                        Owen
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]