1. 21 Sep, 2020 3 commits
    • Vlad Zahorodnii's avatar
      Keep unreferenced buffers around · 2b197075
      Vlad Zahorodnii authored
      One problem with delaying destruction of buffer objects is that the
      compositor may create a shadow that references defunct buffers.
      One way to fix that issue is to immediately destroy buffers. However,
      there is other way to address the issue - keep released buffers alive.
      If a buffer is kept alive by the client, then it will most likely be
      used again. It also simplifies buffer management.
      BUG: 425233
      (cherry picked from commit fcfdab06)
    • Vlad Zahorodnii's avatar
      Untangle SurfaceInterface and BufferInterface · e52842af
      Vlad Zahorodnii authored
      A wl_buffer object can be bound to multiple surfaces or none at all. So
      the BufferInterface::surface() property makes very little sense.
      (cherry picked from commit 9f814c49)
    • David Edmundson's avatar
      [DataOffer] Avoid calls on null DataSource · 49a5c156
      David Edmundson authored
      A DataOffer can slightly outlive a DataSource; a client will still be
      told it's deleted but could call a method in a race.
      DataOfferInterface correctly checks for source being still valid, but
      nothing updates it when it gets deleted.
      BUG: 396308
      (cherry picked from commit 6feeeb10)
  2. 17 Sep, 2020 3 commits
  3. 11 Sep, 2020 2 commits
  4. 05 Sep, 2020 1 commit
  5. 04 Sep, 2020 2 commits
  6. 03 Sep, 2020 4 commits
  7. 02 Sep, 2020 2 commits
  8. 27 Aug, 2020 1 commit
  9. 25 Aug, 2020 1 commit
    • David Edmundson's avatar
      Delete resources in XdgOutput teardown · 8bc82279
      David Edmundson authored
      Generated code typically cleans up resource objects when the client
      calls the relevant destructor.
      In multi-cast mode our wrapper can be deleted at any time, whilst a
      client resource exists any existing resources that have a pending
      message will then crash the compositor.
      Deleting resources ahead of time also resolves this. calls to this
      resource will no-op. The zxdg_output_v1::destroy_func will then be
      called to delete the Resource object.
  10. 23 Aug, 2020 1 commit
  11. 21 Aug, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Post an error if the client attempts to create input panel surface for surface... · 8c0d27e0
      Vlad Zahorodnii authored
      Post an error if the client attempts to create input panel surface for surface that already has role
      If a client attempts to create an input panel surface for a wl_surface
      that already has a role assigned, we must post a protocol error or else
      the behavior of the input panel surface will be undefined.
      Posting an error of 0 is not really correct, but on the other hand the
      spec has no any error enums.
  12. 20 Aug, 2020 1 commit
  13. 19 Aug, 2020 1 commit
  14. 18 Aug, 2020 2 commits
    • Vlad Zahorodnii's avatar
      Revert "Don't flush in SurfaceInterface::frameRendered()" · 8f5cc410
      Vlad Zahorodnii authored
      This reverts commit 0069d881.
      Unfortunately, 0069d881 broke a couple of tests in kwin due to Qt not
      emitting QAbstractEventDispatcher::aboutToBlock() signal when macros
      such as QTRY_VERIFY() or QTRY_COMPARE() spin the event loop.
    • Vlad Zahorodnii's avatar
      Don't flush in SurfaceInterface::frameRendered() · 0069d881
      Vlad Zahorodnii authored
      Frame callbacks only indicate when the client can start rendering a new
      frame, it's not meant to be precise. If the client wants to do some
      black magic with frame scheduling and so on, it needs to use a protocol
      such as presentation_time. This change removes the pointless flush to
      prevent over-flushing client connections.
  15. 17 Aug, 2020 1 commit
  16. 14 Aug, 2020 2 commits
    • David Edmundson's avatar
      Add a workaround to prevent klipper racing with clipboard updates · edbde063
      David Edmundson authored
      We have a situation where some clients drop their old offer before
      creating a new one. This means klipper tries to fill in the empty
      clipboard at the same time the client posts its new real contents.
      This adds in a flag (via a hidden mimetype) that klipper is trying to
      replace a null clipboard. If this flag is set and our clipboard is not
      null because the client has updated it in the meantime we ignore the
      klipper update.
      It's a workaround, rather than an ideal fix at a data level, but it
      solves the problem in the interim.
      CCBUG: 424855
    • David Edmundson's avatar
      [autotests] Cleanup DataControlInterface test · e8a43b6b
      David Edmundson authored
      The tests were not fully self-encapsulating and leaky.
  17. 06 Aug, 2020 2 commits
  18. 05 Aug, 2020 1 commit
  19. 28 Jul, 2020 9 commits