1. 07 Oct, 2019 13 commits
    • Carlos Garnacho's avatar
      backends: Fix thinko · fc3831c7
      Carlos Garnacho authored
      We are meant to pass a flagset there, not a boolean. Fixes state querying
      to the ClutterKeymap in the native backend.
    • Carlos Garnacho's avatar
      Revert "backends/x11: Do not reload keymap on new keyboard notifications" · ce86f90e
      Carlos Garnacho authored
      This reverts commit b01edc22.
      It breaks keybindings on certain physical keyboard layouts.
      Closes: #822
    • Jonas Ådahl's avatar
      wayland: Untie MetaWindowXwayland lifetime from the wl_surface · b5f50028
      Jonas Ådahl authored
      For the most part, a MetaWindow is expected to live roughly as long as
      the associated wl_surface, give or take asynchronous API discrepancies.
      The exception to this rule is handling of reparenting when decorating or
      undecorating a window, when a MetaWindow on X11 is made to survive the
      unmap/map cycle. The fact that this didn't hold on Wayland caused
      various issues, such as a feedback loop where the X11 window kept being
      remapped. By making the MetaWindow lifetime for Xwayland windows being
      the same as they are on plain X11, we remove the different semantics
      here, which seem to lower the risk of hitting the race condition causing
      the feedback loop mentioned above.
      What this commit do is separate MetaWindow lifetime handling between
      native Wayland windows and Xwayland windows. Wayland windows are handled
      just as they were, i.e. unmanaged together as part of the wl_surface
      destruction; while during the Xwayland wl_surface destruction, the
      MetaWindow <-> MetaWaylandSurface association is simply broken.
      Related: https://gitlab.freedesktop.org/xorg/xserver/issues/740
      Fixes: #762
    • Jonas Ådahl's avatar
      clutter/transition: Don't split reference counting with actor · 2c388e21
      Jonas Ådahl authored
      ClutterActor took a reference in its transition 'stopped' handler,
      aiming to keep the transition alive during signal emission even if it
      was removed during. This is, however, already taken care of by
      ClutterTimeline, by always taking a reference during its 'stopped'
      signal emission, so no need to add another one.
      This also has the bonus of making reference ownership simpler, as well
      as avoidance of double free if an actor was destroyed before a
      transition has finished.
    • Jonas Ådahl's avatar
      plugins/default: Hold reference on timelines while stopping · fb6e2743
      Jonas Ådahl authored
      We get implicit, thus auto-removed, transitions, then manage them
      manually by stopping them and emitting "completed" signals. This doesn't
      work since they are removed and freed when stopped. To be able to emit
      the "completed" signal, hold a reference while stopping, so that we
      still can emit the signal as before.
    • Jonas Ådahl's avatar
      clutter/actor: Mark implicit transitions as remove-on-complete · 6ee006c8
      Jonas Ådahl authored
      Implicit transitions had a referenced taken while emitting the
      completion signals, but said reference would only be released if it was
      had remove-on-complete set to TRUE.
      Change this to instead remove the 'is_implicit' state and mark all
      implicit transitions as remove-on-complete. This fixes a
      ClutterPropertyTransition leak in gnome-shell triggered by e.g. showing
      / hiding menus.
      Fixes: GNOME/gnome-shell#1740
    • Carlos Garnacho's avatar
      wayland: Unset pointer constraint in the backend before dropping the grab · 107e5215
      Carlos Garnacho authored
      Dropping the grab has the side effect that the pointer will be re-picked,
      and it might find another surface with a pointer constraint. If that were
      the case, the focus change would try to add the pointer constraint before
      the now old focus surface released its own.
      Just invert these operations, so the constraint is unset before the repick
      that might enable another pointer constraint.
      Closes: #779
    • Carlos Garnacho's avatar
      wayland: Check pointer visibility on post-grab focus changes · 7735a919
      Carlos Garnacho authored
      Just like sync_focus_surface() does, we shouldn't set a focus surface while
      the pointer is hidden, so the illusion that there is none remains.
      Closes: #779
    • Carlos Garnacho's avatar
      wayland: Warn if a surface is being set while the pointer is invisible · 9f617ae4
      Carlos Garnacho authored
      This is an unexpected condition, better not to fall in it without further
      Closes: #779
    • Jonas Ådahl's avatar
      kms: Predict state changes when processing update · 104bdde7
      Jonas Ådahl authored
      We can't just update the state of the connector and CRTC from KMS since
      it might contain too new updates, e.g. from a from a future hot plug. In
      order to not add ad-hoc hot plug detection everywhere, predict the state
      changes by looking inside the MetaKmsUpdate object, and let the hot-plug
      state changes happen after the actual hot-plug event.
      This fixes issues where connectors were discovered as disconnected while
      doing a mode-set, meaning assumptions about the connectedness of
      monitors elsewhere were broken until the hot plug event was processed.
      Fixes: #782
    • Jonas Ådahl's avatar
      kms/update: Add helper to turn fixed point rect into int rect · 2a990cc1
      Jonas Ådahl authored
      Currently unused, but will in the following commit.
    • Jonas Ådahl's avatar
      kms/update: Add helper to get primary plane assignment · 3e415680
      Jonas Ådahl authored
      Replaces a private static function, with no functional changes made to
    • Robert Mader's avatar
      wayland/subsurface: Check if actor exists before unparenting · 66ae09b6
      Robert Mader authored
      When we call the subsurface destructor the actor might be gone already.
      Check first, like we do in other places, to avoid warnings.
  2. 06 Oct, 2019 1 commit
  3. 04 Oct, 2019 1 commit
  4. 03 Oct, 2019 18 commits
  5. 02 Oct, 2019 4 commits
    • Marco Trevisan's avatar
      clutter/actor: Don't emit property changes after ::destroy · 105a3f75
      Marco Trevisan authored
      Clutter actors might emit property changes in dispose, while unparenting.
      However we assume that the ::destroy signal is the last one we emit for an
      actor, and that starting from this moment the object is not valid anymore,
      and so we don't expect any signal emission from it.
      To avoid this, freeze the object notifications on an actor during its
      disposition, just before the ::destroy signal emission.
      Update the actor-destroy test to verify this behavior.
    • Marco Trevisan's avatar
      clutter/actor: Don't emit the parent-set signal on destruction · f376a318
      Marco Trevisan authored
      Clutter actors unset their parent on dispose, after emitting the ::destroy
      signal, however this could cause ::parent-set signal emission. Since we
      assume that after the destruction has been completed the actor isn't valid
      anymore, and that during the destroy phase we do all the signal / source
      disconnections, this might create unwanted behaviors, as in the signal
      callbacks we always assume that the actor isn't in disposed yet.
      To avoid this, don't emit ::parent-set signal if the actor is being
      Update the actor-destroy test to verify this behavior.
    • Olivier Fourdan's avatar
      events: Sync pending pointer events without a window · 4b88c183
      Olivier Fourdan authored
      Mutter issues a synchronous grab on the pointer for unfocused client
      windows to be able to catch the button events first and raise/focus
      client windows accordingly.
      When there is a synchronous grab in effect, all events are queued until
      the grabbing client releases the event queue as it processes the events.
      Mutter does release the events in its event handler function but does so
      only if it is able to find the window matching the event. If the window
      is a shell widget, that matching may fail and therefore Mutter will not
      release the events, hence causing a freeze in pointer events delivery.
      To avoid the issue, make sure we sync the pointer events in case we
      can't find a matching window.
    • Ask Hjorth Larsen's avatar
      Updated Danish translation · fc8aa1cd
      Ask Hjorth Larsen authored
  6. 30 Sep, 2019 1 commit
    • Jonas Ådahl's avatar
      Revert "renderer-native: Actually use shadow fb when using software rendering" · 7049b2f2
      Jonas Ådahl authored
      It was not the lack of forcing the shadow fb that caused slowness, but
      rather due to the method the shadow fb content was copied onto the
      scanout fb. With 'clutter: Use cogl_blit_framebuffer() for shadow FB'
      we'll use a path that shouldn't be slow when copying onto the scanout
      Also 437f6b3d accidentally enabled
      shadow fb when using hw accelerated contexts, due to the cap being set
      to 1 in majority of drivers. While the kernel documentation for the
      related field says "hint to userspace to prefer shadow-fb rendering",
      the name of the hint when exposed to userspace is
      DRM_CAP_DUMB_PREFER_SHADOW, thus should only be taken into consideration
      for dumb buffers, not rendering in general.
      This reverts commit 437f6b3d.
  7. 28 Sep, 2019 1 commit
  8. 27 Sep, 2019 1 commit
    • Jonas Ådahl's avatar
      renderer-native: Actually use shadow fb when using software rendering · 437f6b3d
      Jonas Ådahl authored
      The commit 'renderer/native: Use shadow fb on software GL if preferred'
      attempted to force using a shadow fb when using llvmpipe in order to
      speed up blending, but instead only did so when llvmpipe AND the drm
      device explicityl asked for it.
      Now instead always force it for llvmpipe and other software rendering
      backends, and otherwise just query the drm device (i.e.