1. 16 Jan, 2014 3 commits
  2. 13 Jan, 2014 8 commits
  3. 07 Jan, 2014 7 commits
    • Daniel Drake's avatar
      window: don't grab server during calc_showing · a5f0db5e
      Daniel Drake authored
      This grab was added in commit caf43a12
      https://bugzilla.gnome.org/show_bug.cgi?id=381127
      to minimize window flickering when switching workspaces.
      
      While this grab is held, some signals are emitted to the shell,
      which can lead to deadlocks (reproduced under Mali binary OpenGLESv2
      drivers).
      
      Now that we are a compositing window manager, we do not have to
      worry about flickers, this grab should no longer be necessary.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=721709
      a5f0db5e
    • Daniel Drake's avatar
      Reduce server grabs during window creation · 577624ad
      Daniel Drake authored
      Remove some obvious server grabs from the window creation codepath,
      also ones that are taken at startup.
      
      During startup, there is no need to grab: we install the event handlers
      before querying for the already-existing windows, so there is no danger
      that we will 'lose' some window. We might try to create a window twice
      (if it comes back in the original query and then we get an event for it)
      but the code is already protected against such conditions.
      
      When windows are created later, we also do not need grabs, we just need
      appropriate error checking as the window may be destroyed at any time
      (or it may have already been destroyed).
      
      The stack tracker is unaffected here - as it listens to CreateNotify and
      DestroyNotify events and responds directly, the internal stack
      representation will always be consistent even if the window goes away while
      we are processing MapRequest or similar.
      
      Now that there are no grabs we don't have to worry about explicitly calling
      display_notify_window after grabs have been dropped. Fold that into
      meta_window_new_shared().
      
      https://bugzilla.gnome.org/show_bug.cgi?id=721345
      577624ad
    • Daniel Drake's avatar
      meta_window_new: clean up error handling · af46ef3b
      Daniel Drake authored
      The return code of XGetWindowAttributes() indicates whether an error
      was encountered or not. There is no need to specifically check the error
      trap.
      
      The trap around XAddToSaveSet() was superfluous. We have a global error
      trap to ignore any errors here, and there is no need to XSync() as GDK
      will later ignore the error asynchronously if one is raised.
      
      Also move common error exit path to an error label.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=721345
      af46ef3b
    • Daniel Drake's avatar
      screen: use stack tracker for initial window query · 39d26be9
      Daniel Drake authored
      In meta_screen_manage_all_windows() we can use our own stack
      tracker to get the list of windows - no need to query X again.
      
      A copy is needed because the stack gets modified as part of the loop.
      Specifically, meta_stack_tracker_get_stack() at this time returns the
      predicted stack, and meta_window_new() performs a few operations
      (e.g. framing) which cause immediate changes to the predicted stack.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=721345
      39d26be9
    • Daniel Drake's avatar
      frame: remove unnecessary server grab · 7bfc9109
      Daniel Drake authored
      meta_window_ensure_frame() creates its own grab and has a comment
      claiming that it must be called under a grab too.
      
      But the reasoning given in the comment does not seem relevant here.
      We only frame non-override-redirect windows, so we are creating
      the frame in response to MapRequest. There is no way that the child
      could receive a MapNotify at this point, since that only happens
      much later, once we go through the CALC_SHOWING queue and call
      XMapWindow() from meta_window_show().
      
      Remove the unnecessary grab.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=721345
      7bfc9109
    • Daniel Drake's avatar
      Discourage server grabs · becbad56
      Daniel Drake authored
      Server grabs are not as evil as you might expect, but there is agreement
      in that their usage should be limited.
      
      Server grabs can cause things to go rather wrong when mutter emits
      a signal while it has grabbed the server. If the receiver of that signal
      waits for a synchronous action performed by another client, then you
      have a deadlock. This happens with Mali binary GLESv2 drivers :(
      
      https://bugzilla.gnome.org/show_bug.cgi?id=721345
      becbad56
    • Daniel Drake's avatar
      Remove meta_window_new_with_attrs · 384a34c2
      Daniel Drake authored
      The compositor code used to handle X windows that didn't have a
      corresponding MetaWindow (see commit d538690b), which is why the
      attribute query is separated.
      
      As that doesn't happen any more, we can clean up. No functional changes.
      
      Suggested by Owen Taylor.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=721345
      384a34c2
  4. 01 Jan, 2014 4 commits
  5. 24 Dec, 2013 2 commits
  6. 19 Dec, 2013 1 commit
  7. 18 Dec, 2013 3 commits
  8. 17 Dec, 2013 1 commit
  9. 12 Dec, 2013 1 commit
  10. 09 Dec, 2013 10 commits