1. 05 Oct, 2018 1 commit
    • Jonas Ådahl's avatar
      window/wayland: Don't initialize a window as showing · 49780245
      Jonas Ådahl authored
      With Wayland, a window is not showing until it's shown. Until this
      patch, the initial state of MetaWindow, on the other hand, was that a
      window is initialized as showing. This means that for a window to
      actually be classified as shown (MetaWindow::hidden set to FALSE),
      something would first have to hide it.
      
      Normally, this wasn't an issue, as normally we'd first create a window,
      determine it shouldn't be visible (due to missing buffer), hide it
      before the next paint, then eventually show it. This doesn't work if
      mutter isn't drawing any frames at the moment (e.g. the user switched
      VT), as we'd miss the hiding before showing as e result of a buffer
      being attached. The most visible side effect is that a window can't be
      moved as the window actor remains frozen.
      
      This commit fixes this issue by correctly classifying a newly created
      Wayland window as "hidden".
      
      Fixes: GNOME/mutter#331
      49780245
  2. 04 Oct, 2018 8 commits
  3. 01 Oct, 2018 2 commits
  4. 29 Sep, 2018 1 commit
  5. 25 Sep, 2018 1 commit
    • Olivier Fourdan's avatar
      wayland: No xdg-output events without a logical monitor · 68ec9ac0
      Olivier Fourdan authored
      To avoid a known race condition in the wl_output protocol documented in
      https://phabricator.freedesktop.org/T7722, mutter delays the `wl_output`
      destruction but nullify the `logical_monitor` associated with the
      `wl_output` and the binding routine `bind_output()` makes sure not to
      send wl_output events if the `logical_monitor` is `NULL` (see commit
      1923db97).
      
      The binding routine for `xdg_output` however does not check for such a
      condition, hence if the output configuration changes while a client is
      binding to xdg-output (typically Xwayland at startup), mutter would
      crash while trying to access the `logical_monitor` which was nullified
      by the change in configuration.
      
      Just like `bind_output()` does for wl_output, do not send xdg-output
      events if there is no `logical_monitor` yet.
      
      Closes: GNOME/mutter#194
      68ec9ac0
  6. 24 Sep, 2018 1 commit
    • Carlos Garnacho's avatar
      core: Preserve focus across decoration changes · 8dcac664
      Carlos Garnacho authored
      Changes in window decoration result in the window being reparented
      in and out its frame. This in turn causes unmap/map events, and
      XI_FocusOut if the window happened to be focused.
      
      In order to preserve the focused window across the decoration change,
      add a flag so that the focus may be restored on MapNotify.
      
      Closes: #273
      8dcac664
  7. 21 Sep, 2018 1 commit
    • Olivier Fourdan's avatar
      compositor: Skip windows not visible to the compositor · 2fb3db76
      Olivier Fourdan authored
      The compositor will automatically unredirect the top most window which
      is fully visible on screen. When unredirecting windows, it also shapes
      the compositor overlay window (COW) so that other redirected windows
      still shows correctly.
      
      The function `get_top_visible_window_actor()` however will simply walks
      down the window list, so if a window is placed on a layer above and
      unredirected, then iconified by the client, it will still be picked up
      by `get_top_visible_window_actor()` and he compositor will reckon it's
      still unredirected while not in a visible state anymore, thus leaving a
      black area on screen.
      
      Make sure we skip the windows not known to the compositor while picking
      the top visible window actor to avoid this issue.
      
      Closes: GNOME/mutter#306
      2fb3db76
  8. 19 Sep, 2018 3 commits
  9. 18 Sep, 2018 3 commits
    • Sam Spilsbury's avatar
      actor: Also recompute paint volume if we recently dropped effects · a8a3c101
      Sam Spilsbury authored
      Otherwise we'll be stuck with the same paint volume on the last
      frame of the given effect, which could be wrong.
      a8a3c101
    • Sam Spilsbury's avatar
      actor: Always use get_paint_volume override for active effects · 5d19aee2
      Sam Spilsbury authored
      If an effect is active and it overrides the paint volume, we should
      always recompute the paint volume when requested and not use the
      cache, since the paint volume override can change from call to
      call depending on what phase of painting we are in. For instance,
      if we are part way through painting effects and request the
      paint volume, the paint volume should only go up to the current
      effect, but in a later call to compute repaint regions, the
      paint volume needs to expand to accomadate the effect.
      
      This still involves a lot of recomputation in the case of effects -
      in a later clutter version it would be worth adding an API to
      allow effects to explicitly recompute and return a new the paint
      volume up to the current effect as opposed to recomputing
      the cached one.
      5d19aee2
    • Sam Spilsbury's avatar
      actor: Fix logic error in determining terminal effect for paint volume · 4270eef1
      Sam Spilsbury authored
      Previously we were checking l->data != NULL || (l->data != NULL &&
      l->data != priv->current_effect). This would continue the loop even
      if l->data == priv->current_effect, since l->data != NULL, which was
      not the intention of that loop.
      
      We also don't need to check that l->data != NULL before checking if
      it does not match the current_effect, since we already checked
      that current_effect was non-NULL before entering the loop.
      4270eef1
  10. 14 Sep, 2018 1 commit
  11. 11 Sep, 2018 1 commit
  12. 07 Sep, 2018 3 commits
  13. 06 Sep, 2018 1 commit
  14. 03 Sep, 2018 1 commit
  15. 02 Sep, 2018 1 commit
  16. 01 Sep, 2018 2 commits
  17. 31 Aug, 2018 2 commits
  18. 29 Aug, 2018 4 commits
  19. 28 Aug, 2018 2 commits
  20. 27 Aug, 2018 1 commit