1. 03 Dec, 2019 1 commit
  2. 26 Nov, 2019 1 commit
  3. 12 Nov, 2019 1 commit
  4. 05 Nov, 2019 1 commit
  5. 04 Nov, 2019 1 commit
    • David Edmundson's avatar
      Add KDEClangFormat cmake support · 0369011c
      David Edmundson authored
      Summary:
      This allows devs to run: "make clang-format" and format all files easily
      using the preset KDE clang format style
      
      This patch adds support so devs can easily test the intended formatting
      now, it doesn't change the code yet.
      
      Doing an initial run to commit everything will happen later.
      
      Test Plan:
      Ran script
      git diff was full of amazingly cleaned code
      
      See D25134
      0369011c
  6. 01 Nov, 2019 1 commit
    • David Edmundson's avatar
      Port one of session management connections state to a custom API · ec610fd7
      David Edmundson authored
      Summary:
      Currently kwin opens a second ICE connection to ksmserver in order to
      tell the state of kwin's whether we're logging out and saving clients or
      not.
      
      This requires that kwin launches after ksmserver to have the connection
      which is a dependency I want to break.
      
      Practically this code is already ksmserver specific as it relies on some
      custom code that sends the first saveState request to kwin first.
      
      Instead we can replace it with a bespoke IPC over DBus and siplify the
      code both end. This will allow several other future enhancements that we
      want with regards to handling the session state, as well as make an
      effort platform agnostic session management, as well as cleaning up some
      complex code.
      
      Ksmserver calls into kwin, rather than having kwin watch ksmserver state
      to allow us make sure it's race free.
      
      Reviewers: #kwin, zzag
      
      Reviewed By: #kwin, zzag
      
      Subscribers: romangg, zzag, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D24862
      ec610fd7
  7. 29 Oct, 2019 2 commits
    • Jonathan Riddell's avatar
      Update version number for 5.17.2 · c42a4234
      Jonathan Riddell authored
      GIT_SILENT
      c42a4234
    • Roman Gilg's avatar
      Dmabuf recovery on EGL reset · 7459aabc
      Roman Gilg authored
      Summary:
      The EGL platform might go away at any time through reconfiguration or because
      of a graphic error. KWin then resets the graphics. The dmabuf implementation
      must respect that and recover from a graphics reset by recreating all EGL
      images for existing buffer.
      
      This assumes that we won't change our graphics API mid-session and that
      supported plane and modifier configuration stays constant.
      
      In practise we remember all current dmabufs in a single map and only remove
      them if the client did destroy the resource.
      
      BUG: 411980
      CCBUG: 413403
      FIXED-IN: 5.17.2
      
      Test Plan: Applied screenedge configuration without crash.
      
      Reviewers: #kwin, zzag
      
      Reviewed By: #kwin, zzag
      
      Subscribers: fvogt, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D24954
      7459aabc
  8. 22 Oct, 2019 1 commit
  9. 10 Oct, 2019 3 commits
  10. 25 Sep, 2019 1 commit
    • Vlad Zahorodnii's avatar
      Rename Client to X11Client · ffcbe24e
      Vlad Zahorodnii authored
      Summary:
      Currently each managed X11 client is represented with an instance of
      Client class, however the name of that class is very generic and the
      only reason why it's called that way is because historically kwin
      was created as an x11 window manager, so "Client" was a sensible choice.
      
      With introduction of wayland support, things had changed and therefore
      Client needs to be renamed to X11Client in order to better reflect what
      that class stands for.
      
      Renaming of Client to X11Client was agreed upon during the last KWin
      sprint.
      
      Test Plan: Compiles, the test suite is still green.
      
      Reviewers: #kwin, romangg
      
      Reviewed By: #kwin, romangg
      
      Subscribers: romangg, davidedmundson, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D24184
      ffcbe24e
  11. 23 Sep, 2019 1 commit
  12. 19 Sep, 2019 2 commits
  13. 18 Sep, 2019 1 commit
  14. 17 Sep, 2019 2 commits
  15. 14 Sep, 2019 1 commit
  16. 10 Sep, 2019 1 commit
  17. 08 Sep, 2019 1 commit
  18. 30 Jul, 2019 1 commit
  19. 22 Jul, 2019 1 commit
    • Vlad Zahorodnii's avatar
      Run clang-tidy with modernize-use-override check · 8af2fa73
      Vlad Zahorodnii authored
      Summary:
      Currently code base of kwin can be viewed as two pieces. One is very
      ancient, and the other one is more modern, which uses new C++ features.
      
      The main problem with the ancient code is that it was written before
      C++11 era. So, no override or final keywords, lambdas, etc.
      
      Quite recently, KDE compiler settings were changed to show a warning if
      a virtual method has missing override keyword. As you might have already
      guessed, this fired back at us because of that ancient code. We had
      about 500 new compiler warnings.
      
      A "solution" was proposed to that problem - disable -Wno-suggest-override
      and the other similar warning for clang. It's hard to call a solution
      because those warnings are disabled not only for the old code, but also
      for new. This is not what we want!
      
      The main argument for not actually fixing the problem was that git
      history will be screwed as well because of human factor. While good git
      history is a very important thing, we should not go crazy about it and
      block every change that somehow alters git history. git blame allows to
      specify starting revision for a reason.
      
      The other argument (human factor) can be easily solved by using tools
      such as clang-tidy. clang-tidy is a clang-based linter for C++. It can
      be used for various things, e.g. fixing coding style(e.g. add missing
      braces to if statements, readability-braces-around-statements check),
      or in our case add missing override keywords.
      
      Test Plan: Compiles.
      
      Reviewers: #kwin, davidedmundson
      
      Reviewed By: #kwin, davidedmundson
      
      Subscribers: davidedmundson, apol, romangg, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D22371
      8af2fa73
  20. 09 Jul, 2019 2 commits
  21. 25 Jun, 2019 1 commit
  22. 23 Jun, 2019 1 commit
    • David Edmundson's avatar
      Close screen grabbing effect when screensaver starts · 3604aaf7
      David Edmundson authored
      Summary:
      The screenlock fails on X11 if it can't grab the keyboard.
      
      We can't nicely solve the generic case. We can solve the common case of
      a kwin effect being active.
      
      It's not critical, arguably not even desirable to have these effects
      persist after the screen is locked through an external trigger. We can
      just close the effect early.
      
      Key grabs have to be relased early before the close animation completes
      so that the locker doesn't have a race based on animation times.
      
      It's not ideal, but no worse than the current state for not much work.
      
      BUG: 234153
      
      Test Plan:
      locked screen on a timer
      opened various effects
      
      Reviewers: #kwin, zzag
      
      Reviewed By: #kwin, zzag
      
      Subscribers: ngraham, zzag, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D20890
      3604aaf7
  23. 18 Jun, 2019 1 commit
  24. 13 Jun, 2019 1 commit
    • Roman Gilg's avatar
      [platforms/x11/standalone] Port to AbstractOutput · 1a11abc8
      Roman Gilg authored
      Summary:
      Represent outputs in the X11 session via AbstractOutput. For that we
      move all Wayland specific parts of AbstractOutput into a new subclass
      AbstractWaylandOutput and let the outputs of our Wayland backends inherit
      from there.
      
      This should allow us to get rid of the Screens class later on.
      
      Test Plan: Manually in X session.
      
      Reviewers: #kwin, zzag, davidedmundson
      
      Reviewed By: #kwin, zzag, davidedmundson
      
      Subscribers: ngraham, zzag, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D19208
      1a11abc8
  25. 06 Jun, 2019 1 commit
  26. 16 May, 2019 3 commits
  27. 09 May, 2019 1 commit
  28. 24 Apr, 2019 1 commit
  29. 15 Apr, 2019 1 commit
    • Erik Kurzinger's avatar
      [platforms/drm] EGLStream DRM Backend Initial Implementation · c898f96d
      Erik Kurzinger authored
      Summary:
      This is the initial implementation of a DRM backend based on the EGLDevice,
      EGLOutput, and EGLStream extensions, supporting NVIDIA graphics hardware using
      their proprietary driver. The new backend will be used if the environment
      variable KWIN_DRM_USE_EGL_STREAMS is set. On initialization, it will attempt to
      create an EGLDevice based on the DRM device currently in use and create
      EGLOutputs and EGLStreams for any attached displays. These are used to control
      presentation of the final composited frame. Additionally, it will register the
      wl_eglstream_controller Wayland interface so that native EGL windows created by
      clients can be attached to an EGLStream allowing buffer contents to be shared
      with the compositor as a GL texture.
      
      At this time there are two known bugs in the NVIDIA driver's EGL implementation
      affecting desktop functionality. The first can result in tooltip windows drawn
      by plasmashell to contain incorrect contents. The second prevents KWayland from
      being able to query the format of EGLStream-backed buffers which interferes
      with the blur effect. Fixes for both of these are currently in development and
      should appear in an upcoming NVIDIA driver release.
      
      Additionally, hardware cursors are currently not supported with this backend.
      Enabling them causes the desktop to intermittently hang for several seconds.
      This is also likely a bug in the NVIDIA DRM-KMS implementation but the root
      cause is still under investigation.
      
      Test Plan:
      On a system with an NVIDIA graphics card running a recent release of their
      proprietary driver
      
          * Ensure the nvidia_drm kernel module is loaded with the option "modeset=1"
            ("# cat /sys/module/nvidia_drm/parameters/modeset" should print "Y")
          * Ensure EGL external platform support is installed
            https://github.com/NVIDIA/eglexternalplatform
          * Ensure KWin was build with the CMake option
            KWIN_BUILD_EGL_STREAM_BACKEND=ON (this is the default)
          * Start a plasma wayland session with the environment variable
            KWIN_DRM_USE_EGL_STREAMS set
          * Ensure output from KWin OpenGL initialization indicates the NVIDIA EGL
            driver is in use (as opposed to Mesa / llvmpipe).
          * Desktop should be fully functional and perform smoothly.
      
      Reviewers: #kwin, romangg, davidedmundson
      
      Reviewed By: #kwin, romangg, davidedmundson
      
      Subscribers: kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D18570
      c898f96d
  30. 02 Apr, 2019 1 commit
  31. 25 Mar, 2019 1 commit
  32. 12 Mar, 2019 1 commit