1. 17 Dec, 2018 4 commits
  2. 14 Dec, 2018 2 commits
  3. 12 Dec, 2018 2 commits
  4. 11 Dec, 2018 3 commits
  5. 29 Nov, 2018 3 commits
    • Adam Jackson's avatar
    • Lionel Landwerlin's avatar
    • Lyude Paul's avatar
      modesetting: Actually disable CRTCs in legacy mode · 7a44e8d4
      Lyude Paul authored
      Believe it or not, somehow we've never done this in legacy mode! We
      currently simply change the DPMS property on the CRTC's output's
      respective DRM connector, but this means that we're just setting the
      CRTC as inactive-not disabled. From the perspective of the kernel, this
      means that any shared resources used by the CRTC are still in use.
      
      This can cause problems for drivers that are not yet fully atomic,
      despite using the atomic helpers internally. For instance: if CRTC-1 and
      CRTC-2 are still enabled and use shared resources within the kernel (an
      MST topology, for example), and then userspace tries to go enable CRTC-3
      on the same topology this might suddenly fail if CRTC-3 needs the shared
      resources CRTC-1 and CRTC-2 are using. While I don't know of any
      situations in the mainline kernel that actually trigger this, future
      plans for reworking the atomic check of MST drivers are absolutely
      going to make this into a real issue (they already are in my WIP
      branches for the kernel).
      
      So: actually do the right thing here and disable CRTCs when they're not
      going to be used anymore, even in legacy mode.
      Signed-off-by: Lyude Paul's avatarLyude Paul <lyude@redhat.com>
      7a44e8d4
  6. 25 Nov, 2018 2 commits
  7. 19 Nov, 2018 6 commits
    • Michel Dänzer's avatar
      xwayland: Don't take buffer release queue into account for frame timer · e6cd1c9b
      Michel Dänzer authored
      The buffer release queue has two kinds of entries:
      
      * Pending async flips.
      * Completed flips waiting for their buffer to be released by the Wayland
        compositor.
      
      xwl_present_timer_callback neither completes async flips nor releases
      buffers, so the timer isn't needed for the buffer release queue.
      e6cd1c9b
    • Michel Dänzer's avatar
      xwayland: Don't need xwl_window anymore in xwl_present_queue_vblank · f5416153
      Michel Dänzer authored
      Fixes issue #12. Presumably the problem was that Present operations on
      unmapped windows were executed immediately instead of only when reaching
      the target MSC.
      f5416153
    • Michel Dänzer's avatar
      xwayland: Add xwl_present_unrealize_window · 8c953857
      Michel Dänzer authored
      When a window is unrealized, a pending frame callback may never be
      called, which could result in repeatedly freezing until the frame timer
      fires after a second.
      
      Fixes these symptoms when switching from fullscreen to windowed mode in
      sauerbraten.
      8c953857
    • Michel Dänzer's avatar
      xwayland: Replace xwl_window::present_window with ::present_flipped · 6b016d58
      Michel Dänzer authored
      There's no need to keep track of the window which last performed a
      Present flip. This fixes crashes due to the assertion in
      xwl_present_flips_stop failing. Fixes issue #10.
      
      The damage generated by a flip only needs to be ignored once, then
      xwl_window::present_flipped can be cleared. This may fix freezing in
      the (hypothetical) scenario where Present flips are performed on a
      window, followed by other drawing requests using the window as the
      destination, but nothing triggering xwl_present_flips_stop. The damage
      from the latter drawing requests would continue being ignored.
      6b016d58
    • Ray Strode's avatar
      dix: ensure work queues are cleared on reset · 8738ce85
      Ray Strode authored
      If the server resets, most client workqueues are cleaned up as the
      clients are killed.
      
      The one exception is the server's client, which is exempt from
      the killing spree.
      
      If that client has a queued work procedure active, it won't get
      cleared on reset.
      
      This commit ensures it gets cleared too.
      8738ce85
    • Samuel Thibault's avatar
      dix: do not send focus event when grab actually does not change · 364d6498
      Samuel Thibault authored
      c67f2eac ("dix: always send focus event on grab change") made dix
      always sent events when it's a NotifyGrab or NotifyUngrab, even if
      from == to, because 'from' can just come from a previous XSetInputFocus
      call.
      
      However, when an application calls XGrabKeyboard several times on
      the same window, we are now sending spurious FocusOut+FocusIn with
      NotifyGrab, even if the grab does not actually change. This makes screen
      readers for blind people spuriously emit activity events which disturb
      screen reading workflow when e.g. switching between menus.
      
      This commit avoids calling DoFocusEvents in that precise case, i.e. when
      oldWin is a previous grab and the new grab is the same window.
      Signed-off-by: Samuel Thibault's avatarSamuel Thibault <samuel.thibault@ens-lyon.org>
      Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      364d6498
  8. 14 Nov, 2018 1 commit
  9. 13 Nov, 2018 5 commits
  10. 12 Nov, 2018 2 commits
  11. 10 Nov, 2018 1 commit
  12. 06 Nov, 2018 1 commit
  13. 31 Oct, 2018 1 commit
  14. 30 Oct, 2018 1 commit
  15. 29 Oct, 2018 1 commit
  16. 25 Oct, 2018 5 commits
    • Adam Jackson's avatar
      include: Remove ___CLIENTSIGNALALL_DEFINED___ copypasta · 3297a1c8
      Adam Jackson authored
      ___CLIENTSIGNAL_DEFINED___ is a hack to work around the declaration of
      ClientSignal both in our own headers and in <X11/include/fontproto.h>,
      the latter of which is properly part of libXfont (1, only) but packaged
      in xorgproto because we have made some mistakes. ClientSignalAll needs
      no such workaround.
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      Reviewed-by: Eric Anholt's avatarEric Anholt <eric@anholt.net>
      3297a1c8
    • Adam Jackson's avatar
      include: Stop including <X11/fonts/fontproto.h> · 06f448d4
      Adam Jackson authored
      Despite being packaged in xorgproto (formerly fontsproto), fontproto.h
      is actually a list of the ABI libXfont version 1 expected of the X
      server. We switched to libXfont2 three years ago, this is unnecessary.
      Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
      Reviewed-by: Eric Anholt's avatarEric Anholt <eric@anholt.net>
      06f448d4
    • Michel Dänzer's avatar
      xwayland: Complete "synchronous" Present flips from xwl_present_msc_bump · ace551d8
      Michel Dänzer authored
      Completing them from xwl_present_sync_callback had at least two issues:
      
      * It was before the MSC was incremented in xwl_present_frame_callback,
        so the MSC value in the completion event could be lower than the
        target specified by the client. This could cause hangs with the Mesa
        Vulkan drivers.
      * It allowed clients to run at a frame-rate higher than the Wayland
        compositor's frame-rate, wasting energy on generating frames which
        were never displayed. This isn't expected to happen unless the client
        specified PresentOptionAsync (in which case flips are still completed
        from xwl_present_sync_callback, allowing higher frame-rates).
      
      v2:
      * Make xwl_present_has_events return true when there's a pending
        "synchronous" flip, so those complete after at most ~1 second even if
        the Wayland server doesn't send a frame event.
      
      Bugzilla: https://bugs.freedesktop.org/106713
      ace551d8
    • Michel Dänzer's avatar
      xwayland: Rename xwl_present_events_notify to xwl_present_msc_bump · 2bfc46d4
      Michel Dänzer authored
      And consolidate more code from xwl_present_timer_callback and
      xwl_present_frame_callback in it.
      2bfc46d4
    • Michel Dänzer's avatar
      xwayland: Use xwl_present_reset_timer in xwl_present_timer_callback · 5e8b9a3a
      Michel Dänzer authored
      Apart from simplifying the code, this should also prevent a condition
      (which might only be possible with the following fix) reported in
      wayland/weston#115 (comment 52467):
      
      1. xwl_present_timer_callback indirectly calls xwl_present_reset_timer
         -> xwl_present_free_timer
      2. xwl_present_timer_callback then returns a non-0 value, so DoTimer
         calls TimerSet with the old xwl_present_window->frame_timer pointer
         which was freed in step 1 => use after free
      
      Calling xwl_present_reset_timer explicitly passes NULL to TimerSet if
      step 1 freed xwl_present_window->frame_timer, and it will allocate a new
      one.
      5e8b9a3a