- 12 Sep, 2017 4 commits
-
-
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
-
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
-
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
-
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"
-
- 11 Sep, 2017 1 commit
-
-
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"
-
- 10 Sep, 2017 2 commits
-
-
Martin Flöser authored
Summary: The RuleBook is created during Workspace startup, so it's a required component for the overall KWin session. It uses a KXMessages object which means it has a hard X11 runtime dependency. This change makes the dependency optional and creates the KXMessages once X11 is available. Test Plan: Compiles Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7653
-
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"
-
- 09 Sep, 2017 1 commit
-
-
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"
-
- 08 Sep, 2017 1 commit
-
-
Martin Flöser authored
Not really needed, instead we can compare on the compositing type.
-
- 07 Sep, 2017 5 commits
-
-
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
-
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
-
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
-
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
-
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
-
- 06 Sep, 2017 2 commits
-
-
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
-
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
-
- 05 Sep, 2017 1 commit
-
-
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"
-
- 04 Sep, 2017 1 commit
-
-
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"
-
- 03 Sep, 2017 1 commit
-
-
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"
-
- 02 Sep, 2017 1 commit
-
-
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"
-
- 01 Sep, 2017 19 commits
-
-
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.
-
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.
-
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
-
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
-
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
-
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
-
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
-
Martin Flöser authored
Needed by testing of QPainter scene to access the back buffer. Exposed as a virtual method in Scene, so that the test does not have to cast to SceneQPainter.
-
Martin Flöser authored
-
Martin Flöser authored
Summary: First step for loading the compositor Scenes through plugins. The general idea is that we currently needlessly pull in all the Scenes although only one will be used. E.g. on X11 we pull in QPainter, although they are not compatible. On Wayland we pull in XRender although they are not compatible. Furthermore our current Scene creation strategy is not really fault tolerant and can create situations where we don't get a compositor. E.g on fbdev backend the default settings won't work as it does not support OpenGL. Long term I want to tackle those conceptional problems together: we try to load all plugins supported by the current platform till we have a scene which works. Thus on Wayland we don't end up in a situation where we don't have a working compositor because the configuration is bad. To make this possible the switch statement in the Scene needs to go and needs to be replaced by a for loop iterating over all the available scenes on the platform. If we go there it makes sense to replace it directly with a plugin based approach. So this is a change which tackles the problem by first introducing the plugin loading. The xrender based scene (as it's the most simple one) is moved into a plugin. It is first tried to find a scene plugin and only if there is none the existing code is used. Test Plan: Tested all scenes Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7232
-
Martin Flöser authored
Summary: KWin::displayWidth and KWin::displayHeight are bound to X11 which doesn't make much sense on X11. In addition KWin internally knows the overall display dimensions through the Screens singleton class. Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D1798
-
Martin Flöser authored
Summary: Creating the OutlineVisual is moved into the Platform API. The default implementation creates the composited OutlineVisual. The X11 standalone platform overrides it and creates the non composited outline in case no compositing is used. Test Plan: Run kwin_x11 with KWIN_COMPOSE=N and KWIN_COMPOSE=X, non composited outline and composited outline loaded Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7450
-
Martin Flöser authored
Summary: With the latest refactoring AbstractClient::captionNormal is the same as AbstractClient::caption(false) used to be. As there were only two usages of the false parameter, let's remove this boolean trap and use proper API calls. Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7427
-
Martin Flöser authored
Summary: The implementation can now be shared, it doesn't differ anymore between X11 (Client) and Wayland (ShellClient). So instead of code duplication a shared implementation in AbstractClient. Test Plan: X11 and ShellClient tests still pass Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7426
-
Martin Flöser authored
Summary: Bringing another caption feature from X11 to Wayland. If we have multiple windows with the same caption, starting from the second window a suffix <number> is added. E.g. if we have three windows with caption "foo", the naming is: * foo * foo <2> * foo <3> The change tries to use as much shared code between the X11 and Wayland implementation. Unfortunately it's not possible to share completely as the X11 implementation does X11 specific things like editing the visible name. By sharing the code the numbering also works cross windowing system. That is if a window is called "foo" on X11, a new window on Wayland with caption "foo" will get adjusted to "foo <2>" and vice versa. The change also eliminates a duplicated signal for captionChanged in ShellClient (found by test case). By using the shared implementation on X11 side a bug gets fixed which got introduced with the support of "unresponsive", this is no longer considered and the numbering still works even if there is a window which is unresponsive. Test Plan: New test case and manual testing Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7425
-
Martin Flöser authored
Summary: This change splits out the X11 specific event filtering into a dedicated X11EventFilter. It is created in the x11 standalone platform plugin when the first Edge is being created. Some of the X11 specific code is removed from ScreenEdges, though more refactoring is possible in ScreenEdges to share more code between X11 specific and generic implementation. Test Plan: Run KWin on Xephyr, screen edge approach effect still shows Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7406
-
Martin Flöser authored
Summary: I don't know what the idea of entering QWhatsThis mode was, but the code is pretty much dead. There is no QWhatsThis window shown as KWin does not have any UI or help. The window which eventually gets shown in context help is provided by the client application. Furthermore KWin never leaves the QWhatsThis mode. At least one code path entering in leave is dead in general and one at least on Wayland (but probably also on X11 as the window never gets shown). The show context help functionality works fine without the QWhatsThis handling, so let's remove it. I tried to blame what was the idea behind it, but it was unchanged since decades and blame ended in a code moving commit. Test Plan: Used show context help (kcmshell5 --platform xcb kwinoptions) Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7398
-
Martin Flöser authored
Summary: This ensures that the X11 specific events are only read on X11 but not on Wayland. Also moves quite some X11 specific code out of TabBox. Test Plan: Compile checked, currently on Wayland, so no way to test. Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7395
-
Martin Flöser authored
Summary: Splits out the X11 specific window movement handling so that it's not used in the Wayland case at runtime. As a nice side effect it un-spaghetties the X11 event handler. Test Plan: Run nested KWin on Xephyr and nested KWin/Wayland to verify that move/resize of X11 windows is still working Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7374
-
- 30 Aug, 2017 1 commit
-
-
David Edmundson authored
D7460 in kwayland assumes all WL_SHM_FORMAT_ARGB8888 buffers have opacity premultipied RGB values. Kwin tests need updating to do the same. Rendering code did not need changing. Test Plan: Tests now pass Reviewers: #plasma, graesslin Reviewed By: #plasma, graesslin Subscribers: plasma-devel, kwin, #kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7607
-