2014-09-17 12:35:33 +00:00
|
|
|
set(SERVER_LIB_SRCS
|
2017-12-18 21:50:31 +00:00
|
|
|
appmenu_interface.cpp
|
2014-09-17 12:35:33 +00:00
|
|
|
buffer_interface.cpp
|
2014-11-17 15:01:18 +00:00
|
|
|
clientconnection.cpp
|
2014-09-17 12:35:33 +00:00
|
|
|
compositor_interface.cpp
|
2014-11-06 09:02:49 +00:00
|
|
|
datadevice_interface.cpp
|
2014-11-04 14:10:22 +00:00
|
|
|
datadevicemanager_interface.cpp
|
2014-11-06 15:56:50 +00:00
|
|
|
dataoffer_interface.cpp
|
2014-11-04 14:10:22 +00:00
|
|
|
datasource_interface.cpp
|
2014-09-17 12:35:33 +00:00
|
|
|
display.cpp
|
2015-08-31 14:08:58 +00:00
|
|
|
dpms_interface.cpp
|
Expose wl_display_set_global_filter as a virtual method
Summary:
This allows a server to filter which globals are visible and bindable by
clients.
Design rationale:
Could be it's own class with Display as an arg, but we need the lifespan
to exactly match Display, and the cardinality to match Display and it
needs to be set after we're started but before clients connect.
Better to enfore rules with code than with documentation.
I'm filtering by interface name as there isn't any other good
identifier of what a wl_global refers to, even if you could assume
you can cast the userdata to a Server::Global.
Test Plan: Attached unit test
Reviewers: #plasma, graesslin, bcooksley
Reviewed By: #plasma, graesslin
Subscribers: bcooksley, graesslin, plasma-devel, #frameworks
Tags: #frameworks, #plasma
Differential Revision: https://phabricator.kde.org/D8050
2017-11-17 08:34:01 +00:00
|
|
|
filtered_display.cpp
|
2014-11-13 14:07:31 +00:00
|
|
|
global.cpp
|
2015-07-02 09:35:16 +00:00
|
|
|
idle_interface.cpp
|
2017-10-20 16:28:25 +00:00
|
|
|
idleinhibit_interface.cpp
|
|
|
|
idleinhibit_interface_v1.cpp
|
2015-07-02 19:21:57 +00:00
|
|
|
fakeinput_interface.cpp
|
2014-11-25 12:39:24 +00:00
|
|
|
keyboard_interface.cpp
|
Add Remote Access interface to KWayland
Summary:
This commit adds an interface bridge from KWin to KRfb. The purpose of
this protocol is to pass a GBM fd of currently displayed buffer from
KWin. The buffer is expected to be fully drawn once it is passed.
Related to D1230
Test Plan:
********* Start testing of RemoteAccessTest *********
Config: Using QtTest library 5.6.0, Qt 5.6.0 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 6.1.1 20160501)
PASS : RemoteAccessTest::initTestCase()
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Connected to Wayland server at: "kwayland-test-remote-access-0"
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Wayland Interface: wl_shm / 1 / 1
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Wayland Interface: org_kde_kwin_remote_access_manager / 2 / 1
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-server: Server buffer sent: fd 15
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Got buffer, server fd: 15
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-server: Remote buffer returned, client 4 , id 0 , fd 15
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-server: Buffer released, fd 15
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Buffer released
PASS : RemoteAccessTest::testSendReleaseSingle()
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Connected to Wayland server at: "kwayland-test-remote-access-0"
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Wayland Interface: wl_shm / 1 / 1
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Wayland Interface: org_kde_kwin_remote_access_manager / 2 / 1
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-server: Server buffer sent: fd 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Got buffer, server fd: 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Got buffer, server fd: 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-server: Remote buffer returned, client 4 , id 0 , fd 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-server: Remote buffer returned, client 5 , id 0 , fd 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-server: Buffer released, fd 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Buffer released
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Buffer released
PASS : RemoteAccessTest::testSendReleaseMultiple()
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-client: Connected to Wayland server at: "kwayland-test-remote-access-0"
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-client: Wayland Interface: wl_shm / 1 / 1
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-client: Wayland Interface: org_kde_kwin_remote_access_manager / 2 / 1
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-server: Server buffer sent: fd 15
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-server: Buffer released, fd 15
PASS : RemoteAccessTest::testSendClientGone()
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Connected to Wayland server at: "kwayland-test-remote-access-0"
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Wayland Interface: wl_shm / 1 / 1
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Wayland Interface: org_kde_kwin_remote_access_manager / 2 / 1
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-server: Server buffer sent: fd 15
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Got buffer, server fd: 15
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Buffer released
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-server: Buffer released, fd 15
PASS : RemoteAccessTest::testSendReceiveClientGone()
PASS : RemoteAccessTest::cleanupTestCase()
Totals: 6 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of RemoteAccessTest *********
Reviewers: graesslin, davidedmundson, romangg
Reviewed By: davidedmundson, romangg
Subscribers: jtamate, jgrulich, romangg, ngraham, alexeymin, #frameworks, davidedmundson, plasma-devel
Tags: #plasma_on_wayland, #frameworks
Maniphest Tasks: T5653, T7785
Differential Revision: https://phabricator.kde.org/D1231
2018-03-25 17:14:42 +00:00
|
|
|
remote_access_interface.cpp
|
server side of new outputmanagement protocol
This implements the server part of the screen management protocol. The
protocol is implemented as a wayland protocol.
It provides the following mechanisms:
- a list of outputs, close to wl_output, with additional properties for
enabled, uuid, edid, etc.. These OutputDevices correspond to a
connected output that can be enabled by the compositor, but is not
necessarily currently used for rendering.
- a global OutputManagement, which allows creating config objects, one
per client. The client can make changes to the outputs through
setScale(outputdevice*, scale) for example.
- an OutputConfiguration resource, that can be handed to a client and
used for configuration. Changes are double buffered here. Only after
OutputConfiguration.apply() has been called, the changes are relayed
over the global OutputManagement.
The compositor is responsible to handle changes.
For a more detailed description, see the API docs in especially
outputconfiguration.h.
REVIEW:125942
2015-11-04 14:36:52 +00:00
|
|
|
outputconfiguration_interface.cpp
|
|
|
|
outputchangeset.cpp
|
|
|
|
outputmanagement_interface.cpp
|
|
|
|
outputdevice_interface.cpp
|
2014-09-17 12:35:33 +00:00
|
|
|
output_interface.cpp
|
2014-11-25 12:52:40 +00:00
|
|
|
pointer_interface.cpp
|
2015-06-09 00:48:56 +00:00
|
|
|
plasmashell_interface.cpp
|
Add KWayland virtual desktop protocol
Summary:
Implement the virtual desktop protocol discussed in
T4457 xml protocol, client and server part.
The PlasmaVirtualDesktopManagement interface manages the desktops
instantiation and layout, each desktop is a PlasmaVirtualDesktop
instance which contains unique id, name and position.
PlasmaWindow has new events: plasmaVirtualDesktopEntered
and plasmaVirtualDesktopLeft when a window enters or leaves a desktop,
and desktops as the list of desktops is in. A window can be on
any subset of desktops, if the list is empty, it's considered on all desktops.
Test Plan: Autotest
Reviewers: #kwin, #plasma, graesslin, hein, davidedmundson
Reviewed By: #kwin, #plasma, davidedmundson
Subscribers: davidedmundson, zzag, bshah, romangg, kde-frameworks-devel
Tags: #frameworks
Maniphest Tasks: T4457
Differential Revision: https://phabricator.kde.org/D12820
2018-07-19 16:36:32 +00:00
|
|
|
plasmavirtualdesktop_interface.cpp
|
2015-06-12 01:05:14 +00:00
|
|
|
plasmawindowmanagement_interface.cpp
|
2016-11-08 13:17:15 +00:00
|
|
|
pointerconstraints_interface.cpp
|
|
|
|
pointerconstraints_interface_v1.cpp
|
2016-10-26 08:27:14 +00:00
|
|
|
pointergestures_interface.cpp
|
|
|
|
pointergestures_interface_v1.cpp
|
2015-06-09 22:56:31 +00:00
|
|
|
qtsurfaceextension_interface.cpp
|
2014-10-16 11:04:51 +00:00
|
|
|
region_interface.cpp
|
2016-10-07 07:07:34 +00:00
|
|
|
relativepointer_interface.cpp
|
|
|
|
relativepointer_interface_v1.cpp
|
2014-11-14 08:45:02 +00:00
|
|
|
resource.cpp
|
2014-09-17 12:35:33 +00:00
|
|
|
seat_interface.cpp
|
2015-09-09 11:04:11 +00:00
|
|
|
slide_interface.cpp
|
2015-07-15 09:07:50 +00:00
|
|
|
shadow_interface.cpp
|
2015-08-26 12:42:58 +00:00
|
|
|
blur_interface.cpp
|
2015-09-02 16:13:25 +00:00
|
|
|
contrast_interface.cpp
|
2015-12-10 08:39:24 +00:00
|
|
|
server_decoration_interface.cpp
|
2018-01-03 10:24:57 +00:00
|
|
|
server_decoration_palette_interface.cpp
|
2014-09-17 12:35:33 +00:00
|
|
|
shell_interface.cpp
|
|
|
|
surface_interface.cpp
|
2014-10-14 12:04:35 +00:00
|
|
|
subcompositor_interface.cpp
|
2015-03-25 12:31:38 +00:00
|
|
|
touch_interface.cpp
|
2016-05-02 12:28:26 +00:00
|
|
|
textinput_interface.cpp
|
|
|
|
textinput_interface_v0.cpp
|
|
|
|
textinput_interface_v2.cpp
|
2018-12-21 13:07:52 +00:00
|
|
|
xdgdecoration_interface.cpp
|
2016-04-21 10:56:02 +00:00
|
|
|
xdgshell_interface.cpp
|
|
|
|
xdgshell_v5_interface.cpp
|
Wayland foreign protocol
Summary:
Implement the "foreign" wayland protocol.
A client can export a surface with an unique string as handle,
then another client can refer to that surface and set an own surface as
child of that surface.
Potential use cases are out-of-process dialogs, such as file dialogs,
meant to be used by sandboxed processes that may not have the access
it needs to implement such dialogs.
The handle needs to be shared between the processes with other means,
such as dbus or command line paramenters.
The public api of the server side only tracks parent/child relationships as this is the only data kwin would need it for, the rest of the api is not exported so should be safer from eventual protocol changes
Test Plan:
the autotest works, but has a lot of random crashes when deleting surfaces,
unfortunately backtraces don't tell much and the crashes never occur when running into valgrind
behavior may still be wrong, depending on how the protocol is supposed
to work if more clients try to set the same exported surface as parent
Reviewers: #plasma, #kwin, davidedmundson, graesslin
Reviewed By: #plasma, #kwin, graesslin
Subscribers: davidedmundson, graesslin, plasma-devel, #frameworks
Tags: #frameworks, #plasma_on_wayland
Differential Revision: https://phabricator.kde.org/D7369
2017-10-13 09:29:17 +00:00
|
|
|
xdgforeign_v2_interface.cpp
|
|
|
|
xdgforeign_interface.cpp
|
2018-07-13 13:50:19 +00:00
|
|
|
xdgshell_v5_interface.cpp
|
Support XDG v6
Summary:
The main clever part that's not just boring boiler plate is how we
handle the structure change
A surface now has an XDGSurface which then has a an Xdg TopLevel or a
Xdg Popup
We need to fit this into the public API which assumes a surface has a
Surface or a Popup.
The old Surface is similar to the new TopLevel.
The shoehorning works by relying on the fact that a surface without a
role is pretty useless.
Clients create the surface implicitly with the toplevel or implicitly
with the popup.
The server only announced it has a new "XdgSurface" when it gets a new
zxdg_surface_get_toplevel.
----
Popup decisions:
- On popup creation the server should copy the current info from the
positioner and then it gets deleted. Given kwaylands job is to keep
state, we expose all these parameter via popup.
- Due to this positioner is not exposed as a resource anywhere.
- Server API is 100% backwards compatiable.
i.e new code will work identically with v5 clients.
- Client API is not. Grabs are called separately from the constructor,
and the parent surface changed to an xdgsurface, not a raw surface.
V5 code still works as-is, just not with the new constructors.
It seemed better to match the v6 (and what will be the stable v7) than
to try and do hacks and lose functionality.
Given the client needs to change the code to opt into V6 anyway. I don't
think this is a huge problem.
Test Plan: Current test still passes.
Reviewers: #plasma, graesslin
Reviewed By: #plasma, graesslin
Subscribers: graesslin, mart, plasma-devel, #frameworks
Tags: #frameworks, #plasma_on_wayland
Differential Revision: https://phabricator.kde.org/D6047
2017-09-04 15:38:35 +00:00
|
|
|
xdgshell_v6_interface.cpp
|
2018-07-13 13:50:05 +00:00
|
|
|
xdgshell_stable_interface.cpp
|
2018-05-15 09:45:17 +00:00
|
|
|
xdgoutput_interface.cpp
|
2019-04-15 14:21:01 +00:00
|
|
|
eglstream_controller_interface.cpp
|
2018-07-13 13:50:19 +00:00
|
|
|
../compat/wayland-xdg-shell-v5-protocol.c
|
2014-09-17 12:35:33 +00:00
|
|
|
)
|
|
|
|
|
2018-11-20 07:13:42 +00:00
|
|
|
ecm_qt_declare_logging_category(SERVER_LIB_SRCS HEADER logging.h IDENTIFIER KWAYLAND_SERVER CATEGORY_NAME kwayland-server DEFAULT_SEVERITY Critical)
|
|
|
|
|
server side of new outputmanagement protocol
This implements the server part of the screen management protocol. The
protocol is implemented as a wayland protocol.
It provides the following mechanisms:
- a list of outputs, close to wl_output, with additional properties for
enabled, uuid, edid, etc.. These OutputDevices correspond to a
connected output that can be enabled by the compositor, but is not
necessarily currently used for rendering.
- a global OutputManagement, which allows creating config objects, one
per client. The client can make changes to the outputs through
setScale(outputdevice*, scale) for example.
- an OutputConfiguration resource, that can be handed to a client and
used for configuration. Changes are double buffered here. Only after
OutputConfiguration.apply() has been called, the changes are relayed
over the global OutputManagement.
The compositor is responsible to handle changes.
For a more detailed description, see the API docs in especially
outputconfiguration.h.
REVIEW:125942
2015-11-04 14:36:52 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/output-management.xml
|
server side of new outputmanagement protocol
This implements the server part of the screen management protocol. The
protocol is implemented as a wayland protocol.
It provides the following mechanisms:
- a list of outputs, close to wl_output, with additional properties for
enabled, uuid, edid, etc.. These OutputDevices correspond to a
connected output that can be enabled by the compositor, but is not
necessarily currently used for rendering.
- a global OutputManagement, which allows creating config objects, one
per client. The client can make changes to the outputs through
setScale(outputdevice*, scale) for example.
- an OutputConfiguration resource, that can be handed to a client and
used for configuration. Changes are double buffered here. Only after
OutputConfiguration.apply() has been called, the changes are relayed
over the global OutputManagement.
The compositor is responsible to handle changes.
For a more detailed description, see the API docs in especially
outputconfiguration.h.
REVIEW:125942
2015-11-04 14:36:52 +00:00
|
|
|
BASENAME output-management
|
|
|
|
)
|
|
|
|
|
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/outputdevice.xml
|
server side of new outputmanagement protocol
This implements the server part of the screen management protocol. The
protocol is implemented as a wayland protocol.
It provides the following mechanisms:
- a list of outputs, close to wl_output, with additional properties for
enabled, uuid, edid, etc.. These OutputDevices correspond to a
connected output that can be enabled by the compositor, but is not
necessarily currently used for rendering.
- a global OutputManagement, which allows creating config objects, one
per client. The client can make changes to the outputs through
setScale(outputdevice*, scale) for example.
- an OutputConfiguration resource, that can be handed to a client and
used for configuration. Changes are double buffered here. Only after
OutputConfiguration.apply() has been called, the changes are relayed
over the global OutputManagement.
The compositor is responsible to handle changes.
For a more detailed description, see the API docs in especially
outputconfiguration.h.
REVIEW:125942
2015-11-04 14:36:52 +00:00
|
|
|
BASENAME org_kde_kwin_outputdevice
|
|
|
|
)
|
|
|
|
|
2015-06-09 00:48:56 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/plasma-shell.xml
|
2015-06-09 00:48:56 +00:00
|
|
|
BASENAME plasma-shell
|
|
|
|
)
|
|
|
|
|
Add KWayland virtual desktop protocol
Summary:
Implement the virtual desktop protocol discussed in
T4457 xml protocol, client and server part.
The PlasmaVirtualDesktopManagement interface manages the desktops
instantiation and layout, each desktop is a PlasmaVirtualDesktop
instance which contains unique id, name and position.
PlasmaWindow has new events: plasmaVirtualDesktopEntered
and plasmaVirtualDesktopLeft when a window enters or leaves a desktop,
and desktops as the list of desktops is in. A window can be on
any subset of desktops, if the list is empty, it's considered on all desktops.
Test Plan: Autotest
Reviewers: #kwin, #plasma, graesslin, hein, davidedmundson
Reviewed By: #kwin, #plasma, davidedmundson
Subscribers: davidedmundson, zzag, bshah, romangg, kde-frameworks-devel
Tags: #frameworks
Maniphest Tasks: T4457
Differential Revision: https://phabricator.kde.org/D12820
2018-07-19 16:36:32 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/plasma-virtual-desktop.xml
|
|
|
|
BASENAME plasma-virtual-desktop
|
|
|
|
)
|
|
|
|
|
2015-06-12 01:05:14 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/plasma-window-management.xml
|
2015-06-12 01:05:14 +00:00
|
|
|
BASENAME plasma-window-management
|
|
|
|
)
|
|
|
|
|
2015-06-09 22:56:31 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/surface-extension.xml
|
2015-06-09 22:56:31 +00:00
|
|
|
BASENAME qt-surface-extension
|
|
|
|
)
|
|
|
|
|
2015-07-02 09:35:16 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/idle.xml
|
2015-07-02 09:35:16 +00:00
|
|
|
BASENAME idle
|
|
|
|
)
|
|
|
|
|
2015-07-02 19:21:57 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/fake-input.xml
|
2015-07-02 19:21:57 +00:00
|
|
|
BASENAME fake-input
|
|
|
|
)
|
|
|
|
|
2015-07-15 09:07:50 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/shadow.xml
|
2015-07-15 09:07:50 +00:00
|
|
|
BASENAME shadow
|
|
|
|
)
|
2015-08-31 14:08:58 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/dpms.xml
|
2015-08-31 14:08:58 +00:00
|
|
|
BASENAME dpms
|
|
|
|
)
|
2015-07-15 09:07:50 +00:00
|
|
|
|
2015-08-26 12:42:58 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/blur.xml
|
2015-08-26 12:42:58 +00:00
|
|
|
BASENAME blur
|
|
|
|
)
|
|
|
|
|
2015-09-02 16:13:25 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/contrast.xml
|
2015-09-02 16:13:25 +00:00
|
|
|
BASENAME contrast
|
|
|
|
)
|
|
|
|
|
2016-10-07 07:07:34 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/relative-pointer-unstable-v1.xml
|
2016-10-07 07:07:34 +00:00
|
|
|
BASENAME relativepointer-unstable-v1
|
|
|
|
)
|
|
|
|
|
2015-09-09 11:04:11 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/slide.xml
|
2015-09-09 11:04:11 +00:00
|
|
|
BASENAME slide
|
|
|
|
)
|
|
|
|
|
2015-12-10 08:39:24 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/server-decoration.xml
|
2015-12-10 08:39:24 +00:00
|
|
|
BASENAME server_decoration
|
|
|
|
)
|
|
|
|
|
2016-05-02 12:28:26 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/text-input.xml
|
2016-05-02 12:28:26 +00:00
|
|
|
BASENAME text
|
|
|
|
)
|
|
|
|
|
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-03 15:46:37 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/text-input-unstable-v2.xml
|
2016-05-02 12:28:26 +00:00
|
|
|
BASENAME text-input-unstable-v2
|
|
|
|
)
|
|
|
|
|
Support XDG v6
Summary:
The main clever part that's not just boring boiler plate is how we
handle the structure change
A surface now has an XDGSurface which then has a an Xdg TopLevel or a
Xdg Popup
We need to fit this into the public API which assumes a surface has a
Surface or a Popup.
The old Surface is similar to the new TopLevel.
The shoehorning works by relying on the fact that a surface without a
role is pretty useless.
Clients create the surface implicitly with the toplevel or implicitly
with the popup.
The server only announced it has a new "XdgSurface" when it gets a new
zxdg_surface_get_toplevel.
----
Popup decisions:
- On popup creation the server should copy the current info from the
positioner and then it gets deleted. Given kwaylands job is to keep
state, we expose all these parameter via popup.
- Due to this positioner is not exposed as a resource anywhere.
- Server API is 100% backwards compatiable.
i.e new code will work identically with v5 clients.
- Client API is not. Grabs are called separately from the constructor,
and the parent surface changed to an xdgsurface, not a raw surface.
V5 code still works as-is, just not with the new constructors.
It seemed better to match the v6 (and what will be the stable v7) than
to try and do hacks and lose functionality.
Given the client needs to change the code to opt into V6 anyway. I don't
think this is a huge problem.
Test Plan: Current test still passes.
Reviewers: #plasma, graesslin
Reviewed By: #plasma, graesslin
Subscribers: graesslin, mart, plasma-devel, #frameworks
Tags: #frameworks, #plasma_on_wayland
Differential Revision: https://phabricator.kde.org/D6047
2017-09-04 15:38:35 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/xdg-shell-unstable-v6.xml
|
|
|
|
BASENAME xdg-shell-v6
|
|
|
|
)
|
|
|
|
|
2016-10-26 08:27:14 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
2016-11-07 12:34:08 +00:00
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/pointer-gestures-unstable-v1.xml
|
2016-10-26 08:27:14 +00:00
|
|
|
BASENAME pointer-gestures-unstable-v1
|
|
|
|
)
|
|
|
|
|
2016-11-08 13:17:15 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/pointer-constraints-unstable-v1.xml
|
|
|
|
BASENAME pointer-constraints-unstable-v1
|
|
|
|
)
|
|
|
|
|
Wayland foreign protocol
Summary:
Implement the "foreign" wayland protocol.
A client can export a surface with an unique string as handle,
then another client can refer to that surface and set an own surface as
child of that surface.
Potential use cases are out-of-process dialogs, such as file dialogs,
meant to be used by sandboxed processes that may not have the access
it needs to implement such dialogs.
The handle needs to be shared between the processes with other means,
such as dbus or command line paramenters.
The public api of the server side only tracks parent/child relationships as this is the only data kwin would need it for, the rest of the api is not exported so should be safer from eventual protocol changes
Test Plan:
the autotest works, but has a lot of random crashes when deleting surfaces,
unfortunately backtraces don't tell much and the crashes never occur when running into valgrind
behavior may still be wrong, depending on how the protocol is supposed
to work if more clients try to set the same exported surface as parent
Reviewers: #plasma, #kwin, davidedmundson, graesslin
Reviewed By: #plasma, #kwin, graesslin
Subscribers: davidedmundson, graesslin, plasma-devel, #frameworks
Tags: #frameworks, #plasma_on_wayland
Differential Revision: https://phabricator.kde.org/D7369
2017-10-13 09:29:17 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/xdg-foreign-unstable-v2.xml
|
|
|
|
BASENAME xdg-foreign-unstable-v2
|
|
|
|
)
|
|
|
|
|
2017-10-20 16:28:25 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/idle-inhibit-unstable-v1.xml
|
|
|
|
BASENAME idle-inhibit-unstable-v1
|
|
|
|
)
|
|
|
|
|
2017-12-18 21:50:31 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/appmenu.xml
|
|
|
|
BASENAME appmenu
|
|
|
|
)
|
2018-01-03 10:24:57 +00:00
|
|
|
|
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/server-decoration-palette.xml
|
|
|
|
BASENAME server_decoration_palette
|
|
|
|
)
|
|
|
|
|
Add Remote Access interface to KWayland
Summary:
This commit adds an interface bridge from KWin to KRfb. The purpose of
this protocol is to pass a GBM fd of currently displayed buffer from
KWin. The buffer is expected to be fully drawn once it is passed.
Related to D1230
Test Plan:
********* Start testing of RemoteAccessTest *********
Config: Using QtTest library 5.6.0, Qt 5.6.0 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 6.1.1 20160501)
PASS : RemoteAccessTest::initTestCase()
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Connected to Wayland server at: "kwayland-test-remote-access-0"
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Wayland Interface: wl_shm / 1 / 1
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Wayland Interface: org_kde_kwin_remote_access_manager / 2 / 1
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-server: Server buffer sent: fd 15
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Got buffer, server fd: 15
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-server: Remote buffer returned, client 4 , id 0 , fd 15
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-server: Buffer released, fd 15
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Buffer released
PASS : RemoteAccessTest::testSendReleaseSingle()
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Connected to Wayland server at: "kwayland-test-remote-access-0"
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Wayland Interface: wl_shm / 1 / 1
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Wayland Interface: org_kde_kwin_remote_access_manager / 2 / 1
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-server: Server buffer sent: fd 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Got buffer, server fd: 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Got buffer, server fd: 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-server: Remote buffer returned, client 4 , id 0 , fd 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-server: Remote buffer returned, client 5 , id 0 , fd 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-server: Buffer released, fd 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Buffer released
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Buffer released
PASS : RemoteAccessTest::testSendReleaseMultiple()
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-client: Connected to Wayland server at: "kwayland-test-remote-access-0"
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-client: Wayland Interface: wl_shm / 1 / 1
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-client: Wayland Interface: org_kde_kwin_remote_access_manager / 2 / 1
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-server: Server buffer sent: fd 15
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-server: Buffer released, fd 15
PASS : RemoteAccessTest::testSendClientGone()
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Connected to Wayland server at: "kwayland-test-remote-access-0"
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Wayland Interface: wl_shm / 1 / 1
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Wayland Interface: org_kde_kwin_remote_access_manager / 2 / 1
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-server: Server buffer sent: fd 15
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Got buffer, server fd: 15
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Buffer released
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-server: Buffer released, fd 15
PASS : RemoteAccessTest::testSendReceiveClientGone()
PASS : RemoteAccessTest::cleanupTestCase()
Totals: 6 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of RemoteAccessTest *********
Reviewers: graesslin, davidedmundson, romangg
Reviewed By: davidedmundson, romangg
Subscribers: jtamate, jgrulich, romangg, ngraham, alexeymin, #frameworks, davidedmundson, plasma-devel
Tags: #plasma_on_wayland, #frameworks
Maniphest Tasks: T5653, T7785
Differential Revision: https://phabricator.kde.org/D1231
2018-03-25 17:14:42 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/remote-access.xml
|
|
|
|
BASENAME remote-access
|
|
|
|
)
|
|
|
|
|
2018-05-15 09:45:17 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/xdg-output-unstable-v1.xml
|
|
|
|
BASENAME xdg-output
|
|
|
|
)
|
|
|
|
|
2018-07-13 13:50:05 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/xdg-shell.xml
|
|
|
|
BASENAME xdg-shell
|
|
|
|
)
|
|
|
|
|
2018-12-21 13:07:52 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/xdg-decoration-unstable-v1.xml
|
|
|
|
BASENAME xdg-decoration
|
|
|
|
)
|
|
|
|
|
2019-04-15 14:21:01 +00:00
|
|
|
ecm_add_wayland_server_protocol(SERVER_LIB_SRCS
|
|
|
|
PROTOCOL ${KWayland_SOURCE_DIR}/src/client/protocols/wayland-eglstream-controller.xml
|
|
|
|
BASENAME eglstream-controller
|
|
|
|
)
|
|
|
|
|
2017-12-14 06:48:43 +00:00
|
|
|
set(SERVER_GENERATED_SRCS
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-output-management-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-output-management-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-org_kde_kwin_outputdevice-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-org_kde_kwin_outputdevice-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-plasma-shell-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-plasma-shell-server-protocol.h
|
Add KWayland virtual desktop protocol
Summary:
Implement the virtual desktop protocol discussed in
T4457 xml protocol, client and server part.
The PlasmaVirtualDesktopManagement interface manages the desktops
instantiation and layout, each desktop is a PlasmaVirtualDesktop
instance which contains unique id, name and position.
PlasmaWindow has new events: plasmaVirtualDesktopEntered
and plasmaVirtualDesktopLeft when a window enters or leaves a desktop,
and desktops as the list of desktops is in. A window can be on
any subset of desktops, if the list is empty, it's considered on all desktops.
Test Plan: Autotest
Reviewers: #kwin, #plasma, graesslin, hein, davidedmundson
Reviewed By: #kwin, #plasma, davidedmundson
Subscribers: davidedmundson, zzag, bshah, romangg, kde-frameworks-devel
Tags: #frameworks
Maniphest Tasks: T4457
Differential Revision: https://phabricator.kde.org/D12820
2018-07-19 16:36:32 +00:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-plasma-shell-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-plasma-virtual-desktop-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-plasma-virtual-desktop-client-protocol.h
|
2017-12-14 06:48:43 +00:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-plasma-window-management-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-plasma-window-management-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-qt-surface-extension-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-qt-surface-extension-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-idle-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-idle-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-fake-input-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-fake-input-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-shadow-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-shadow-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-dpms-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-dpms-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-blur-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-blur-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-contrast-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-contrast-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-relativepointer-unstable-v1-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-relativepointer-unstable-v1-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-slide-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-slide-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-server_decoration-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-server_decoration-server-protocol.h
|
2018-01-03 10:24:57 +00:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-server_decoration_palette-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-server_decoration_palette-server-protocol.h
|
2017-12-14 06:48:43 +00:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-text-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-text-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-text-input-unstable-v2-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-text-input-unstable-v2-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-xdg-shell-v6-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-xdg-shell-v6-server-protocol.h
|
2018-07-13 13:50:05 +00:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-xdg-shell-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-xdg-shell-server-protocol.h
|
2017-12-14 06:48:43 +00:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-pointer-gestures-unstable-v1-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-pointer-gestures-unstable-v1-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-pointer-constraints-unstable-v1-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-pointer-constraints-unstable-v1-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-xdg-foreign-unstable-v2-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-xdg-foreign-unstable-v2-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-idle-inhibit-unstable-v1-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-idle-inhibit-unstable-v1-server-protocol.h
|
2018-05-15 09:45:17 +00:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-output-unstable-v1-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-output-unstable-v1-server-protocol.h
|
2018-12-21 13:07:52 +00:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-output-unstable-v1-client-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-xdg-decoration-server-protocol.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-xdg-decoration-client-protocol.h
|
2019-04-15 14:21:01 +00:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/wayland-eglstream-controller-server-protocol.h
|
2017-12-14 06:48:43 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
set_source_files_properties(${SERVER_GENERATED_SRCS} PROPERTIES SKIP_AUTOMOC ON)
|
|
|
|
|
2014-09-17 12:35:33 +00:00
|
|
|
add_library(KF5WaylandServer ${SERVER_LIB_SRCS})
|
2014-10-14 11:43:24 +00:00
|
|
|
generate_export_header(KF5WaylandServer
|
|
|
|
BASE_NAME
|
|
|
|
KWaylandServer
|
|
|
|
EXPORT_FILE_NAME
|
|
|
|
KWayland/Server/kwaylandserver_export.h
|
|
|
|
)
|
|
|
|
|
|
|
|
|
2014-09-17 12:35:33 +00:00
|
|
|
add_library(KF5::WaylandServer ALIAS KF5WaylandServer)
|
|
|
|
|
2014-09-17 13:47:42 +00:00
|
|
|
target_include_directories(KF5WaylandServer INTERFACE "$<INSTALL_INTERFACE:${KF5_INCLUDE_INSTALL_DIR}/KWayland/Server>")
|
|
|
|
|
2014-09-17 12:35:33 +00:00
|
|
|
target_link_libraries(KF5WaylandServer
|
|
|
|
PUBLIC Qt5::Gui
|
2015-03-03 08:43:30 +00:00
|
|
|
PRIVATE
|
|
|
|
Wayland::Server
|
|
|
|
EGL::EGL
|
2016-10-13 11:39:27 +00:00
|
|
|
Qt5::Concurrent
|
2014-09-17 12:35:33 +00:00
|
|
|
)
|
2014-09-17 13:47:42 +00:00
|
|
|
|
|
|
|
set_target_properties(KF5WaylandServer PROPERTIES VERSION ${KWAYLAND_VERSION_STRING}
|
|
|
|
SOVERSION ${KWAYLAND_SOVERSION}
|
|
|
|
EXPORT_NAME WaylandServer
|
|
|
|
)
|
|
|
|
|
2014-11-27 17:26:33 +00:00
|
|
|
install(TARGETS KF5WaylandServer EXPORT KF5WaylandTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS})
|
|
|
|
|
2017-05-26 00:36:23 +00:00
|
|
|
set(SERVER_LIB_HEADERS
|
2014-11-27 17:26:33 +00:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/KWayland/Server/kwaylandserver_export.h
|
2017-12-18 21:50:31 +00:00
|
|
|
appmenu_interface.h
|
2015-08-26 12:42:58 +00:00
|
|
|
blur_interface.h
|
2015-09-02 16:13:25 +00:00
|
|
|
contrast_interface.h
|
2014-11-27 17:26:33 +00:00
|
|
|
buffer_interface.h
|
|
|
|
clientconnection.h
|
|
|
|
compositor_interface.h
|
|
|
|
datadevice_interface.h
|
|
|
|
datadevicemanager_interface.h
|
|
|
|
dataoffer_interface.h
|
|
|
|
datasource_interface.h
|
|
|
|
display.h
|
2015-08-31 14:08:58 +00:00
|
|
|
dpms_interface.h
|
2019-04-15 14:21:01 +00:00
|
|
|
eglstream_controller_interface.h
|
Expose wl_display_set_global_filter as a virtual method
Summary:
This allows a server to filter which globals are visible and bindable by
clients.
Design rationale:
Could be it's own class with Display as an arg, but we need the lifespan
to exactly match Display, and the cardinality to match Display and it
needs to be set after we're started but before clients connect.
Better to enfore rules with code than with documentation.
I'm filtering by interface name as there isn't any other good
identifier of what a wl_global refers to, even if you could assume
you can cast the userdata to a Server::Global.
Test Plan: Attached unit test
Reviewers: #plasma, graesslin, bcooksley
Reviewed By: #plasma, graesslin
Subscribers: bcooksley, graesslin, plasma-devel, #frameworks
Tags: #frameworks, #plasma
Differential Revision: https://phabricator.kde.org/D8050
2017-11-17 08:34:01 +00:00
|
|
|
filtered_display.h
|
2015-07-02 19:21:57 +00:00
|
|
|
fakeinput_interface.h
|
2014-11-27 17:26:33 +00:00
|
|
|
global.h
|
2015-07-02 09:35:16 +00:00
|
|
|
idle_interface.h
|
2017-10-20 16:28:25 +00:00
|
|
|
idleinhibit_interface.h
|
2014-11-27 17:26:33 +00:00
|
|
|
keyboard_interface.h
|
Add Remote Access interface to KWayland
Summary:
This commit adds an interface bridge from KWin to KRfb. The purpose of
this protocol is to pass a GBM fd of currently displayed buffer from
KWin. The buffer is expected to be fully drawn once it is passed.
Related to D1230
Test Plan:
********* Start testing of RemoteAccessTest *********
Config: Using QtTest library 5.6.0, Qt 5.6.0 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 6.1.1 20160501)
PASS : RemoteAccessTest::initTestCase()
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Connected to Wayland server at: "kwayland-test-remote-access-0"
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Wayland Interface: wl_shm / 1 / 1
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Wayland Interface: org_kde_kwin_remote_access_manager / 2 / 1
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-server: Server buffer sent: fd 15
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Got buffer, server fd: 15
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-server: Remote buffer returned, client 4 , id 0 , fd 15
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-server: Buffer released, fd 15
QDEBUG : RemoteAccessTest::testSendReleaseSingle() kwayland-client: Buffer released
PASS : RemoteAccessTest::testSendReleaseSingle()
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Connected to Wayland server at: "kwayland-test-remote-access-0"
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Wayland Interface: wl_shm / 1 / 1
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Wayland Interface: org_kde_kwin_remote_access_manager / 2 / 1
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-server: Server buffer sent: fd 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Got buffer, server fd: 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Got buffer, server fd: 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-server: Remote buffer returned, client 4 , id 0 , fd 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-server: Remote buffer returned, client 5 , id 0 , fd 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-server: Buffer released, fd 15
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Buffer released
QDEBUG : RemoteAccessTest::testSendReleaseMultiple() kwayland-client: Buffer released
PASS : RemoteAccessTest::testSendReleaseMultiple()
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-client: Connected to Wayland server at: "kwayland-test-remote-access-0"
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-client: Wayland Interface: wl_shm / 1 / 1
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-client: Wayland Interface: org_kde_kwin_remote_access_manager / 2 / 1
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-server: Server buffer sent: fd 15
QDEBUG : RemoteAccessTest::testSendClientGone() kwayland-server: Buffer released, fd 15
PASS : RemoteAccessTest::testSendClientGone()
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Connected to Wayland server at: "kwayland-test-remote-access-0"
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Wayland Interface: wl_shm / 1 / 1
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Wayland Interface: org_kde_kwin_remote_access_manager / 2 / 1
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-server: Server buffer sent: fd 15
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Got buffer, server fd: 15
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-client: Buffer released
QDEBUG : RemoteAccessTest::testSendReceiveClientGone() kwayland-server: Buffer released, fd 15
PASS : RemoteAccessTest::testSendReceiveClientGone()
PASS : RemoteAccessTest::cleanupTestCase()
Totals: 6 passed, 0 failed, 0 skipped, 0 blacklisted
********* Finished testing of RemoteAccessTest *********
Reviewers: graesslin, davidedmundson, romangg
Reviewed By: davidedmundson, romangg
Subscribers: jtamate, jgrulich, romangg, ngraham, alexeymin, #frameworks, davidedmundson, plasma-devel
Tags: #plasma_on_wayland, #frameworks
Maniphest Tasks: T5653, T7785
Differential Revision: https://phabricator.kde.org/D1231
2018-03-25 17:14:42 +00:00
|
|
|
remote_access_interface.h
|
server side of new outputmanagement protocol
This implements the server part of the screen management protocol. The
protocol is implemented as a wayland protocol.
It provides the following mechanisms:
- a list of outputs, close to wl_output, with additional properties for
enabled, uuid, edid, etc.. These OutputDevices correspond to a
connected output that can be enabled by the compositor, but is not
necessarily currently used for rendering.
- a global OutputManagement, which allows creating config objects, one
per client. The client can make changes to the outputs through
setScale(outputdevice*, scale) for example.
- an OutputConfiguration resource, that can be handed to a client and
used for configuration. Changes are double buffered here. Only after
OutputConfiguration.apply() has been called, the changes are relayed
over the global OutputManagement.
The compositor is responsible to handle changes.
For a more detailed description, see the API docs in especially
outputconfiguration.h.
REVIEW:125942
2015-11-04 14:36:52 +00:00
|
|
|
outputdevice_interface.h
|
|
|
|
outputchangeset.h
|
|
|
|
outputconfiguration_interface.h
|
|
|
|
outputmanagement_interface.h
|
2014-11-27 17:26:33 +00:00
|
|
|
output_interface.h
|
|
|
|
pointer_interface.h
|
2016-11-08 13:17:15 +00:00
|
|
|
pointerconstraints_interface.h
|
2016-10-26 08:27:14 +00:00
|
|
|
pointergestures_interface.h
|
2015-06-09 00:48:56 +00:00
|
|
|
plasmashell_interface.h
|
Add KWayland virtual desktop protocol
Summary:
Implement the virtual desktop protocol discussed in
T4457 xml protocol, client and server part.
The PlasmaVirtualDesktopManagement interface manages the desktops
instantiation and layout, each desktop is a PlasmaVirtualDesktop
instance which contains unique id, name and position.
PlasmaWindow has new events: plasmaVirtualDesktopEntered
and plasmaVirtualDesktopLeft when a window enters or leaves a desktop,
and desktops as the list of desktops is in. A window can be on
any subset of desktops, if the list is empty, it's considered on all desktops.
Test Plan: Autotest
Reviewers: #kwin, #plasma, graesslin, hein, davidedmundson
Reviewed By: #kwin, #plasma, davidedmundson
Subscribers: davidedmundson, zzag, bshah, romangg, kde-frameworks-devel
Tags: #frameworks
Maniphest Tasks: T4457
Differential Revision: https://phabricator.kde.org/D12820
2018-07-19 16:36:32 +00:00
|
|
|
plasmavirtualdesktop_interface.h
|
2015-06-12 01:05:14 +00:00
|
|
|
plasmawindowmanagement_interface.h
|
2015-06-09 22:56:31 +00:00
|
|
|
qtsurfaceextension_interface.h
|
2014-11-27 17:26:33 +00:00
|
|
|
region_interface.h
|
2016-10-07 07:07:34 +00:00
|
|
|
relativepointer_interface.h
|
2014-11-27 17:26:33 +00:00
|
|
|
resource.h
|
|
|
|
seat_interface.h
|
2015-12-10 08:39:24 +00:00
|
|
|
server_decoration_interface.h
|
2018-01-03 10:24:57 +00:00
|
|
|
server_decoration_palette_interface.h
|
2015-07-15 09:07:50 +00:00
|
|
|
shadow_interface.h
|
2014-11-27 17:26:33 +00:00
|
|
|
shell_interface.h
|
2015-09-10 06:19:39 +00:00
|
|
|
slide_interface.h
|
2014-11-27 17:26:33 +00:00
|
|
|
subcompositor_interface.h
|
|
|
|
surface_interface.h
|
2016-05-02 12:28:26 +00:00
|
|
|
textinput_interface.h
|
2015-03-25 13:23:08 +00:00
|
|
|
touch_interface.h
|
2018-12-21 13:07:52 +00:00
|
|
|
xdgdecoration_interface.h
|
2016-04-21 10:56:02 +00:00
|
|
|
xdgshell_interface.h
|
Wayland foreign protocol
Summary:
Implement the "foreign" wayland protocol.
A client can export a surface with an unique string as handle,
then another client can refer to that surface and set an own surface as
child of that surface.
Potential use cases are out-of-process dialogs, such as file dialogs,
meant to be used by sandboxed processes that may not have the access
it needs to implement such dialogs.
The handle needs to be shared between the processes with other means,
such as dbus or command line paramenters.
The public api of the server side only tracks parent/child relationships as this is the only data kwin would need it for, the rest of the api is not exported so should be safer from eventual protocol changes
Test Plan:
the autotest works, but has a lot of random crashes when deleting surfaces,
unfortunately backtraces don't tell much and the crashes never occur when running into valgrind
behavior may still be wrong, depending on how the protocol is supposed
to work if more clients try to set the same exported surface as parent
Reviewers: #plasma, #kwin, davidedmundson, graesslin
Reviewed By: #plasma, #kwin, graesslin
Subscribers: davidedmundson, graesslin, plasma-devel, #frameworks
Tags: #frameworks, #plasma_on_wayland
Differential Revision: https://phabricator.kde.org/D7369
2017-10-13 09:29:17 +00:00
|
|
|
xdgforeign_interface.h
|
2018-05-15 09:45:17 +00:00
|
|
|
xdgoutput_interface.h
|
2017-05-26 00:36:23 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
install(FILES
|
|
|
|
${SERVER_LIB_HEADERS}
|
2014-11-27 17:26:33 +00:00
|
|
|
DESTINATION ${KF5_INCLUDE_INSTALL_DIR}/KWayland/Server COMPONENT Devel
|
|
|
|
)
|
2015-06-18 00:05:05 +00:00
|
|
|
|
2017-05-26 00:36:23 +00:00
|
|
|
# make available to ecm_add_qch in parent folder
|
|
|
|
set(KWaylandServer_APIDOX_SRCS ${SERVER_LIB_HEADERS} PARENT_SCOPE)
|
|
|
|
|
2015-06-18 00:05:05 +00:00
|
|
|
include(ECMGeneratePriFile)
|
|
|
|
ecm_generate_pri_file(BASE_NAME KWaylandServer LIB_NAME KF5WaylandServer DEPS "core" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5})
|
|
|
|
install(FILES ${PRI_FILENAME}
|
|
|
|
DESTINATION ${ECM_MKSPECS_INSTALL_DIR})
|