Commit graph

137 commits

Author SHA1 Message Date
Sebastian Kügler
629cc70123 Split drm_backend.{h,cpp} into separate files
Summary:
This changes splits up the monster file containing different types used
in the DRM backend into separate files per class:

- drm_backend.{h,cpp}
- drm_buffer.{h,cpp}
- drm_inputeventfilter.{h,cpp}
- drm_output.{h,cpp}
- drm_pointer.h

No actual code changes other than build fixes.

Clean up headers in the split files.

Test Plan: Builds with GBM enabled

Reviewers: graesslin

Reviewed By: graesslin

Subscribers: plasma-devel

Projects: #plasma

Differential Revision: https://phabricator.kde.org/D1168
2016-03-21 15:11:26 +01:00
Sebastian Kügler
d8a3e0525f First part of outputmanagement wayland interface
This patch implements read access to the outputmanagement interface in
kwin_wayland's drm backend.

- outputdevices are created in DrmOutput, just like the wl_outputs
- wayland_server implements the outputmanagement interface and
- passes the changesets down into the backend

This means that the interface is announced, independently of the DRM
backend, but the actual outputs are currently only there if the DRM
backend is used.

The changes are not applied (passed into the kernel's drm interface
yet). This is obviously work-in-progress, so it's incomplete. Since it
allows us to run kwin[master] with the libkscreen KWayland backend, it's
a significant step allowing testing and further development.

Reviewed-by: Martin Gräßlin
2016-03-10 19:57:07 +01:00
l10n daemon script
5ebbc6a7a3 SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2016-03-05 09:55:50 +00:00
l10n daemon script
5cfadf72a1 SVN_SILENT made messages (.desktop file) 2016-03-04 12:10:05 +00:00
l10n daemon script
d678ffc8c5 SVN_SILENT made messages (.desktop file) 2016-03-03 13:12:24 +00:00
l10n daemon script
9472756205 SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2016-03-01 13:09:20 +00:00
Martin Gräßlin
a029300ce5 Rework cursor image handling for Wayland
So far updating the cursor image was not really defined. It was possible
to use the cursor image from the wayland seat or have a custom set cursor
image. But there are no rules in place to decide which one to use when.

With this change a dedicated CursorImage class is introduced which tracks
the cursor image changes on the seat, on the decoration, in the effects
and so on. In addition it tracks which is the current source for the
image, that is whether e.g. the cursor from the seat or from effects
override should be used. Whenever the cursor image changes a signal is
emitted, which is connected to the signal in AbstractBackend.

Based on that the backends can directly show the image. The existing
code in the backends to install a cursor shape or to install the cursor
from the server is completely dropped. For the backend it's irrelevant
from where the image comes from.

