- 28 Oct, 2016 3 commits
-
-
Martin Flöser authored
The test destroyed the connection prior to destroying registry and event queue. Thus causing problems. Hopefully this change fixes the segfault on build.kde.org.
-
Martin Flöser authored
The test has KWayland::Client objects like Registry as member variables of the test object. This causes the objects to be destroyed with the dtor after cleanupTestCase is run which destroys the connection and Wayland server. At least on the CI system this seems to cause problem. In general our tests do not keep any state around, especially not KWayland::Client objects. The normal way is to have a new dedicated client connection for every test method. This test doesn't follow this approach at all. In case that this change does not fix the test and still crashes on build.kde.org the only option is to drop the test and replace it by a new variant which follows the approach of other tests.
-
Martin Flöser authored
Reorder the cleanup code. It doesn't make sense to delete the client side objects after deleting the server side objects. This might be a reason for the failing tests on build.kde.org.
-
- 26 Oct, 2016 1 commit
-
-
Martin Flöser authored
It was missing the _p suffix.
-
- 25 Oct, 2016 2 commits
-
-
Martin Flöser authored
The event queue gets set by the factory method for resource classes.
-
Martin Flöser authored
In the client cpp file this include should be generated.
-
- 24 Oct, 2016 3 commits
-
-
Martin Flöser authored
Summary: In case the current selection does not have a DataSourceInterface updating the focused keyboard surface resulted in a crash. The current selection is sent to the DataDeviceInterface of the newly focused client and thus a DataOfferInterface would be created for a null DataSourceInterface. This is a similar fix as D3148 and D3149. Test Plan: Test case added which used to crash before Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D3150
-
Martin Flöser authored
Summary: This is a similar condition as D3148. If a DataDeviceInterface is created for the currently focused keyboard Surface the current selection is sent to the new DataDeviceInterface. If the current selection does not have a DataSourceInterface a DataOfferInterface for a null DataSourceInterface would be created and result in a crash. This change verifies that there is a DataSourcInterface on the current selection prior to sending out the selection. Test Plan: A test case is added which simulates the condition by using two clients. Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D3149
-
Martin Flöser authored
Summary: SeatInterface provides a way to set the current selection. This method did not verify whether the new DataDeviceInterface actually has a DataSourceInterface. If there is no DataSourceInterface on that DataDeviceInterface the selection should not be sent to the current selection owner. This results in a crash as DataOfferInterface (correctly) doesn't expect the passed in DataSourceInterface to be null. To ensure we don't hit this again the DataOfferInterface ctor gained an Q_ASSERT to validate the DataSourceInterface. Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D3148
-
- 20 Oct, 2016 1 commit
-
-
Martin Flöser authored
The generator misdetected the destructor Requests by looking at the arguments instead of the type of the request. In addition the destructor handling changed in KWayland::Server since the generator got created. There is now a shared implementation for the Resource destruction. The generator is adjusted to generate the code for that and implements the destruction for the Global resource destruction.
-
- 18 Oct, 2016 1 commit
-
-
Martin Flöser authored
Summary: By default a panel does not take focus. But there are panels which should get keyboard focus. Examples in a Plasma session are the widget explorer. This change adds a new request to PlasmaShell interface to specify whether a panel should get focus. The compositor can use this request to decide whether to pass focus to a panel. Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D3035
-
- 17 Oct, 2016 6 commits
-
-
Martin Flöser authored
Summary: This change adds support for auto-hiding panels. A PlasmaShellSurface with Role Panel and PanelBehavior AutoHide can request to get auto-hidden at a screen edge. The compositor will then not show the surface although it is still mapped and will show it again once the screen edge gets triggered. The interface is extended by one new request to allow the client to request the hiding of the surface. In addition two events are added to inform the client when the surface got hidden and when it got shown again. Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D3007
-
Martin Flöser authored
Sorry, it compiled on my system. Trying to fix.
-
Martin Flöser authored
Summary: Especially for Xwayland windows the compositor might not have a themed icon name. Resulting in a task manager not having dedicated icons for Xwayland windows. This change deprecates the way how a compositor is supposed to set the window icon. Instead of passing the themed icon name, it is now supposed to pass the QIcon. In case it's a themed icon the existing way to pass to the client is used. Otherwise a new event is used to inform the client that there is an icon - no data is transmitted at this point. The client can then create a file descriptor and pass it to the compositor. The compositor serializes the icon into the file descriptor and the client can read from it. This all happens transparently on client side there is no api change at all. The writing and reading of the icon is done in a thread. Due to that Qt5::Concurrent is now a required dependency instead of an optional dependency. Reviewers: #plasma_on_wayland, hein Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D3049
-
Martin Flöser authored
Summary: Qt supports setting generic data on a QWindow. This change implements the callback properly and forwards the property to the surface extension instance. This allows the compositor to e.g. listen to DynamicPropertyChangeEvents and get access to all additional set properties. Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D3045
-
Martin Flöser authored
Summary: This is similar to what already exists for Surface. With this methods it's possible to get a ShellSurface from an existing QWindow and to perform low level native calls directly for the ShellSurface. Similar calls will also be needed for XdgShellSurface, though the xdg_shell_surface is not yet available through the native interface. Test Plan: Used in breeze to trigger window moving Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D3018
-
Martin Flöser authored
Summary: This is what Weston does. With this change clients can create multiple wl_pointer instances and thus get events reported to all of them. This will be needed to e.g. support drag on empty area in Breeze on Wayland. A similar change was done for wl_keyboard already in 862bb68e. Test Plan: Seat auto test still passes Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D3016
-
- 12 Oct, 2016 1 commit
-
-
Martin Flöser authored
This could result in a crash as the added test case shows. Reviewed-By: bshah
-
- 11 Oct, 2016 5 commits
-
-
Martin Flöser authored
-
Martin Flöser authored
-
Martin Flöser authored
Add missing include of QVector. Sorry built on my system without it.
-
Martin Flöser authored
Summary: In the situation that a wl_client gets destroyed while still wl_resources are around it can happen that one of them calls into the ClientConnection during the cleanup handling which gets triggered at the same time. This can then trigger a crash. This change uses deleteLater for the ClientConnection and sets the hold wl_client pointer to null instead of deleting directly. So the ClientConnection is still around while the Resources gets cleaned up. This is similar to the cleanup of Resource where on unbind the wl_resource pointer is set to null and the Resource gets delete later. BUG: 370232 FIXED-IN: 5.28 Reviewers: #plasma, bshah Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D3004
-
Martin Flöser authored
Summary: This change implements the zwp_relative_pointer_v1 protocol which allows to send relative motion events. The (unstable) protocol consists of a RelativePointerManager which creates RelativePointers for a given Pointer. This interface currently only has one event to report the relative motion. It carries the delta, the non-accelerated-delta and a timestamp in microsends granularity. On the server side the implementation is mostly internal. Once a RelativePointerManagerInterface is created one can send relative motion events through the SeatInterface. The SeatInterface takes care of sending it to the responding RelativePointerInterface. The protocol does not restrict the sending of "normal" and relative motion events. Thus it can be combined in any way one wants. This allows to have a rather simple implementation. A user of the SeatInterface can just start to feed the relative motion events (if the information is available) to the SeatInterface together with the pointer events. On client side a new RelativePointerManager and RelativePointer class are added. The RelativePointerManager creates the RelativePointer for a given Pointer. The event sent to RelativePointer is transformed in a normal signal. Reviewers: #plasma Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D2978
-
- 10 Oct, 2016 1 commit
-
-
Martin Flöser authored
Summary: When changing the selection the previous selection needs to be cancelled. This is already done in the "normal" updating of the selection. If the previous selection doesn't get cancelled QtWayland is not able to accept anything new from the clipboard. The setSelection didn't cancel it yet, due to that copy from Xwayland to QtWayland windows doesn't work in KWin as KWin uses the setSelection call for the Xwayland clipboard. With this change the cancelling of previous selection is moved into a dedicated method and called from the normal way and the setSelection way. Reviewers: #plasma_on_wayland, bshah Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D2997
-
- 09 Oct, 2016 1 commit
-
-
Script Kiddy authored
-
- 06 Oct, 2016 1 commit
-
-
Martin Flöser authored
Summary: This is what Weston does. With this change clients can create multiple wl_keyboard instances and thus get events reported to all of them. This will be needed to e.g. support KModifierKeyInfo on Wayland. Similar changes are probably also needed for pointer and touch. Test Plan: Auto test for seat still passes. A custom change to kscreenlocker is able to report whether caps lock is on with this change. Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D2963
-
- 02 Oct, 2016 1 commit
-
-
Script Kiddy authored
-
- 15 Sep, 2016 1 commit
-
-
Martin Flöser authored
Summary: This change makes use of the internal key state in better way. If a key is not considered pressed, no key release is sent. This can happen for example if the compositor grabs a key press (global shortcut) but not the release. The Wayland client cannot do anything with the release as it never got the press. Thus it doesn't make sense to send the release. Similar if a key is already pressed, it doesn't make sense to send another press event. This ensures that if the server sends in repeating key presses they are filtered out. Key repeat is handled on client side. Also if several physical keys send the same key code, pressing them at the same time won't send double press/release event. This change might cause regressions in KWin in case KWin does not handle the situation correctly. But that would be a bug in KWin which needs to be fixed there. If it causes regressions the bug might have shown in other situations as well. BUG: 366625 FIXED-IN: 5.27 Reviewers: #plasma_on_wayland, #kwin Subscribers: plasma-devel, kwin Tags: #plasma_on_wayland, #kwin Differential Revision: https://phabricator.kde.org/D2786
-
- 14 Sep, 2016 1 commit
-
-
Martin Flöser authored
Summary: According to the Wayland documentation a data source needs to be cancelled whenever it is no longer valid. A reason for no longer being valid is that the data source has been replaced by another data source. So far KWayland did not implement this aspect which resulted in clipboard breaking in QtWayland applications. As soon as one copied once from an application it was no longer possible to paste to it from another application. With this change the data source gets properly cancelled and also ensured that the server code doesn't run into a possible crash condition when trying to cancel an already unbound data source. BUG: 368391 Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D2743
-
- 13 Sep, 2016 3 commits
-
-
Martin Flöser authored
Sorry about that, it compiled on my system.
-
Martin Flöser authored
Summary: This change implements support for the wl_surface events enter and leave. Those events are emitted whenever a surface becomes visible on an output by e.g. mapping the surface, moving or resizing it. Similar the leave is sent whenever the surface is no longer on an output. The server side is not yet fully complete yet. It also needs to emit when the client binds the output another time and needs to send a leave before destroying the output. Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D2528
-
Martin Flöser authored
Summary: This change starts to track all Outputs and introduces a static method to get an Output* for a wl_output* in case the wl_output* is known to Output. This is needed for the enter and leave events on wl_surface. Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D2526
-
- 10 Sep, 2016 1 commit
-
-
Script Kiddy authored
-
- 05 Sep, 2016 2 commits
-
-
Script Kiddy authored
-
Script Kiddy authored
-
- 22 Aug, 2016 3 commits
-
-
Martin Flöser authored
The test started to segfault on build.kde.org. It looks like an event survives the destruction of the server. Thus this change tries to dispatchEvents once more before destroying everything.
-
Martin Flöser authored
It started to fail on build.kde.org with a segfault. While I cannot reproduce this locally it looks like client objects survive to the next test and thus cause issues. This change attempts to reduce the risk by making sure that everything is cleaned up correctly. If that fixes the issue we can look into a proper fix.
-
Martin Flöser authored
Summary: Instead of hard depending on the include of linux/input.h we check whether that include file exists and properly ifdef all usages. Unfortunately there is no replacement for those parts which do mapping of input event codes. Reviewers: #plasma_on_wayland Subscribers: plasma-devel Tags: #plasma_on_wayland Differential Revision: https://phabricator.kde.org/D2344
-
- 08 Aug, 2016 2 commits
-
-
Martin Flöser authored
On build.kde.org the Surface is often already destroyed when returning from waiting on client disconnected. This change tries to handle the situation better: only if the signal is not yet emitted, try to wait for it.
-
Martin Flöser authored
Newer Weston renamed the interface to the unstable naming scheme. As KWayland does not support this interface yet, the tests are failing. This change skips the test if the Weston is too new and doesn't provide the expected interface any more.
-