[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [E-devel] E16 - problem with composite and gnome 2.12

Clement Hermann (nodens) wrote:
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 override-redirect windows:
$ 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.