1. 13 Jan, 2014 4 commits
  2. 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
      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
      Now that we are a compositing window manager, we do not have to
      worry about flickers, this grab should no longer be necessary.
    • 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
    • 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
      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.
    • 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.
    • 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.
    • 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 :(
    • 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.
  3. 01 Jan, 2014 4 commits
  4. 24 Dec, 2013 2 commits
  5. 19 Dec, 2013 1 commit
  6. 18 Dec, 2013 3 commits
  7. 17 Dec, 2013 1 commit
  8. 12 Dec, 2013 1 commit
  9. 09 Dec, 2013 11 commits
  10. 07 Dec, 2013 5 commits
  11. 06 Dec, 2013 1 commit
    • Alberto Milone's avatar
      xrandr: ignore the error if setting the primary output fails · 64364593
      Alberto Milone authored
      Some drivers which support RandR 1.4 may not support setting
      or getting the primary output, therefore mutter should trap
      and ignore any relevant errors.
      The modesetting driver exposes this problem when used in
      combination with the nvidia binary driver using RandR 1.4
      Also use a local display variable instead of calling
      meta_get_display () every time.