when switching between workspaces, the background picture is always fully redrawn First, regardless if something is on top of it.
Which is not correct. The windows are unmapped bottom -> up remapped in reverse order, up -> bottom so that there is no useless expose events. And I see no flicker here.
If you mean that windows on the newer desktop could be mapped before unmapping the ones on the previous worskapce, then yes, it could be done that way but that would break the logic in workspace switching and I don't see the need to break that code just for that. If you have a patch that proves to be as solid as the current code and that does what you want, please submit it.
simple scenario: a bright background (e.g. soft-green.jpg), 1 big/maximized dark window (terminal?) on workspace 1, another one on workspace 2. now switch between the workspaces using keyboard, e.g. ctrl-f1/f2 and back, quick, several times. does it flicker? seems to me the windows-order is ok, BUT only the background image somehow gets separated from them - and redrawn each time.
I understand what you mean. This is because the following scenario occurs: 1) all windows on previous workspace get unmapped 2) the desktop is visible 3) the windows placed on the new workspace are mapped To "fix" or improve that, one would need to: 1) map all windows placed on the new workspace 2) unmap the one from the previous workspace. This way, no area of the desktop that are supposed to be covered would be made visible.
yes, basicaly, do the adding first, then the removal. another way is to use double-buffering - i don't know if gtk supports that - do all the dirty work and just then commit, i.e. "switch" to the resulting image.
Should be fixed in current svn.