Commit graph

12947 commits

Author SHA1 Message Date
Martin Gräßlin
d2cd10861b [wayland] Use a DPI of 96 to calculate physical size for the server's outputs
Not perfect but better than a hardcoded physical size.
2015-04-02 17:36:38 +02:00
Martin Gräßlin
2b185fa7e0 [wayland] Set internal cursor through WaylandCursorTheme in AbstractBackend
Getting the cursor image from the cursor theme is unfortunately not
straight forward. We have three different libraries and all have
drawbacks:
* XCursor - we just kicked it out
* xcb-util/cursor - only provides xcb_cursor_t, so a dependency on X
* wayland-cursor - only a client side API

The picked solution is using wayland-cursor. It provides the cursor in a
wl_buffer. Unfortunately the client side API does not easily allow to
a) read it back
b) init without a wl_shm_pool

Thus we need to work this around:
* create an internal connection
* get a ShmPool on it
* init WaylandCursorTheme with this ShmPool
* get the cursor wl_buffer from the theme
* trigger a roundtrip
* get the corresponding BufferInterface for the buffer
* set the content as the software cursor
2015-04-02 14:37:23 +02:00
Martin Gräßlin
265af8e7ed [wayland] WaylandCursorTheme takes ShmPool instead of WaylandBackend
Allows to use the WaylandCursorTheme without needing a WaylandBackend.
WaylandBackend was only used for getting the ShmPool.
2015-04-02 14:25:51 +02:00
Martin Gräßlin
bb404f7d67 [wayland] Fix checking id to Surface in xwayland client message
We need to also pass the client to the verification.
2015-04-02 09:49:39 +02:00
Mika Allan Rauhala
e1e437135b Fix Background Contrast during Present Windows
We already set WindowForceBlurRole for docks during Present Windows. This also sets
WindowForceBackgroundContrastRole.

REVIEW: 122904
BUG: 341926
2015-04-01 16:48:22 +02:00
Martin Gräßlin
c5693270db [wayland] Add support for a "software" cursor
At least the framebuffer backend does not have support for an overlay
cursor. Thus the cursor needs to be rendered by the scene. This change
allows a backend to set that it needs a software cursor which triggers
tracking in the AbstractBackend. A repaint for the old cursor region is
triggered whenever the cursor pos changes.

So far only the QPainter/framebuffer scene is adjusted to render the
software cursor. This is done after rendering a frame with the up to
date cursor position.

There is one problem, though: the KWin internal cursors don't work
as we need to get it from the theme. Using wayland-cursor doesn't help
as it gives us a (client) wl_buffer* and we cannot read the memory back.
2015-04-01 15:36:40 +02:00
Martin Gräßlin
de3788c094 [wayland] Add a framebuffer backend
The framebuffer backend currently only supports the QPainter backend
if the format matches RGB32.

