- 28 Feb, 2019 1 commit
-
-
David Edmundson authored
Summary: The .wait() in this case isn't really time depdenent, we just need to process the event loop. Given we know this tests fails, there's no point me waiting 30s. Test Plan: Test failed, but faster Reviewers: #kwin, zzag Reviewed By: #kwin, zzag Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D19351
-
- 26 Feb, 2019 5 commits
-
-
David Edmundson authored
Summary: Everything on the wl_surface is double buffered. When we create an XdgShell toplevel or popup we shouldn't treat it as attached until it's committed to the surface. A client should commit the surface after it's sent it's initial state of the Xdg topLevel; minimumSize, title, app_id, etc. By blocking sending configure events we will have flushed the correct initial state before sending a single atomic correct event to the client. It also adds a hook to re-evaluate rules now that all properties are set. Arguably this applies to WlShellSurface too, but I've left it unchanged as it's deprecated and hard to verify real client behaviour. Test Plan: Ran all unit tests Reviewers: #kwin, zzag Reviewed By: #kwin, zzag Subscribers: zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18583
-
David Edmundson authored
Summary: We currently check the final position kwin knows about. This patch also checks the position the popup is told that it's in as well as acking configure requests correctly. Reviewers: #kwin, zzag Reviewed By: #kwin, zzag Subscribers: zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18955
-
David Edmundson authored
Summary: We can handle the case of a null size inside ShellClient::requestGeometry and that makes that method more robust. With that we don't need to handle separate code paths in the handler of RequestGeometryBlocker. It's not an exact identical code path, but everything still works out. If the geometry is unchanged, we'll save the positionAfterResize but when we apply it doSetGeometry will no-op. There's also an assumption that toggling maximised will always send a valid size, but that's true for the current state. Test Plan: Ran unit tests Reviewers: #kwin, zzag Reviewed By: #kwin, zzag Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D19331
-
Vlad Zahorodnii authored
Summary: Currently, each frame callback sent by KWin has the current time in nanoseconds, but the protocol spec states that we have to send the time in milliseconds. This is the reason why animations that are driven by frame callbacks are too fast. In addition to that, m_timeSinceStart isn't actually "time since start," it's rather accumulated duration of all painting cycles. If there is something to draw and it takes quite a while to compose the scene, maybe m_timeSinceStart will be close enough to the current time. So, it has been replaced with QElapsedTimer, this makes the current time correct and also simplifies code a little bit. Test Plan: The triangle in weston-subsurfaces no longer spins very fast. Reviewers: #kwin, romangg Reviewed By: #kwin, romangg Subscribers: romangg, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18656
-
Vlad Zahorodnii authored
Summary: We need AniMap only for test purposes so it would be better to make the typedef protected (and mark as internal as well). Test Plan: Compiles. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D17833
-
- 25 Feb, 2019 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"
-
- 23 Feb, 2019 2 commits
-
-
David Edmundson authored
Summary: In a recent patch the newly added xwayland class ended up being responsible for continuing the startup, calling back into the main app to spawn the workspace. It moves the flow of startup about so it's not very readable or following class structure. This patch moves the code back into main_wayland and removes the duplication between xwayland and non-xwayland modes. There was also a misnaming of methods. Previously: continueStartupWithScreens was called after platform screens are created continueStartupWithScene was called after the scene was created continueStartupWithXwayland was called before xwayland is created This was confusing, so the names have been shuffled around to follow a consistent pattern of what has been done so far. Test Plan: Started kwin_wayland in normal and xwayland mode Ran unit tests (though some failed due to a local unrelated and as yet unindentified bug) Reviewers: #kwin, romangg Reviewed By: #kwin, romangg Subscribers: romangg, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D19232
-
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"
-
- 22 Feb, 2019 8 commits
-
-
Sebastian Krzyszkowiak authored
Summary: When creating a surface and setting it as fullscreen before attaching its buffer KWin does not know the original dimensions of the surface and tries to use an invalid value when unsetting the fullscreen flag. This patch fixes this by sending a configure with the size of 0,0 - which according to xdg-shell spec means that the client is requested to set its size by itself. Test Plan: 1. Create a fullscreen Wayland window. 2. Toggle fullscreen off. 3. KWin should send a configure event with size 0,0 instead of 1,1. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: zzag, graesslin, davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D16710
-
Martin Flöser authored
Summary: On Wayland we cannot switch from OpenGL to QPainter compositor as this would break any running OpenGL application. KWin registers it's EGLDisplay to Wayland and without OpenGL this doesn't make sense any more. We are not able to render OpenGL buffers in the QPainter compositor. While it's theoretically possible to switch from QPainter to OpenGL it doesn't make any sense for the same reason. Any running OpenGL application would be using llvmpipe and could not be switched to proper OpenGL. This change stores the selected compositing type in Platform and the implementations can use it to restrict the supported compositors. On X11 we don't need this, all other Platforms implement the restriction. Thus it's no longer possible to switch the backends at runtime. Test Plan: Adjusted tests run, no runtime test as gui doesn't support switching to QPainter anyway. Reviewers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D19084
-
Martin Flöser authored
Summary: Using the Wayland protocol for OpenGL is no longer used or useful. KWin internal windows only use OpenGL through QtQuick. We either have the sharing context (KWin uses OpenGL for compositing) or we have the QPainter compositor which also turns QtQuick to use software renderer. Thus a situation where the Wayland platform context is useful doesn't exist any more. Removing it helps getting the QPA plugin Wayland free. Test Plan: Run nested KWin triggering Outline once with OpenGL and once with QPainter compositor. Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D19012
-
David Edmundson authored
Summary: In 403038 the user expected the DBus call to run to finish before processing the next request. For a singleshot script that makes a lot of sense, otherwise you have no idea when it finishes. This also allows us to return errors. CCBUG: 403038 Test Plan: NUM=$(qdbus org.kde.KWin /Scripting org.kde.kwin.Scripting.loadScript /noFile.js Minimize) qdbus org.kde.KWin /$NUM org.kde.kwin.Scripting.run Error: org.kde.kwin.Scripting.FileError Could not open /noFile.js Running a real script behaved effectively the same as before. Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18127
-
David Edmundson authored
Summary: placeIn did not handle the case for a popup not having had the size already set and only being available via m_xdgShellPopup->initialSize(). This is needed if we want to call placeIn at the correct time, before the window is mapped. There was also a logic bug when sliding popups. We called the confusingly named setX thinking it would be move the popup keeping the width the same. In practice it moves the left edge keeping the right position the same. This wasn't an issue as the size was discarded. Handling the resize constraint is not yet done, but it should now be even more trivial. Reviewers: #kwin, zzag Reviewed By: #kwin, zzag Subscribers: zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18956
-
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"
-
Vlad Zahorodnii authored
`client = new ShellClient(surface)` is most likely a leftover after a merge conflict.
-
David Edmundson authored
Summary: Despite plasma frameworks doing it's own scaling with fonts, it's been requested to use kwin/wayland scaling. Like DRM, when kscreen is not used, scale value is loaded from a config file. Config format is [HWComposerOutputs][0] Scale=N The 0 is to map similarly to DRM and support multi-screen, but with a screen index rather than a UUID based on EDID. Because we don't support multi screen this is always 0 for now. Test Plan: Ran with the config value unset and with the config value at Scale=3. Reviewers: #kwin, romangg Reviewed By: #kwin, romangg Subscribers: bshah, romangg, nicolasfella, zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18810
-
- 21 Feb, 2019 6 commits
-
-
Roman Gilg authored
Summary: Shm textures via Gl must be reloaded in case their size changes. Test Plan: testShmBufferSizeChangeOnSubSurface passes. Reviewers: #kwin, graesslin Reviewed By: #kwin, graesslin Subscribers: davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18453
-
Roman Gilg authored
-
Roman Gilg authored
Summary: Adds an autotest to show that KWin fails an assertion when a client tries to resize a sub-surface. Since it is the first autotest dealing with sub-surfaces explicitly additional autotest helpers are introduced to allow that. We also add a new signal in Compositor to spy on to know when the buffer swap has been completed. Test Plan: Test fails as expected: ``` QFATAL : KWin::BufferSizeChangeTest::testShmBufferSizeChangeOnSubSurface() ASSERT: "image.size() == m_size" in file /home/roman/dev/kde/src/kde/workspace/kwin/platformsupport/scenes/opengl/abstract_egl_backend.cpp, line 394 FAIL! : KWin::BufferSizeChangeTest::testShmBufferSizeChangeOnSubSurface() Received a fatal error. Loc: [Unknown file(0)] Totals: 4 passed, 1 failed, 0 skipped, 0 blacklisted, 367ms ********* Finished testing of KWin::BufferSizeChangeTest ********* ``` Reviewers: #kwin, zzag Subscribers: zzag, graesslin, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18452
-
Roman Gilg authored
Summary: The virtual platform did not actually present content and spin the compositor. Let's do this from now on , first for the EGL GBM backend. Test Plan: All tests pass according to Vlad Reviewers: #kwin, zzag Reviewed By: #kwin, zzag Subscribers: graesslin, zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18436
-
Martin Flöser authored
Summary: Most of the functionality which is special to internal clients is moved from ShellClient to InternalClient. As KWin's qpa is still bound to the Wayland protocol InternalClient inherits from ShellClient. Due to that some aspects in ShellClient are "weird". ShellClient still detects whether it's an internal client and uses the variable m_internal to capture the state. This is required as we cannot use the isInternal method. Most of m_internal usage is in init which is called from constructor of ShellClient. Thus it's not possible to call into virtual methods of InternalClient. Also some of the code is duplicated and some methods are temporarily marked as virtual. The next step will be to remove ShmBuffer for internal windows which should decouple the two implementations further with the long term goal of having InternalClient inherit AbstractClient directly. Test Plan: Run nested KWin, triggered outline (OpenGL case) and debug console (shm case). InternalWindow unit test still passes. Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18569
-
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"
-
- 20 Feb, 2019 4 commits
-
-
David Edmundson authored
Summary: This gives us XdgOutput support a requirement now that wayland server reports that we support it and Qt5.12 then expects it to be sent. It also provides an easy starting point for supporting wayland scaling and a slight step towards multi-output. Test Plan: Ran on phone. Got output. Turning screen on and off works. The double tap doesn't work great, but that was true before (via bshah's hack to build on the current state) Reviewers: #kwin, romangg Reviewed By: #kwin, romangg Subscribers: romangg, nicolasfella, zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18808
-
David Edmundson authored
Test Plan: Compile + grep Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D19177
-
Vlad Zahorodnii authored
-
Vlad Zahorodnii authored
Summary: Currently, KWin/Wayland crashes when the compositor is reinitialized. The reason for that is ShellClient's DecorationRenderer gets destroyed when the scene is already gone, thus there is no current OpenGL context. Client works around that issue by destroying scene-specific DecorationRender in finishCompositing. Such a workaround could be applied to ShellClient as well, but it would make code more confusing because DecoratedClientImpl also tries to destroy DecorationRenderer. A better approach would be to notify DecoratedClientImpl that compositing is about to be finished, so it can destroy the decoration renderer when the scene is still alive. This not only fixes the previously mentioned issue in ShellClient, but also makes code a little bit tidier. Test Plan: Start Plasma on Wayland session, change any compositor settings (e.g. animation speed). Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D18921
-
- 19 Feb, 2019 9 commits
-
-
Roman Gilg authored
Summary: Some X clients acting as drag sources might try to optimize finding the current target window by checking if a window manager, that sets the root window _NET_CLIENT_LIST_STACKING property, is present. An example for this is Chromium and since KWin sets the property the drag proxy windows must be added to this list. Otherwise the origin client will not detect the proxy window and not send an XdndEnter message. Test Plan: Manually with Chromium. Reviewers: #kwin Subscribers: zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D15628
-
Roman Gilg authored
Summary: On X several target atoms are established to provide data similar to the text/uri-list target format (the respective MIME on Wayland is called text/x-uri). Firefox can send link data in the NETSCAPE_URL format ones. Chromium on the other side sends link data in the text/x-moz-url format, which transports UTF-16 text. For both these peculiarities this patch provides converter functions, that translate these formats into the Wayland native text/x-uri format. In the other direction no translation is necessary. Both browsers supports the text/uri-list format when receiving link lists. Test Plan: Manually with Firefox and Chromium. Reviewers: #kwin Subscribers: zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D15629
-
Roman Gilg authored
Summary: Building upon the generic X Selection support this patch establishes another selection class representing the XDND selection and provides interfaces to communicate drags originating from Xwayland windows to the Wayland server KWin and drags originating from Wayland native drags to Xwayland. For Wayland native drags KWin will claim the XDND selection as owner and will simply translate all relevant events to the XDND protocol and receive alike messages by X clients. When an X client claims the XDND selection KWin is notified via the X protocol and it decides if it allows the X drag to transcend into the Wayland protocol. If this is the case the mouse position is tracked and on entering a Wayland native window a proxy X Window is mapped to the top of the window stack. This proxy window acts as a drag destination for the drag origin window and again X messages will be translated into respective Wayland protocol calls. If the cursor leaves the Wayland window geometry before a drop is registered, the proxy window is unmapped, what triggers a subsequent drag leave event. In both directions the necessary core integration is minimal. There is a single call to be done in the drag and drop event filter through the Xwayland interface class. From my tests this patch facilitates drags between any Qt/KDE apps. What needs extra care are the browsers, which use target formats, that are not directly compatible with the Wayland protocol's MIME representation. For Chromium an additional integration step must be done in order to provide it with a net window stack containing the proxy window. Test Plan: Manually. Auto tests planned. Reviewers: #kwin Subscribers: zzag, kwin, alexde Tags: #kwin Maniphest Tasks: T4611 Differential Revision: https://phabricator.kde.org/D15627
-
Roman Gilg authored
Summary: Adds an interface class to access Xwayland members from within KWin core. Reviewers: #kwin, davidedmundson, zzag Subscribers: zzag, davidedmundson, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D15419
-
Roman Gilg authored
Summary: With the gneric X selections infrastructure and clipboard support the X clipboard sync helper utility can be removed. Also rename its autotest as it tests the inner workings of the new mechanism since this mechanism was introduced. Test Plan: Autotest still passes under new name. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: graesslin, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D15063
-
Roman Gilg authored
Summary: In this patch an infrastructure is created to represent generic X selections in a Wayland session and use them for data transfers between Xwayland windows and Wayland native clients. The central manager is the DataBridge class, in which Selection objects can be created. This is hard-coded and such a Selection object persists until the end of the session, so no arbitrary selections can be created on the fly. For now the X Clipboard selection is supported, whose corresponding mechanism in the Wayland protocol is just called Selection. A Selection object listens for selection owner changes on the X side and for similar events into the Wayland server interfaces. If a data provider is available a selection source object is created by the Selection object. In case data is requested on the other side, a data transfer is initialized by creating a Transfer object. A Selection keeps track of all transfers and makes sure that they are destroyed when they are finished or in case they idle because of misbehaving clients. The Clipboard class translates the X Clipboard via a proxy window. Selection changes on the Wayland side are listened to through a new signal on the active KWayland seat interface. The previously used X clipboard syncer helper is disabled. The clipboard sync autotest is changed to the new mechanism. BUG: 394765 BUG: 395313 Test Plan: Manually and clipboard sync autotest. Reviewers: #kwin Subscribers: zzag, graesslin, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D15061
-
Roman Gilg authored
Summary: By using the new Xwayland class we can reduce code duplication. An abstract parent class is introduced, that allows interfacing with the Xwayland class from the test binaries. Test Plan: Autotests still pass. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D15022
-
Roman Gilg authored
Summary: The Xwayland code path is moved from ApplicationWayland to a dedicated class Xwayland in a new top-level directory xwl. This is a direct preparation step for generic support of Xwayland Selections. On a longer timescale this should also allow us to further separate Wayland native functionality from Xwayland to allow us at one point to build KWin's Wayland binary optionally without X dependencies. Another long term goal, that becomes possible through this separation is to recover from Xwayland crashes. Test Plan: Manually and auto tests Reviewers: #kwin, davidedmundson Subscribers: davidedmundson, zzag, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D15020
-
Jonathan Riddell authored
GIT_SILENT
-
- 18 Feb, 2019 2 commits
-
-
Vlad Zahorodnii authored
-
Vlad Zahorodnii authored
Summary: Currently, the Desktop Grid effect tries to copy a client when user moves it. But on X11 such behavior doesn't make sense because a client can't be on multiple desktops (except on all). BUG: 404442 FIXED-IN: 5.15.1 Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D19116
-
- 17 Feb, 2019 2 commits
-
-
Martin Flöser authored
Summary: Required for kwin_wayland to find it's own plugin. Test Plan: My kwin_wayland was crashing and gdb showed wrong plugin being loaded Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D19010
-
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"
-