Clement Hermann (nodens) wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> I'm noticing a problem when using composite with gnome 2.12 (I did not
> saw anything like that with gnome 2.10, but since I upgraded both gnome
> and e16 to the last CVS, I'm not sure wether the problem lies in E or
> In short : the right-click is unusable. If you right-click on, say,
> gnome-terminal or the tasklist applet, the menu show up for a few
> milliseconds, and disapear.
> If composite is disabled, the problem won't occur.
> It happens also with left-click on some applets (e.g. tsclient), so I
> guess it has something to do with the method involved when dealing with
> some type of menu, something WM_CLASS related.
> Did anything change in E's composite recently ? Does anybody have a clue
> about what could cause this bug ?
The change is definitely in gnome. Something has changed in the way
certain pop-up (override-redirect) windows are handled.
The problem is a combination of how the e16 composite manager
handles override-redirect windows, how they are handled by the
application/toolkit in question, and how the X-server handles
composite redirection of windows.
I think the chain of events is:
1) Application maps pop-up window
2) e16 detects that and does composite redirection of the pop-up
3) The server does unmap, redirect, map
4) The application detects the unmap and decides that the window
should be destroyed.
My guess is that the change is in 4), and that gnome 2.10 did not
destroy the window on unmap.
One partial workaround is to disable e16's composite redirection of
$ eesh set compmgr.override_redirect.mode 0
This removes steps 2-4) and makes the pop-up windows usable. However,
there is a bug in the e16 composite manager causing rendering over the
unredirected pop-up windows if the window content below changes.
I intend to fix that before too long.
I haven't tried it, but I think the problem will be solved in the next
xorg server version (I believe the fix is in CVS), where the server no
longer generates unmap/map events around the composite redirection in
step 3), and step 4) will not occur.