1. 18 Dec, 2019 9 commits
  2. 13 Dec, 2019 1 commit
  3. 11 Dec, 2019 3 commits
  4. 10 Dec, 2019 1 commit
    • Jonas Ådahl's avatar
      xwayland: Don't queue frame callbacks when role assigned · 4fccc903
      Jonas Ådahl authored
      'xwayland: Do not queue frame callbacks unconditionally' changed the
      frame callback behavior of Xwayland surfaces so that they behave the
      same way as other actor surfaces (e.g. xdg-shell ones), except for the
      case when they are initially assigned.
      
      Remove this special casing as well including the now incorrect comment,
      so that the Xwayland surfaces behave the same as the others in this
      regard also when assigning.
      
      GNOME/mutter!964
      4fccc903
  5. 09 Dec, 2019 14 commits
  6. 06 Dec, 2019 3 commits
    • Tim Crawford's avatar
      backends/native: Fix double free of error · d70ddc65
      Tim Crawford authored
      error is an autoptr, so must not be explicitly freed.
      
      Fixes: GNOME/gnome-shell#1852
      Fixes: 5c500ad4 ("backend: Move GPU ownership from the monitor manager to the backend")
      
      GNOME/mutter!960
      d70ddc65
    • Pekka Paalanen's avatar
      kms-impl/simple: Fix meta_set_fallback_feedback_idle · 832a522c
      Pekka Paalanen authored
      Presumably this function is supposed to be like
      meta_kms_impl_simple_handle_page_flip_callback() but the condition in the
      if-statement is inverted. Fix the inversion to make these two functions look
      alike.
      
      This is part 2 of 2 fixing a complete desktop freeze when drmModePageFlip()
      fails with EINVAL and the fallback to drmModeSetCrtc() succeeds but the success
      is not registered correctly as completed "flip". The freeze occurs under
      wait_for_pending_flips() which calls down into meta_kms_impl_device_dispatch()
      which ends up poll()'ing the DRM fd even though drmModeSetCrtc() will not
      produce a DRM event, hence the poll() never returns. The freeze was observed
      when hotplugging a DisplayLink dock for the first time on Ubuntu 19.10.
      
      This patch makes meta_set_fallback_feedback_idle() actually end up calling into
      notify_view_crtc_presented() which decrements
      secondary_gpu_state->pending_flips so that wait_for_pending_flips() can finish.
      
      CC stable: gnome-3-34
      
      GNOME/mutter!953
      832a522c
    • Pekka Paalanen's avatar
      kms: Process impl idle callbacks before pre dispatch flush · 79491df2
      Pekka Paalanen authored
      mode_set_fallback() schedules a call to mode_set_fallback_feedback_idle(), but
      it is possible for Mutter to repaint before the idle callbacks are dispatched.
      If that happens, mode_set_fallback_feedback_idle() does not get called before
      Mutter enters wait_for_pending_flips(), leading to a deadlock.
      
      Add the needed interfaces so that meta_kms_device_dispatch_sync() can flush all
      the implementation idle callbacks before it checks if any "events" are
      available. This prevents the deadlock by ensuring
      mode_set_fallback_feedback_idle() does get called before potentially waiting
      for actual DRM events.
      
      Presumably this call would not be needed if the implementation was running in
      its own thread, since it would eventually dispatch its idle callbacks before
      going to sleep polling on the DRM fd. This call might even be unnecessary
      overhead in that case, synchronizing with the implementation thread needlessly.
      But the thread does not exist yet, so this is needed for now.
      
      This is part 1 of 2 fixing a complete desktop freeze when drmModePageFlip()
      fails with EINVAL and the fallback to drmModeSetCrtc() succeeds but the success
      is not registered correctly as completed "flip". The freeze occurs under
      wait_for_pending_flips() which calls down into meta_kms_impl_device_dispatch()
      which ends up poll()'ing the DRM fd even though drmModeSetCrtc() will not
      produce a DRM event, hence the poll() never returns. The freeze was observed
      when hotplugging a DisplayLink dock for the first time on Ubuntu 19.10.
      
      CC stable: gnome-3-34
      
      GNOME/mutter!953
      79491df2
  7. 05 Dec, 2019 1 commit
  8. 04 Dec, 2019 1 commit
  9. 03 Dec, 2019 7 commits