~unity-team/compiz-core/compiz-core.fix_767095

Viewing all changes in revision 2739.

  • Committer: Sam Spilsbury
  • Date: 2011-05-26 13:50:00 UTC
  • Revision ID: sam.spilsbury@canonical.com-20110526135000-bbxu92y0gs80fke7
  XSync right after configureXWindow in cases where we
  need to immediately reorder the window stack.
  
  This isn't a real fix, but at least fixes the following situation without
  breaking the API and ABI
  
  Windows stacked A, B, C
  
  Plugin does: C->raise (), B->raise (), A->raise ()
  Window list should read at this point: ... C, B, A ... (screen->windows ())
  However, the output buffer hasn't been flushed at this point
  so server side we will have A, B, C.
  
  Now if a sneaky client tries to restack A above C, we will get the
  ConfigureRequest for that, and instead of getting B, C, A like the client
  expects, we'll actually get C, B, A.
  
  The real solution is to have a list of windows last sent to the server
  and a list of windows last recieved by it. That way plugins can
  mess with the internal stack all they want, but when recieving
  events for X as to the actual state of things, they can restack relative
  to the server list.

expand all expand all

Show diffs side-by-side

added added

removed removed

Lines of Context: