Merge lp:~sil2100/compiz-core/fglrx_win_focus into lp:compiz-core
Status: | Rejected |
---|---|
Rejected by: | Alan Griffiths |
Proposed branch: | lp:~sil2100/compiz-core/fglrx_win_focus |
Merge into: | lp:compiz-core |
Diff against target: |
26 lines (+0/-4) 2 files modified
gtk/window-decorator/cairo.c (+0/-3) gtk/window-decorator/metacity.c (+0/-1) |
To merge this branch: | bzr merge lp:~sil2100/compiz-core/fglrx_win_focus |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Alan Griffiths | Disapprove | ||
Daniel van Vugt | Abstain | ||
Sam Spilsbury | Pending | ||
Review via email:
|
Description of the change
Notice: this is just a proposition to be discussed. The proposed change seemingly fixes the stated problem, but I will proceed with analysing the very root cause of the problem anyway. Since it seems there might be a problem with damage events (again) on fglrx.
= Problem description =
This fix was mostly designed to cope with the problem of invalid decorations for active/inactive windows on the fglrx driver (LP: 781384). On fglrx and compiz with gtk-window-
The decorator (gtk-window-
= The fix =
The proposed fix eliminates the problem by sending PropertyNotify events to compiz every time the decoration is redrawn (both for cairo and metacity). This way, compiz explicitly knows about the decoration change and can update the decoration. We do this by not clearing the prop_xid variable on every update. From what I consulted with Sam, this doesn't really seem to have any noticible performance implications.
= Test coverage =
After the fix, active/inactive window decorations are correct. The decorations are also redrawn on mouse hover over window decoration buttons.
Unmerged revisions
- 3021. By Łukasz Zemczak
-
When drawing decorations, don't reset the prop_xid value of the decorator, so that we send notification about the change of the decoration pixmap to X through PropertyNotify events.
I'm more inclined to take this as a distro patch than to have it upstream.
Resetting not resetting prop_xid means that for every redraw on the decoration we will have two events coming in to the decor plugin to update the decoration texture, both damage events on the pixmap and the PropertyNotify events. The PropertyNotify events also call through to DecorWindow::update which is a slightly more expensive codepath.