1. 05 Apr, 2021 1 commit
  2. 01 Apr, 2021 2 commits
  3. 31 Mar, 2021 2 commits
  4. 23 Mar, 2021 3 commits
  5. 22 Mar, 2021 1 commit
    • Xaver Hugl's avatar
      Refactor DRM presentation · a8055e45
      Xaver Hugl authored
      Presentation doesn't have to go through DrmBackend and by moving
      DrmGpu::deleteBufferAfterPageflip into DrmBuffer some code can be
  6. 04 Mar, 2021 1 commit
  7. 02 Mar, 2021 1 commit
    • Xaver Hugl's avatar
      Improvements for direct scanout · 7cc95d93
      Xaver Hugl authored
      Instead of cancelling direct scanout if the client buffer is not
      fitting, adjust the atomic planes. Also ignore all toplevels from
      other screens.
  8. 22 Feb, 2021 1 commit
  9. 15 Feb, 2021 1 commit
  10. 10 Feb, 2021 1 commit
    • Vlad Zahorodnii's avatar
      Move source code to src/ directory · 93e0265e
      Vlad Zahorodnii authored
      Once in a while, we receive complaints from other fellow KDE developers
      about the file organization of kwin. This change addresses some of those
      complaints by moving all of source code in a separate directory, src/,
      thus making the project structure more traditional. Things such as tests
      are kept in their own toplevel directories.
      This change may wreak havoc on merge requests that add new files to kwin,
      but if a patch modifies an already existing file, git should be smart
      enough to figure out that the file has been relocated.
      We may potentially split the src/ directory further to make navigating
      the source code easier, but hopefully this is good enough already.
  11. 06 Jan, 2021 1 commit
    • Vlad Zahorodnii's avatar
      Introduce RenderLoop · b8a70e62
      Vlad Zahorodnii authored
      At the moment, our frame scheduling infrastructure is still heavily
      based on Xinerama-style rendering. Specifically, we assume that painting
      is driven by a single timer, etc.
      This change introduces a new type - RenderLoop. Its main purpose is to
      drive compositing on a specific output, or in case of X11, on the
      overlay window.
      With RenderLoop, compositing is synchronized to vblank events. It
      exposes the last and the next estimated presentation timestamp. The
      expected presentation timestamp can be used by effects to ensure that
      animations are synchronized with the upcoming vblank event.
      On Wayland, every outputs has its own render loop. On X11, per screen
      rendering is not possible, therefore the platform exposes the render
      loop for the overlay window. Ideally, the Scene has to expose the
      RenderLoop, but as the first step towards better compositing scheduling
      it's good as is for the time being.
      The RenderLoop tries to minimize the latency by delaying compositing as
      close as possible to the next vblank event. One tricky thing about it is
      that if compositing is too close to the next vblank event, animations
      may become a little bit choppy. However, increasing the latency reduces
      the choppiness.
      Given that, there is no any "silver bullet" solution for the choppiness
      issue, a new option has been added in the Compositing KCM to specify the
      amount of latency. By default, it's "Medium," but if a user is not
      satisfied with the upstream default, they can tweak it.
  12. 21 Dec, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Drop Platform::createScreens() · 6adfe306
      Vlad Zahorodnii authored
      Since the Screens class is a convenience wrapper around AbstractOutput
      objects that come from the Platform, it should not be platform-specific.
      By dropping createScreens(), output-related code becomes simpler.
  13. 17 Dec, 2020 1 commit
  14. 15 Dec, 2020 1 commit
  15. 28 Nov, 2020 1 commit
  16. 29 Oct, 2020 3 commits
    • Aleix Pol Gonzalez's avatar
      Do not re-read output configuration if the outputs didn't change · e0c965d3
      Aleix Pol Gonzalez authored and Aleix Pol Gonzalez's avatar Aleix Pol Gonzalez committed
      They would override KScreen in case we were using a dock station that
      brings 2 displays.
      We'd get:
      - udev: event for the first hotplughed screen
      - kwin: process all screens properly (both)
      - kscreen: would offer the right configuration for such displays
      - udev: process the event for the second hotplug udev event
      - kwin: restore the configuration
      - kscreen: would think this is a conscious decision and embrace it as a
      With this change we are only re-reading the configuration in case the
      outputs changed.
    • Aleix Pol Gonzalez's avatar
      wayland: Make sure EDID are being fed to wayland outputs · f9becf80
      Aleix Pol Gonzalez authored and Aleix Pol Gonzalez's avatar Aleix Pol Gonzalez committed
      At the moment, despite the protocol supporting it, we were not feeding
      the EDIDs. KScreen was falling back to the output name so it didn't fail
      horribly but it's still a good idea to provide all the data.
    • Vlad Zahorodnii's avatar
      platforms/drm: Use a software cursor if the cursor image is too big · 54427623
      Vlad Zahorodnii authored
      When dragging files on the desktop, the cursor image might be just too
      big for the cursor plane, in which case we need to abandon hardware
      cursors for a brief moment and use a software cursor. Once the files
      have been dropped and the cursor image is small enough, we can go back
      to using hw cursors.
      BUG: 424589
  17. 28 Oct, 2020 1 commit
  18. 27 Oct, 2020 2 commits
    • Vlad Zahorodnii's avatar
      platforms/drm: Hide sw cursor if there is no pointer · b53d195f
      Vlad Zahorodnii authored
      Currently, if there is no pointer, only the hardware cursor will be
      hidden. If the software cursor is forced, you are going to see a dead
      immovable cursor.
    • Vlad Zahorodnii's avatar
      platform/drm: Fix clipped HiDPI hardware cursors · c8eeefbd
      Vlad Zahorodnii authored
      If an output is rotated, we will compute a transform matrix for the
      cursor plane to rotate its contents.
      In order to compute that matrix we need the rect of the cursor in the
      device-independent pixels, the scale factor and the output transform.
      The problem is that we provide a rect of the cursor in the native
      pixels. This may result in the cursor being partially or fully clipped.
      CCBUG: 424589
  19. 25 Oct, 2020 1 commit
  20. 23 Oct, 2020 1 commit
  21. 16 Oct, 2020 3 commits
  22. 05 Oct, 2020 1 commit
  23. 19 Aug, 2020 1 commit
  24. 07 Aug, 2020 2 commits
    • Vlad Zahorodnii's avatar
      Prettify license headers · 4ce853e8
      Vlad Zahorodnii authored
    • Vlad Zahorodnii's avatar
      Switch to SPDX license markers · 1fb9f6f1
      Vlad Zahorodnii authored
      The main advantage of SPDX license identifiers over the traditional
      license headers is that it's more difficult to overlook inappropriate
      licenses for kwin, for example GPL 3. We also don't have to copy a
      lot of boilerplate text.
      In order to create this change, I ran licensedigger -r -c from the
      toplevel source directory.
  25. 06 Aug, 2020 1 commit
  26. 27 Jul, 2020 2 commits
  27. 27 May, 2020 1 commit
  28. 26 May, 2020 2 commits