It does not yet support any cursors.
2015-04-01 11:05:45 +02:00
Martin Gräßlin
30dd2ce466 [input] Add support for VT switch shortcuts
If we have a VirtualTerminal and get a XKB_KEY_XF86Switch_VT_* keysym
we trigger a VT switch.
2015-04-01 11:05:45 +02:00
Martin Gräßlin
f4005c7f74 [wayland] Add initial support for taking over VirtualTerminals
A new Singleton VirtualTerminal is added. It interacts with Logind to
get the VTNr to take over. To get the signal to release and acquire the
VT we use a signalfd with a QSocketNotifier to monitor for signals. The
used signals must be blocked for all threads prior to startup otherwise
they are delivered to secondary threads causing issues.
2015-04-01 11:05:45 +02:00
Martin Gräßlin
3d5899cbfd [logind] Add support for VTNr property 2015-04-01 11:05:45 +02:00
Martin Gräßlin
61579506e3 [input] Only update seat state if session is active
When our session gets inactive libinput loses all devices, thus our
Seat would not have neither keyboard, pointer nor touch. To not confuse
all connected clients we block updates while libinput is suspended. After
resume we check whether something actually changed and emit the
corresponding signals to ensure everything is up to date.
2015-04-01 11:05:45 +02:00
Martin Gräßlin
634fd68446 Ensure screens are created before fully setting up libinput
Parts rely on screens being available but input might be created
before screens are available. Thus connect to signal and delay.
2015-04-01 11:05:45 +02:00
Martin Gräßlin
90b1980ce0 Emit signal in Application once Screens are created 2015-04-01 11:05:45 +02:00
Martin Gräßlin
c23e106c8b [input] Include more safety checks
nullptr checks as input events might be processed prior to KWin having
been fully started.
2015-04-01 11:05:45 +02:00
Martin Gräßlin
7a96c3ee46 [input] Disconnect the logind connection once setupLibInput is called
Don't want it to be called again if we lose session control.
2015-04-01 11:05:45 +02:00
Martin Gräßlin
26c44a6524 Add recursion check to LogindIntegration::takeControl
We never want to call takeControl twice at the same time.
2015-04-01 11:05:45 +02:00
Martin Gräßlin
2a39e6290b [input] Try updating the modifiers after each key press
TODO: send new modifier information to wayland server.
2015-04-01 11:05:45 +02:00
Martin Gräßlin
b824175e05 [input] Set a default xkb modifier map 2015-04-01 11:05:45 +02:00
Martin Gräßlin
2b0a837340 [wayland] Create QPainterBackend through the AbstractBackend
SceneQPainter delegates creation to the AbstractBackend removing the
casting logic.
2015-04-01 11:05:45 +02:00
Martin Gräßlin
e1ae0b8bc4 [wayland] Create OpenGLBackend through the AbstractBackend
Replaces casting logic in the SceneOpenGL. Now the create is delegated
to the backend allowing also to move the ifdef logic to where it belongs.
2015-04-01 11:05:45 +02:00
Martin Gräßlin
00844ffba7 Bind cmake option HAVE_WAYLAND_EGL to KWIN_HAVE_EGL
If we don't have EGL we also do not want Wayland_EGL.
2015-04-01 11:05:45 +02:00
Martin Gräßlin
65839e1617 [wayland] Create Screens through the AbstractBackend
The AbstractBackend provides a virtual method to create the Screens.
A concrete backend can implement this method to create the backend
specific Screens instance.

This removes the casting logic from Screens::create.
2015-04-01 11:05:45 +02:00
Mika Allan Rauhala
3389c7569f Adapt to KDecoration API changes
Adapt to API changes introduced by b62e8888cd39301e00ad98dfe791fa66676408fb.
It adds DecoratedClient::color(group, role) for getting colors that are
not included in QPalette. Breeze used to read these colors from
kdeglobals, breaking per window color schemes. KWin now handles reading
these colors along with QPalette loading with DecorationPalette.

REVIEW: 122883
2015-03-31 15:26:55 +02:00
Martin Gräßlin
66e92347a8 [wayland] Initialize WaylandSeat::m_touch
Without it results in a nice crash when trying to use with touch support.
Having ways to test clearly improves ;-)
2015-03-31 11:22:58 +02:00
Mika Allan Rauhala
2217c1038f Add Quick Tile Window to the Top and Bottom shortcuts
This adds "Quick Tile Window to the Top" and "Quick Title Window to the Bottom" shortcuts. These are
useful for those using displays that are in portrait orientation.

CCBUG: 310005
REVIEW: 123153
2015-03-31 11:10:13 +02:00
Martin Gräßlin
f7bed6a003 [libinput] Pass device capabilities to Wayland::Server::SeatInterface
We handle device added/remove to monitor whether we have keyboard,
pointer and touch devices and emit signals. Those are used to update
the SeatInferface from InputRedirection.
2015-03-26 16:19:26 +01:00
Martin Gräßlin
93b3626a37 [libinput] Try to dispatch events directly after setup
Without we might end in a race as kwin_wayland might start the Xwayland
server before we have a populated seat interface.
2015-03-26 16:17:51 +01:00
Martin Gräßlin
60783b8228 Touch support in libinput 2015-03-25 16:40:17 +01:00
Martin Gräßlin
36f987198d [wayland] Add support for processing touch events
InputRedirection gains basic support for processing touch events which
are delegated to KWayland::Server.

WaylandBackend accepts touch events from KWayland::Client and delegates
them to the InputRedirection.
2015-03-25 14:50:14 +01:00
Martin Gräßlin
2e2ea354b6 [kcmkwin/tabbox] static_cast QKeyEvent
Fixes a defect reported by coverity.
2015-03-25 08:18:12 +01:00
Nick Shaforostoff
da5328953a fix memleak in mouseclick effect
REVIEW: 123114
2015-03-25 00:02:24 +00:00
Martin Gräßlin
219946edce Fix build with HAVE_WAYLAND and HAVE_X11_XCB but no HAVE_WAYLAND_EGL
Let's try again.
2015-03-24 10:50:46 +01:00
Martin Gräßlin
2d1622ea09 Fix build without Wayland, but with HAVE_X11_XCB
Build error in SceneOpenGL.
2015-03-24 10:43:48 +01:00
Andrey Bondrov
d7fd252484 Merge branch 'Plasma/5.2' 2015-03-24 18:52:15 +10:00
Martin Gräßlin
289ec53350 Add basic information about the X server to supportInformation
* Vendor name
* Vendor release
* Protocol version
* All Extensions used by KWin (name, present and version)

