1. 18 Sep, 2017 3 commits
  2. 17 Sep, 2017 1 commit
  3. 16 Sep, 2017 3 commits
  4. 15 Sep, 2017 1 commit
  5. 14 Sep, 2017 2 commits
  6. 13 Sep, 2017 1 commit
  7. 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
  8. 11 Sep, 2017 1 commit
  9. 10 Sep, 2017 2 commits
  10. 09 Sep, 2017 1 commit
  11. 08 Sep, 2017 1 commit
  12. 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
  13. 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
  14. 05 Sep, 2017 1 commit
  15. 04 Sep, 2017 1 commit
  16. 03 Sep, 2017 1 commit
  17. 02 Sep, 2017 1 commit
  18. 01 Sep, 2017 7 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
    • Martin Flöser's avatar
      Move the X11 Decoration Renderer into the X11 standalone platform · 23ef40e6
      Martin Flöser authored
      Summary:
      Not needed except for X11/non-composited usage, so should be in the
      plugin instead of core.
      
      Platform API is extended to create a decoration renderer.
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D7444
      23ef40e6
    • Martin Flöser's avatar
      Move QPainter compositor into plugin · 535b1079
      Martin Flöser authored
      This change is similar to D7232 and moves the scene_qpainter into a
      dedicated plugin. Compared to the XRender case it's more complicated as
      the platform plugins need to implement a platform specific backend.
      
      The base implementation for this part used to be in scene_qpainter. As
      the idea is to completly move it away from KWin core it would be point
      less to still have the backend definition in KWin core, but it cannot
      be in the scene plugin as otherwise all platforms need to link the
      plugin.
      
      To solve this a new platformsupport subdirectory is added which contains
      the scene platform backend as a static library. For the OpenGL scene such
      a static library will also be required.
      
      Test Plan: SceneQPainter test still passes, nested compositor still works
      
      Reviewers: #kwin, #plasma
      
      Subscribers: plasma-devel
      
      Tags: #plasma
      
      Differential Revision: https://phabricator.kde.org/D7259
      535b1079