A new feature added is that the cursor image is marked as rendered. This
is then passed on to the frame rendered in the Surface and thus animated
cursors are finally working. Unfortunately animated cursors are broken in
Qt (see https://bugreports.qt.io/browse/QTBUG-48181 ).
2016-02-25 08:14:48 +01:00
Martin Gräßlin
1c4c5caf65 [backends/hwcomposer] Use input event filter for turning screen on/off
Like in the drm backend we use an InputEventFilter to turn the backlight
on and off. In this case the filter needs to be always installed as key
event should also turn the screen off. We cannot use a global shortcut
as it would not trigger while the screen is locked.

Unlike the filter in DRM backend only the power key can toggle the
backlight, other key events are ignored. For pointer we are optimistic
and already support enabling the backlight. Double tap to wake is also
implemented, but at least on reference hardware (Nexus 5) doesn't work
as disabling the backlight also disables touch input.

Reviewed-By: Bhushan Shah
2016-02-16 10:49:04 +01:00
Martin Gräßlin
a66eb1a5b9 [backends/drm] Double Tap to enable output
If the output is off a double tap (touch) can re-enable it. The two
taps have to happen in the double click interval (we don't have
something better and it kind of matches) and have to be by only one
touch point. If there are multiple touch points it's not considered
as a double tap. A todo is to restrict the possible distance of the
two taps to one thumb.

Tested-By: Marco Martin
2016-02-15 17:35:36 +01:00
Martin Gräßlin
5b1eb584d6 [backends/drm] Fix typo
Thanks to kbroulik for noticing that I really, really should bye a
new keyboard as it's eating my "p" key.
2016-02-15 16:30:22 +01:00
Martin Gräßlin
57b11f8429 [backends/drm] Use an InputEventFilter to reenable outputs
So far the DrmOutput connected to all input events when going into
power saving. As we now have the input filters it's better to just
install a filter when an output goes into powersave and remove the
input filter again when all outputs are enabled again.

To make this work InputRedirection gains a new method to add a new
filter as the first filter. This is a potentially dangerous method
as it allows to have a filter before LockScreenFilter gets the
events. But in case of DPMS it's something we actually want.

A nice new feature possible with the input filter is that we can
filter out the event which re-enables the outputs. Thus when getting
on a system with output off and screen locked, the first key hit
doesn't go to the lock screen.

Reviewed-By: Bhushan Shah
BUG: 341201
Fixed-in: 5.6.0 (Wayland-only)
2016-02-15 15:53:43 +01:00
l10n daemon script
c54ec46b65 SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2016-02-03 09:28:15 +00:00
Martin Gräßlin
757523a324 Use kwinApp()->config() instead of KSharedConfig::openConfig()
That way all over kwin we can inject a custom config in the autotests.
2016-01-29 11:24:18 +01:00
l10n daemon script
e65f7a349f SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2016-01-18 14:17:07 +00:00
l10n daemon script
9bf7ad4a9f SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2016-01-12 12:09:37 +00:00
Martin Gräßlin
e861c5f185 Merge branch 'Plasma/5.5' 2016-01-11 13:22:26 +01:00
Martin Gräßlin
a18177cc24 [backends/drm] Set mode when changing from/to a gbm buffer
Tiling configurations of DRM and GBM buffers differ, so we need to
explicitly set the mode when it changes.

BUG: 357543
FIXED-IN: 5.5.4
2016-01-11 12:53:14 +01:00
l10n daemon script
096b61ee44 SVN_SILENT made messages (.desktop file) 2016-01-10 14:47:34 +00:00
l10n daemon script
a10ed44aa0 SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2015-12-29 11:30:35 +00:00
Martin Gräßlin
5cfe9428aa [backends/wayland] Use server side decorations if available 2015-12-18 16:41:49 +01:00
Martin Gräßlin
96124c1643 Merge branch 'Plasma/5.5' 2015-12-15 13:08:16 +01:00
Nerdopolis Turfwalker
3247382752 [backends/fbdev] Support framebuffers with different color depths
Support more framebuffer color depths

REVIEW: 126262
BUG: 355569
FIXED-IN: 5.5.1
2015-12-15 13:05:00 +01:00
Martin Gräßlin
2e191bb751 [backends/virtual] Fix include guards
Kudos to kbroulik for telling me, that I cannot copy'n'paste.
2015-12-10 15:19:19 +01:00
Martin Gräßlin
9f8a6d8e24 Merge branch 'Plasma/5.5' 2015-12-01 08:01:00 +01:00
Martin Gräßlin
d89777bcac Make Wayland::EGL optional again
This is needed to make KWin build-able on non-Linux, but is actually
only a workaround. The dependency should also be available on non-Linux.

This disables the EGL integration in the Wayland backend (QPainter still
available) and the EGL fallback in the qpa plugin (preferred context
sharing still available, but requires a working OpenGL Scene).

REVIEW: 126202
2015-12-01 07:58:47 +01:00
Martin Gräßlin
a055e2de82 Only compile VirtualTerminal if libinput is found
The implementation of VirtualTerminal is too linux specific and doesn't
compile on e.g. freebsd. Currently the most usage is in combination with
libinput. Only usage is:
* libinput related functionality in InputRedirection
* backends without custom input handling

Thus binding the feature to whether libinput is available is currently
the least invasive approach to get it compile on non-Linux.

In the long run this needs a different solution. The functionality
provided by VirtualTerminal is required and without the backends don't
work. It's needed to get notified about VT switches, when KWin needs to
stop rendering. So a solution for non-Linux needs to be found if
non-Linux wants to provide Wayland in future.

REVIEW: 126182
2015-12-01 07:57:39 +01:00
l10n daemon script
acfef30207 SVN_SILENT made messages (.desktop file) 2015-11-26 18:12:55 +00:00
l10n daemon script
e24e39b528 SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2015-11-26 15:58:56 +00:00
Martin Gräßlin
04ea8ec22f [backends/x11] Add a dedicated EGL backend for multi-surface rendering
Based on the existing EglOnXBackend. Main difference is that this
subclass implements perScreenRendering with support for one EGLSurface
per output.
2015-11-26 08:33:07 +01:00
Martin Gräßlin
b1914b4b2c Add pure virtual OpenGLBackend::init() method
All backends already have an init method so far called from the ctor.
This change moves the call to init out of the OpenGL backends and makes
it the responsibility of the creating code to also call init on the
backend.

This change makes it easier to have virtual methods being called during
the initialization.
2015-11-26 08:33:07 +01:00
Martin Gräßlin
56bd1e7194 [wayland] Add support for initial output count for nested compositors
Added to x11 backend which creates one window per output.

New command line option is called --output-count=<int>.
2015-11-26 08:33:07 +01:00
Martin Gräßlin
1e3013b58c [backends/x11] Prepare for multi-output rendering
The backend is prepared for managing multiple x11 windows. Currently
it's still only one window, but it's all internally working through
the architecture for multiple windows.
2015-11-26 08:33:07 +01:00
Martin Gräßlin
f5905e5e48 [backends/x11] Prepare QPainter backend for multi screen rendering
The backend is in principal ready to render to multiple X11 windows.
This will allow simulating a multi screen setup.
2015-11-26 08:33:07 +01:00
l10n daemon script
c69c46d8ca SVN_SILENT made messages (.desktop file) 2015-11-25 18:20:33 +00:00
Martin Gräßlin
3361373445 [backends/hwcomposer] Announce support for DPMS
Hooked up to toggle blank output dependent on state.

REVIEW: 126095
2015-11-23 11:48:39 +01:00
Martin Gräßlin
01451eea36 Revert "Handle conflicts between epoxy and manually resolved function pointers"
This reverts commit ac1dbac8b1.
2015-11-17 14:58:59 +01:00
Martin Gräßlin
e71a230213 [hwcomposer] Add support for backlight through light_device_t
We use the hw module's backlight and set the color to either 0
or FF depending on whetehr we want to have the screen on or off.
This turns the backlight off properly. It is bound to the toggleBlank
functionality so that we always turn on/off the backlight depending
on whether our compositor is on or off.

In addition we listen to key release events on the power button to
toggle the state.

REVIEW: 126083
2015-11-17 14:45:34 +01:00
Martin Gräßlin
8d00355448 [hwcomposer] Don't waitVsync if we haven't activated vsync yet
Would just hit the timeout, no need to wait 16 msec for nothing.
2015-11-17 14:45:34 +01:00
l10n daemon script
6bb9f6db7b SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2015-11-17 13:07:36 +00:00
Martin Gräßlin
57a3cea142 [backends/hwcomposer] Base HwcomposerScreens on BasicScreens 2015-11-17 10:49:09 +01:00
Martin Gräßlin
eb81ddfb86 [backends/fbdev] Use BaseScreens implementation 2015-11-17 10:46:32 +01:00
Martin Gräßlin
898eefc6be [backends/wayland] Use BasicScreens implementation 2015-11-17 10:43:10 +01:00
Martin Gräßlin
7b12e55857 [backends/x11] Use BasicScreens implementation 2015-11-17 10:40:17 +01:00
Martin Gräßlin
cab25fc13f [backends/wayland] Drop warning messages concerning egl backend
From a time before we split into platform plugins.
2015-11-17 09:51:50 +01:00
Martin Gräßlin
75c82fce19 [backends/wayland] Only set socket name if it got sepcified
If we don't have a dedicated device identifier we should use the default
mechanismn which involves using the WAYLAND_DISPLAY or WAYLAND_SOCKET env
variable.
2015-11-17 09:51:50 +01:00
Martin Gräßlin
930e56767e [backends/wayland] Do not query outputs
Not needed, we use a nested window.
2015-11-17 09:51:50 +01:00
Martin Gräßlin
df71c5b61b [backends/wayland] Simplify WaylandScreens by basing on ShellSurface size
It's a screen for a nested setup - no need for integrating with Wayland's
output for that.
2015-11-17 09:51:50 +01:00
Martin Gräßlin
9381d3f88c [backends/wayland] Drop XRandR updating
No longer needed as we use Xwayland.
2015-11-17 09:51:50 +01:00
Martin Gräßlin
3f6cb8812b [backends/wayland] ShellSurface opened as a toplevel instead of fullscreen
Going towards nested setup.
2015-11-17 09:51:50 +01:00
Martin Gräßlin
eafded7127 [backends/wayland] Drop subsurface for cursor
As we don't use the fullscreen shell any more, we use the "normal"
cursor image handling of wl_seat.
2015-11-17 09:51:50 +01:00