Need for this recognized due to a bug related to no xrandr present.

CCBUG: 345448
2015-03-24 08:54:03 +01:00
Martin Gräßlin
b3145f294f Print out all build options in supportInformation
Based on experience that builds might not have optional features
(packagers running automated builds, devs using kdesrc-build).
2015-03-23 16:02:12 +01:00
Martin Gräßlin
b405fda213 Drop support for KAppmenu
We released three versions with it being disabled and it doesn't look
like it will come back any time soon. Also the build was broken at least
since the repo splitting due to incorrect path to dbus xml.

In addition the connection to decorations got dropped already with the
change to kdecoration2. Which means it anyway needs large adjustements
to get the code working again.

Overall it doesn't look like it makes lots of sense to keep the code
around for someone working on it in future. If that happens this change
can be reverted.
2015-03-23 15:56:50 +01:00
Martin Gräßlin
5088314e9f Drop KWIN_BUILD_DESKTOPCHANGEOSD from conig-kwin.h
Not referenced anywhere in build system.
2015-03-23 15:26:02 +01:00
Martin Gräßlin
49f58059c6 [wayland] Backends are no longer singletons
They are installed in the WaylandServer, thus we don't need an explicit
singleton accessor. If we need to differentiate we can cast.
2015-03-23 14:29:07 +01:00
Andrey Bondrov
b3a9f41fd0 Fix title height for maximized windows with Aurorae decorator 2015-03-23 23:27:09 +10:00
Martin Gräßlin
93e717b072 [wayland] Drop Wayland support in SceneXRender
It didn't get adjusted for Xwayland, so probably doesn't work any more.
The rendering mode seems not very useful if honest and it's better to
use the QPainter backend.
2015-03-23 13:47:21 +01:00
Martin Gräßlin
ee186a68c4 [wayland] Improve decision which backend to create
Both Wayland and X11 backend are bound to the --windowed flag. Which
one to create is decided whether DISPLAY or WAYLAND_DISPLAY env variables
are set with Wayland having precedence over X11. Passing the display as
command line argument overwrites the env variable and takes further
precedence. E.g. if WAYLAND_DISPLAY is exported and --x11-display
argument is provided, it will create X11 backend. Similarly there is now
a --wayland-display command line argument.

If no backend got created, kwin_wayland will exit.

The singleton variant of WaylandBackend is adjusted to take the display
as argument and pass it to the Connection.
2015-03-23 12:45:21 +01:00
Martin Gräßlin
ed504d0c50 Remove unused includes from wayland_backend.cpp 2015-03-23 10:23:10 +01:00
Martin Gräßlin
622d333c11 Do not find Wayland::Client
No longer used.
2015-03-23 10:11:57 +01:00
Martin Gräßlin
75d60d4f85 [wayland] Make Wayland::Cursor a proper optional build dep
Only needed in the Wayland backend and can easily be ifdefed there.
2015-03-23 10:10:38 +01:00
Martin Gräßlin
3c6fd0190b [tests] Only use KWayland in the waylandclienttest
No need for Wayland::Client any more - KWayland encapsulates the usage.
2015-03-23 09:54:37 +01:00
Martin Gräßlin
dce8e74eb0 Do not find Wayland::Server
Not needed, we have the KWayland wrapper.
2015-03-23 09:18:55 +01:00
Simeon Bird
1de1e80d50 Fix hang on nvidia hardware when deleting sync objects
When a sync object is deleted, the fence it is connected to must already
be signalled, or the driver will busy-wait forever.
Signal fences before deleting syncs to avoid this.

BUG: 343551
FIXED-IN: 5.3
REVIEW: 123090
2015-03-22 23:55:48 -04:00
Christophe Giboudeaux
bea55dc614 -Wmissing-include-dirs 2015-03-22 22:36:26 +01:00
Christophe Giboudeaux
0fb0176e4b Don't display anything after showing the found packages. 2015-03-22 22:25:38 +01:00