After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 524112 - Evince should not assume state change callbacks when entering presentation mode
Evince should not assume state change callbacks when entering presentation mode
Status: RESOLVED FIXED
Product: evince
Classification: Core
Component: general
git master
Other All
: Normal normal
: ---
Assigned To: Evince Maintainers
Evince Maintainers
Depends on:
Blocks:
 
 
Reported: 2008-03-24 12:43 UTC by Danny Baumann
Modified: 2008-04-02 18:12 UTC
See Also:
GNOME target: ---
GNOME version: 2.23/2.24



Description Danny Baumann 2008-03-24 12:43:15 UTC
Please describe the problem:
When switching evince from fullscreen to presentation mode, the window display is broken when using Compiz as window manager. The reason for that is as follows:
- Evince unfullscreens its window and fullscreens it again for presentation
- Compiz gets both events and sets the window properties accordingly
- Gdk gets the property change notification for the first state property change (fullscreen state -> normal state)
- Gdk reads the actual state property value
- due to a race condition between property notify event and value reading, the read value is the new value (after re-fullscreening)
- Gdk recognizes no state changes and thus emits no state change notification to Gtk

If I insert some code that delays setting the window state property inside Compiz, evince works as expected, as Gdk recognizes both state changes in this case and emits state change notifications. Obviously Compiz sets the window properties faster than other WMs, probably due to the lack of reparenting.

Please note that Compiz' behaviour is absolutely fine here as it correctly sets the window properties. Gdk's behaviour is also fine as the end result of unfullscreen + fullscreen _is_ "No state change". Evince should just not rely on getting those state change notifications.

Steps to reproduce:
1. Run compiz
2. Run evince with any document
3. Press F11, F5
4. Watch it break.


Actual results:


Expected results:


Does this happen every time?
Yes, although the amount of breakage (the look of the window) varies due to the above described race condition.

Other information:
Comment 1 Nickolay V. Shmyrev 2008-03-24 19:49:07 UTC
Thanks for very detailed description.
Comment 2 Carlos Garcia Campos 2008-04-02 18:12:59 UTC
I think this should be fixed in svn trunk now. Feel free to reopen this bug if the problem is not fixed  for you, please. 

Thanks for reporting.