1. 04 Oct, 2017 1 commit
    • Hartmut Goebel's avatar
      Fix: Missing dependencies for kwin autotests · 5e7b3c6c
      Hartmut Goebel authored
      guix (like nix) used a separate prefix for each package. Thus the header
      files for
      qtdeclarative are in /gnu/store/…-qtdeclarative-5.9.1/include/qt5/ while
      the ones for
      qtbase are in /gnu/store/…-base-5.9.1/include/qt5/. This means that
      *each* dependency's include directory must be specified. This is in
      contrast to a "normal" Unix-system, where all includes end up in
      /usr/include/qt5 and missing to defined some include-dependencies does
      often not raise an error.
      
      Differential Revision: https://phabricator.kde.org/D8112
      5e7b3c6c
  2. 02 Oct, 2017 1 commit
  3. 01 Oct, 2017 1 commit
  4. 29 Sep, 2017 2 commits
    • David Edmundson's avatar
      Don't recreate kwayland blurmanager on screen size changes · b3020d6f
      David Edmundson authored
      Summary:
      Instead of calling reconfigure() on screen size changes, which deletes
      and recreates the effect, we can just update the one texture that's mapped to
      the screen size.
      
      ---
      
      From the wayland commit.
      
      >What surprises me is that BlurManager recreates for Output changes.
      >That sounds like a bug in KWin (or an area which could be improved).
      
      I had thought the same and wrote this (though wanted to have kwayland fixed first)
      
      Test Plan:
      Logged in and out (my screen resizes on startup due to scaling)
      Tested on my X machine by turning a screen off. Nothing broke, plasma
      panels looked the same.
      
      Note: Eike tried this patch last week and claimed kwin still crashed.
      We don't have a backtrace so it could have been something unrelated,
      applied wrong or that he was deliberately lying to wind me up.
      
      Reviewers: #plasma, graesslin
      
      Reviewed By: #plasma, graesslin
      
      Subscribers: graesslin, plasma-devel, kwin, #kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7877
      b3020d6f
    • David Edmundson's avatar
      Don't reload background contrast effect on screen resize · 55d21942
      David Edmundson authored
      Summary:
      Similar to the Blur patch. Arguably rven less reason as this doesn't
      have a texture the size of the workspace.
      
      We don't need to delete and recreate the entire effect every time the
      screen changes; This deletes the wayland global which causes quite a bit
      of extra work for the clients.
      
      Test Plan:
      Changed resolution under X, and scale under wayland
      Panel looked the same and nothing exploded
      
      Reviewers: #plasma, graesslin
      
      Reviewed By: #plasma, graesslin
      
      Subscribers: graesslin, plasma-devel, kwin, #kwin
      
      Tags: #plasma
      
      Differential Revision: https://phabricator.kde.org/D7937
      55d21942
  5. 26 Sep, 2017 1 commit
    • Martin Flöser's avatar
      [tabbox] Create X11Filter on establishKeyboardGrab · bc88f847
      Martin Flöser authored
      Summary:
      Creating the X11Filter directly on startup caused a regression as the
      filter got too early in the chain and stole events from the
      XInputIntegrationFilter. We don't need the filter all the time, but only
      when we have established the TabBox grab. Likewise we can destroy the
      filter again when releasing the TabBox grab. So it's much more
      encapsulated now.
      
      BUG: 385032
      
      Test Plan: Only compile tested, I'm on Wayland
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7997
      bc88f847
  6. 24 Sep, 2017 1 commit
  7. 23 Sep, 2017 1 commit
    • Martin Flöser's avatar
      Properly update the visible (icon) name when the caption changes · ab7b6757
      Martin Flöser authored
      Summary:
      It was possible that we performed an early exit when the caption changes
      and this results in the visible name being wrong. E.g if we have two
      windows called foo, the second one has the visible name "foo <2>". After
      changing that to "bar" the bug resulted in it still being the foo
      variant instead of getting cleared.
      
      BUG: 384760
      FIXED-IN: 5.11.0
      
      Test Plan: Created new test case exposing the problem
      
      Reviewers: #kwin, #plasma, hein
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7871
      ab7b6757
  8. 20 Sep, 2017 2 commits
    • David Edmundson's avatar
      Make sure OpenGL Context is valid before deleting shader · 1783fda3
      David Edmundson authored
      Summary:
      Deleting the lanczos filter deletes it's GLShader, this calls
      glDeleteProgram
      
      glFooBar always needs to have an openGL context, we don't know we have
      this on a screen changed event as it is called from outside the normal
      render methods.
      
      BUG: 384884
      
      Test Plan:
      Ran on my wayland session. Switched geometry a lot, couldn't reproduce the crash.
      Ran on my desktop session, seemed the same as before
      
      Reviewers: #plasma, graesslin
      
      Reviewed By: #plasma, graesslin
      
      Subscribers: graesslin, plasma-devel, kwin, #kwin
      
      Tags: #plasma
      
      Differential Revision: https://phabricator.kde.org/D7888
      1783fda3
    • Script Kiddy's avatar
      SVN_SILENT made messages (.desktop file) - always resolve ours · 8cf01bb0
      Script Kiddy authored
      In case of conflict in i18n, keep the version of the branch "ours"
      To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
      8cf01bb0
  9. 18 Sep, 2017 1 commit
    • David Edmundson's avatar
      Don't scale cursor hotspot differently to cursor · 4238218b
      David Edmundson authored
      Summary:
      In the DRM plugin the cursor is currently is drawn at the native size
      given.
      Therefore we don't want to scale the icon offset as that leads to it
      being drawn every so slightly off-sync.
      
      BUG: 384769
      Fixed-in: 5.11.0
      
      Test Plan:
      Kate now selects lines based on the middle of the cursor, not the top left.
      I'd previously gotten so used to it, I hadn't realised it was actually a bug  :/
      
      Reviewers: #plasma, graesslin
      
      Reviewed By: #plasma, graesslin
      
      Subscribers: plasma-devel, kwin, #kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7868
      4238218b
  10. 16 Sep, 2017 1 commit
  11. 13 Sep, 2017 1 commit
  12. 12 Sep, 2017 6 commits
    • Martin Flöser's avatar
      Try fixing build failure on CI · a9270f42
      Martin Flöser authored
      No idea why the code compiles on my system. This change is based on the
      output on build.kde.org.
      
      CMakeFiles/testXRandRScreens.dir/__/plugins/platforms/x11/standalone/screens_xrandr.cpp.o:
      In function `KWin::XRandRScreens::event(xcb_generic_event_t*)':
      /home/jenkins/workspace/Plasma kwin kf5-qt5 SUSEQt5.9/plugins/platforms/x11/standalone/screens_xrandr.cpp:210:
      undefined reference to `KWin::Options::currentRefreshRate()'
      ...
      a9270f42
    • Heiko Becker's avatar
      CMake 3.1 is the actually required version · 10381b10
      Heiko Becker authored
      Summary:
      CXX_STANDARD is only available since 3.1.
      $ git show 913394af2: cmTarget: Add CXX_STANDARD and CXX_EXTENSION...
      $ git tag --contains 913394af2 | head -n: v3.1.0
      
      3.1 also has CMakePackageConfigHelpers (available since 3.0),
      allowing to drop ECMPackageConfigHelpers (it actually fixes a CMake
      warning when requiring >=3.0).
      
      Furthermore move cmake_minimum_required(VERSION 3.1 FATAL_ERROR) to
      the top of CMakeLists.txt like suggested by CMake's documentation.
      
      Test Plan: cmake .. & ninja
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7784
      10381b10
    • Martin Flöser's avatar
      [effects] Support xcbConnectionChanged for support properties · 90e77a93
      Martin Flöser authored
      Summary:
      Several effects announce a support property atom on the root window. This
      change forwards the KWin::Application's signal that the xcbConnection
      changed to the EffectsHandler so that the effects can respond to it.
      
      All effects which announce a support property connect to this new signal
      and re-announce the property. In case the xcb connection died (future
      XWayland crashing case) it is set to XCB_ATOM_NONE by that. In case the
      xcb connection got created (future delayed XWayland startup) the atom is
      set to the proper value.
      
      In addition all usages of the support properties are guarded, so that no
      nonesense actions are performed if the support property is XCB_ATOM_NONE.
      
      Test Plan: Only compile tested as we don't have XFree KWin yet
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7761
      90e77a93
    • Martin Flöser's avatar
      Move XRandR event filter into XRandRScreens · 4fa41165
      Martin Flöser authored
      Summary:
      The code in events.cpp was problematic as it was called in a Wayland
      session. So KWin changed outputs, this gets mirrored to XWayland and
      then KWin reacted on the XRandR event and might have even changed the
      refresh rate due to that - bad idea.
      
      This change moves the code into the already existing X11EventFilter for
      XRandR events in XRandRScreens.
      
      Test Plan: Run kwin_x11 in gdb on Xephyr, breakpoint in new code and triggered XRandR event
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7654
      4fa41165
    • Martin Flöser's avatar
      Add virtual method to Scene to get the EGL/GLX extensions · 8015e4e8
      Martin Flöser authored
      Summary:
      We had a few places (e.g. DebugConsole, Platform) where the Scene was
      cased into a SceneOpenGL to access the backend and get the extensions.
      
      This change simplifies that by adding a virtual method to Scene directly
      which is implemented in SceneOpenGL and returns the backend's
      extensions.
      
      Thus the casts to SceneOpenGL are no longer required.
      
      Test Plan:
      Opened debug console to verify extensions are listed,
      triggered Outline to verify the sharing QPA context gets created.
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7734
      8015e4e8
    • Script Kiddy's avatar
      SVN_SILENT made messages (.desktop file) - always resolve ours · 23eaed2f
      Script Kiddy authored
      In case of conflict in i18n, keep the version of the branch "ours"
      To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
      23eaed2f
  13. 11 Sep, 2017 1 commit
  14. 10 Sep, 2017 2 commits
  15. 09 Sep, 2017 1 commit
  16. 08 Sep, 2017 1 commit
  17. 07 Sep, 2017 5 commits
    • Martin Flöser's avatar
      Make AbstractEglBackend a QObject · 01ddbe7d
      Martin Flöser authored
      Summary:
      Several of the subclasses are already derived from QObject.
      
      The main reason is that the class should be moved out of KWin core in
      order to move the OpenGL scene into a plugin. As Compositor calls into
      the AbstractEglBackend to unbind the wayland display this creates a
      problem which is easily solved by turning the AbstractEglBackend into a
      QObject and connect to the signal emitted by the Compositor.
      
      Test Plan: Compiles
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7669
      01ddbe7d
    • Martin Flöser's avatar
      Pass EGL information from AbstractEglBackend to Platform instead of query · 9381411b
      Martin Flöser authored
      Summary:
      So far the Platform performed a deep query into the AbstractEglBackend
      to get information such as EGLContext, EGLConfig, EGLSurface. This
      change adjusts this so that the AbstractEGLPlatform forwards it directly
      whenever it gets informed about one following the approach already used
      for EGLDisplay. This simplifies the code a lot and allows to remove the
      dependency on the actual scene backend from the Platform (in order to
      split out the SceneOpenGL into a plugin).
      
      Test Plan:
      Run nested kwin_wayland, triggered Outline which requires all
      those methods.
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7698
      9381411b
    • Martin Flöser's avatar
      [tabbox] Properly check whether two windows belong to same application · 5d9027b1
      Martin Flöser authored
      Summary:
      TabBox implemented a custom way to check whether two windows belong to
      the same application. KWin internally has API for that which does it
      better, in a standardized way and even across windowing system.
      
      This change uses the internal API, resulting in the check working better
      on X11 and starts to work on Wayland.
      
      Test Plan: Verified Alt+` with Wayland windows
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7713
      5d9027b1
    • Martin Flöser's avatar
      Delay syncing internal window geometry to end of cycle · e0f95fd9
      Martin Flöser authored
      Summary:
      The syncing of the window geometry to the internal geometry can
      unfortunately cause a freeze in very special conditions:
      1. create QML component
      2. a Plasma::Dialog gets created
      3. It creates the DialogShadows
      4. This triggers QGlobalStatic creation which locks a non-recursive
      mutex
      5. The creation of DialogShadows creates a Registry and triggers a
      roundtrip on the Wayland server
      6. KWin processes all Wayland events
      7. This triggers the creation of a ShellClient
      8. The ShellClient has a PlasmaShellSurface which requested a position
      9. The new geometry does not match the geometry of the Plasma::Dialog
      10. ShellClient syncs the geometry to the Plasma::Dialog
      11. Plasma::Dialog updates the theme because window geometry changed
      12. This accesses the DialogShadows...
      
      which is still in the non recursive mutex and we have a freeze.
      
      By delaying the sync to the end of cycle we jump out of this deadly
      sequence.
      
      BUG: 384441
      
      Test Plan:
      The freeze doesn't hit any more. It's possible that some test
      cases need adjustments.
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7712
      e0f95fd9
    • Bhushan Shah's avatar
      [platforms/hwcomposer] Include the android-config.h in the hwcomposer_backend · d1e0c6f9
      Bhushan Shah authored
      Summary:
      This special file[1] can contain the defines like QTI_BSP and QCOM_BSP
      which then modifies the API/ABI of the hwcomposer[2].
      
      This defines are required in order to make kwin_wayland work on !nexus
      QCOM devices and also possibly other special devices.
      
      [1] https://github.com/Halium/android-headers/blob/master/android-config.h
      [2] https://github.com/Halium/android-headers/blob/halium-7.1/hardware/hwcomposer.h#L290
      
      Test Plan: built kwin locally on such device
      
      Reviewers: #kwin, davidedmundson
      
      Reviewed By: davidedmundson
      
      Subscribers: kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7719
      d1e0c6f9
  18. 06 Sep, 2017 2 commits
    • Martin Flöser's avatar
      Protect readProperty and deleteProperty in case of no X11 · 4db4fa42
      Martin Flöser authored
      Summary:
      Read(Window)Property and deleteProperty should only operate if there is
      an X11 connection available.
      
      In addition the methods are changed to the x11 wrappers provided on the
      KWin::Application as that one can support restarting XWayland in opposite
      to the global methods.
      
      Test Plan: Compiles
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7651
      4db4fa42
    • Martin Flöser's avatar
      Drop XRandR dependency from Options's currentRefreshRate · 536739f0
      Martin Flöser authored
      Summary:
      This code branch was dead. It was for the case that the number of screens
      is 0, but KWin::Screens never has a count of zero, especially not the
      XRandR based screens (c.f. screens_xrandr.cpp method ::update) which has
      a fallback handling setting the count to always 1 if there are no screens.
      
      Test Plan: Compiles
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7650
      536739f0
  19. 05 Sep, 2017 1 commit
  20. 04 Sep, 2017 1 commit
  21. 03 Sep, 2017 1 commit
  22. 02 Sep, 2017 1 commit
  23. 01 Sep, 2017 5 commits
    • Martin Flöser's avatar
      Deprecate global KWin::displayWidth and KWin::displayHeight · 20e22ec2
      Martin Flöser authored
      Actually they could go directly as nothing in KWin uses them anymore.
      But there are more functions in kwinglobal which need to go as they
      don't support restarting XWayland. So instead of breaking internal ABI
      several times, just deprecate till everything is prepared.
      20e22ec2
    • Martin Flöser's avatar
      Fix Platform::createDecorationRenderer · 6168638c
      Martin Flöser authored
      Was missing a return and due to that the decoration renderer never
      got added to the Decoration.
      
      Thanks to code coverage reports on build.kde.org! They showed me that
      something must have went wrong with the commit series.
      6168638c
    • Martin Flöser's avatar
      Create SyncManager only when using X11 · 3e0e2620
      Martin Flöser authored
      Summary:
      The SyncManager is highly X11 dependent and doesn't make much sense on
      Wayland. It should already be guarded by the check for
      GL_EXT_x11_sync_object, but better be safe than sorry, so explicit check
      for on X11.
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7514
      3e0e2620
    • Martin Flöser's avatar
      Do not hard runtime depend on X11 in composite startup · 2892fad5
      Martin Flöser authored
      Summary:
      The compositor needs to claim the X11 compositor selection and redirect
      the X11 windows. This of course only makes sense when having X11 support.
      
      This change refactors the code so that if X11 support is missing the code
      is not executed, but as soon as X11 support comes available the selection
      gets claimed.
      
      Also if the connection goes away the selection is deleted, though it
      might be that this does not work as KSelectionOwner might call into xcb
      and cause a crash. This needs to be tested once we start supporting
      XWayland going away.
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7504
      2892fad5
    • Martin Flöser's avatar
      Move screen inversion through XRandr into X11 standalone platform · 51561052
      Martin Flöser authored
      Summary:
      By moving the functionality into the Platform API we can also implement
      support on other platforms which support this in general (e.g. DRM once
      Roman's color adjustment patches landed).
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel
      
      Tags: #plasma
      
      Differential Revision: https://phabricator.kde.org/D7447
      51561052