1. 19 Apr, 2019 1 commit
  2. 17 Apr, 2019 6 commits
    • Florian Müllner's avatar
      Bump version to 3.32.1 · e3f3274b
      Florian Müllner authored
      Update NEWS.
      e3f3274b
    • Olivier Fourdan's avatar
      display: Fix inconsistent behavior with demand attention · d2ca5cc2
      Olivier Fourdan authored
      When focus stealing prevention kicks in, mutter would set the demand
      attention flag on the window.
      
      Focus stealing prevention would also prevent the window from being
      raised and focused, which is expected as its precisely its purpose.
      
      Yet, when that occurs, the user expects the window which has just been
      prevented from being focused to be the next one in the MRU list, so
      that pressing [Alt]-[Tab] would raise and give focus to that window.
      
      This works fine when the window is placed on the primary monitor, but
      not when placed on another monitor, in which case the window which has
      been denied focus is placed ahead of the MRU list and pressing
      [Alt]-[Tab] would leave the focus on the current window.
      
      This is because of a mechanism in `meta_display_get_tab_list()` which
      forces the windows with the demand attention flag set to be placed first
      in the MRU list when they're placed on a workspace different from the
      current one.
      
      But because workspaces apply only to the primary monitor (by default),
      the windows placed on other outputs have their workspace set to `NULL`
      which forces them ahead of the MRU list by mistake.
      
      Fix this by using the appropriate `meta_window_located_on_workspace()
      function to check if the window is on another workspace.
      
      Closes: GNOME/mutter#523
      d2ca5cc2
    • Carlos Garnacho's avatar
      core: Emit MetaStartupNotification::changed on sequence completion · 3de6f7eb
      Carlos Garnacho authored
      This way handlers that want to know the get_complete() status will be able
      to do so without further delays.
      
      Closes: GNOME/mutter#541
      3de6f7eb
    • Carlos Garnacho's avatar
      core: Add MetaStartupSequence::complete signal · 38ff01d6
      Carlos Garnacho authored
      It was a vfunc so far, but we want things subscribing to it.
      
      Closes: GNOME/mutter#541
      38ff01d6
    • Carlos Garnacho's avatar
      core: Account for completed sequences in feedback updates · 40103d6f
      Carlos Garnacho authored
      The sequences may stay completed in the list (eg. pending a focus request),
      it's then confusing to show the "wait" cursor icon until they are really
      gone.
      
      Closes: GNOME/mutter#541
      40103d6f
    • Carlos Garnacho's avatar
      core: Fix differing sequence timestamp precision expectations · ab7ef5f8
      Carlos Garnacho authored
      Calculations were being done at places accounting on usec precision,
      however those are still treated as having msec precision at places. Let's
      consolidate for the latter since it requires less changes across the board
      and usec precision doesn't buy us anything here.
      
      Closes: GNOME/mutter#541
      ab7ef5f8
  3. 15 Apr, 2019 2 commits
    • Olivier Fourdan's avatar
      wayland/output: Set user data of xdg_output resource · 2c1a951b
      Olivier Fourdan authored
      mutter would randomly crash in `send_xdg_output_events()` when changing
      the fractional scaling:
      
        wl_resource_post_event ()
        zxdg_output_v1_send_logical_size ()
        send_xdg_output_events ()
        wayland_output_update_for_output ()
        meta_wayland_compositor_update_outputs ()
        on_monitors_changed ()
        g_closure_invoke ()
        signal_emit_unlocked_R ()
        g_signal_emit_valist ()
        _signal_emit ()
        meta_monitor_manager_notify_monitors_changed ()
        meta_monitor_manager_rebuild ()
      
      This is because the xdg-output resource got freed but wasn't removed
      from the list of resources.
      
      Fix this by setting the user data of the xdg-output resource to the
      corresponding `MetaWaylandOutput` so that the xdg-output resource
      destructor can remove it from the list of resources.
      
      GNOME/mutter!538
      2c1a951b
    • verdre's avatar
      keybindings: Stop keybinding if a touch happens while Super is pressed · 6ec330cc
      verdre authored
      We use the combination of pressing Super and clicking+moving the mouse
      to drag windows around and we also support pressing Super and using the
      touchscreen to drag windows.
      
      Since we don't want to show the overview when the Super key was used to
      initiate a window drag, prevent showing the overview in case a
      TOUCH_BEGIN or TOUCH_END event happened during the key was pressed.
      
      Fixes GNOME/mutter#228
      
      GNOME/mutter!495
      6ec330cc
  4. 12 Apr, 2019 1 commit
    • Daniel van Vugt's avatar
      cogl-winsys-glx: Fix frame notification race/leak · 20c1295a
      Daniel van Vugt authored
      If a second `set_{sync,complete}_pending` was queued before the idle
      handler had flushed the first then one of them would be forgotten.
      It would stay queued forever and never emitted as a notification.
      
      This could happen repeatedly causing a slow leak. But worse still,
      `clutter-stage-cogl` would then have `pending_swaps` permanently stuck
      above zero preventing the presentation timing logic from being used.
      
      The problem is that a boolean can only count to one, but in some cases
      (triple buffering, whether intentional or accidental #334) we need it to
      count to two. So just change booleans to integers and count properly.
      
      GNOME/mutter!216
      20c1295a
  5. 11 Apr, 2019 4 commits
    • Olivier Fourdan's avatar
      clutter/evdev: Toggle accessibility features from keyboard · fa4a7873
      Olivier Fourdan authored
      The keyboard accessibility setting "enable" is actually even more
      misleading that initially anticipated, as it does not control the
      entire keyboard accessibility feature, but just the "enable by
      keyboard" feature, i.e. being able to enable or disable stickykeys
      or slowkeys using various keyboard actions.
      
      Yet the accessibility features should still work even if the "enable"
      setting is unset, those can be controlled by the accessibility menu in
      GNOME Shell for example.
      
      Change the clutter/evdev implementation to match that behavior as found
      in the x11 backend, so both backends are now consistent.
      
      GNOME/mutter!531
      fa4a7873
    • Olivier Fourdan's avatar
      clutter/device-manager: Small code cleanup · 85b734fd
      Olivier Fourdan authored
      Use a `memcmp()` instead of checking every field in the structure to be
      equal, it's both faster and less error prone.
      
      GNOME/mutter!531
      85b734fd
    • Pekka Paalanen's avatar
      renderer/native: Check primary GPU supports EGL · 28419cde
      Pekka Paalanen authored
      Since "renderer/native: make EGL initialization failure not fatal" it is
      possible, under specific failure conditions, to end up with a primary GPU whose
      EGL initialization failed. That cannot work.
      
      GNOME/mutter!521
      28419cde
    • Pekka Paalanen's avatar
      renderer/native: Make EGL initialization failure not fatal · 3b46a8cd
      Pekka Paalanen authored
      The failure to initialize EGL does not necessarily mean the KMS device cannot
      be used. The device could still be used as a "secondary GPU" with the CPU copy
      mode.
      
      If meta_renderer_native_create_renderer_gpu_data () fails,
      meta_renderer_native_get_gpu_data () will return NULL, which may cause crashes.
      This patch removes most of the failures, but does not fix the NULL dereferences
      that will still happen if creating gpu data fails.
      
      This patch reorders create_renderer_gpu_data_gbm () so that it fails hard only
      if GBM device cannot be created, and otherwise always returns an initialized
      gpu data structure. Users of the gpu data structure are responsible for
      checking egl_display validity.
      
      The GBM device creation failure is a hard failure because presumably GBM is
      necessary for cursors.
      
      Fixes: GNOME/mutter#542
      GNOME/mutter!521
      3b46a8cd
  6. 02 Apr, 2019 11 commits
  7. 01 Apr, 2019 2 commits
  8. 28 Mar, 2019 2 commits
    • Carlos Garnacho's avatar
      clutter: Fix check for keyboard a11y features · 34ee4602
      Carlos Garnacho authored
      The typo was actually toggling the feature on for those who had it
      disabled.
      
      Closes: GNOME/mutter#529
      34ee4602
    • Daniel van Vugt's avatar
      clutter-actor: Keep is_dirty unchanged for culled actors · ee507d9a
      Daniel van Vugt authored
      In a multi-monitor setup there is a separate paint run for each monitor.
      If an actor doesn't intersect the first monitor painted then it is culled
      out for that monitor to save time. Unfortunately this would mean
      `clutter_actor_paint` was setting `is_dirty = FALSE` before the actor had
      yet been painted on any monitor.
      
      This meant that effects like `ClutterOffscreenEffect` were not receiving
      the flag `CLUTTER_EFFECT_PAINT_ACTOR_DIRTY` when they should have, and
      so would rightfully think they don't need to do a full internal
      invalidation. So `ClutterOffscreenEffect`, and probably other effects,
      did not repaint correctly unless on the first monitor in the list.
      
      The fix is to simply avoid setting `is_dirty = FALSE` on those paint
      runs where the actor has been culled out (`clutter_actor_continue_paint`
      wasn't called). It is only safe to clear the flag after
      `clutter_actor_continue_paint` has been called at least once per stage
      paint.
      
      Closes: GNOME/gnome-shell#1049
      GNOME/mutter!511
      ee507d9a
  9. 26 Mar, 2019 3 commits
  10. 25 Mar, 2019 5 commits
  11. 20 Mar, 2019 1 commit
    • Olivier Fourdan's avatar
      clutter/evdev: Fix toggling accessibility features from keyboard · 5c27bf6a
      Olivier Fourdan authored
      Enabling keyboard accessibility features on Wayland from the keyboard
      was wrongly assumed to be controlled by the "togglekeys" setting,
      whereas it should be simply controlled by the "enable" setting.
      
      As "togglekeys" is off by default and doesn't have a UI option to
      enable, that would prevent turning on or off the keyboard accessibility
      features using the keyboard.
      
      GNOME/mutter!501
      5c27bf6a
  12. 18 Mar, 2019 2 commits