Commit Graph

65 Commits (03074c925ce97e3144c7e08695beffdf982214de)

Author SHA1 Message Date
Martin Gräßlin 5558d62220 [backends/virtual] Add possibility to have multiple virtual screens
Very basic: all screens have same size and are ordered from left to
right. It's mostly meant to allow easy test cases with multi-screen.

The quick tiling test demonstrates how it's used.
2015-10-14 16:38:17 +02:00
Martin Gräßlin 66e27b69bb [backends/hwcomposer] Drop dependency on hybrissync library
No longer used and not needed.
2015-10-14 14:33:49 +02:00
l10n daemon script db3ac9a536 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-10-14 10:26:47 +00:00
Martin Graesslin 28fe78a94f Adjust to newer upstream libhybris version
Based on a previous patch done by David Edmundson and heavily
inspired by qt5-qpa-hwcomposer-plugin [1].

The change requires a newer libhybris than the one used by Ubuntu. In
fact it allows to build against current master (at the day of writing [2]).

REVIEW: 125606

[1] https://github.com/mer-hybris/qt5-qpa-hwcomposer-plugin
[2] bd6df6a306
2015-10-14 08:14:24 +02:00
Martin Graesslin 425e703dff Drop Android input handling
Libinput does work on libhybris enabled devices. There is no need to
use Android's input stack. This simplifies our code a lot and increases
sharing with normal Linux systems.

What's tricky is to convince the system to use libinput through with our
logind helper. Logind fails to open the files for us if we start KWin
over either ssh or adb shell. We need to get it into a proper session, so
only a kwin started through a helper like simplelogin will be able to use
libinput.

REVIEW: 125608
2015-10-14 08:13:37 +02:00
l10n daemon script f4069deb5c 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-10-13 12:48:07 +00:00
l10n daemon script 8e17059be7 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-10-09 11:48:28 +00:00
Martin Gräßlin a025791d7b [backends/virtual] Add a virtual rendering OpenGLBackend
The backend is based on drm's gbm backend and also uses the GBM
platform, but with the default display allowing the driver to pick
a device. In addition it doesn't use a surface, but a surfaceless
context with a framebuffer object to render to. Given that it diverged
too much from drm's backend to allow more code sharing.

If KWin is started from a tty it gets a proper driver, if KWin is started
in a X11 session it only gets llvmpipe. Given that there is a chance that
the autotests using the virtual backend will fail. In that case a follow
up patch will enforce either O2 or Q.
2015-10-08 16:12:09 +02:00
Martin Gräßlin 2e888da70e [backends/virtual] Move save screenshot functionality to the backend
Allows code reusability when adding an OpenGL backend.
2015-10-08 15:53:03 +02:00
l10n daemon script 83cc5f5842 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-10-05 10:23:58 +00:00
l10n daemon script 43c35c1c6c 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-10-04 10:50:57 +00:00
l10n daemon script c342be5961 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-10-03 11:20:49 +00:00
l10n daemon script 4b74b294ab 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-10-02 10:17:30 +00:00
Martin Gräßlin bfa9646d1d [wayland] Add a virtual framebuffer backend
A new backend which doesn't present the rendered output. It uses a
QPainter scene, renders to a QImage but doesn't present it anywhere.
Thus a real virtual backend.

By exporting the environment variable KWIN_WAYLAND_VIRTUAL_SCREENSHOTS
the backend creates a temporary dir, prints the path to std-out and
saves each rendered frame into that directory. Of course with exit it
will be deleted again.
2015-10-02 10:58:33 +02:00
Martin Gräßlin fc0272f3c4 [wayland] Add a --list-backends command line arg for listing available backends
Distributions do package each backend plugin in a dedicated package,
which means just because KWin got compiled with a specific backend,
doesn't mean it is also available at runtime.

In order to better support this reality this change introduces a
list-backends command line option. Each of the plugins got the json
metadata extended by the KPlugin syntax, so that we have a name and
description to print.

As we already locate all plugins anyway, the additional findPlugins for
the selected backend is changed to search the list of all plugin meta
data.
2015-10-02 09:31:47 +02:00
Martin Gräßlin e5fbb20e8b [backends/x11] Allow grab keyboard/pointer
When pressing right control key the input gets grabbed/released.
The grab is for both keyboard and pointer and pointer is also confined
to the window.

How to grab/ungrab is added to the window title.
2015-09-30 07:40:45 +02:00
Martin Gräßlin 4fa01583cb [backends/x11] Use NETWinInfo for our window. 2015-09-30 07:40:45 +02:00
Martin Gräßlin 6326d96c02 [backends/x11] Set a black background pixel on our rendering window
By setting a black background pixel the window doesn't open with
garbage content (garbage being copy content of what was in the
framebuffer).
2015-09-18 11:06:33 +02:00
Martin Gräßlin 873b4ed717 Fix build with some compilers
If it's a QPointer the connect needs a .data()
2015-09-11 14:53:34 +02:00
Martin Gräßlin 43f6c1e041 [wayland] Add support for DpmsInterface
Our server announces the DpmsManagerInterface and in the DRM backend
we announce support for Dpms on the OutputInterface (if the Output
supports it) and we connect to changing Dpms requests.
2015-09-10 14:32:41 +02:00
Martin Gräßlin ffa075490e [drm] Mark outputs as disabled in backend depending on DPMS state
Whenever the dpms of an output changes we update the outputs enabled
state in the AbstractBackend.
2015-09-10 14:31:46 +02:00
Martin Gräßlin e3ff85d4d9 [drm] Re-enable Output on input event
If an Output went into DPMS standby we need to re-enable the Output
once we get any input event.

For this we connect to the signals of InputRedirection once we go
to standby. Once we enable again, we disconnect (to not handle the
events all the time), blank the screen (initial modesetting) and
trigger a complete repaint.
2015-09-10 14:31:46 +02:00
Martin Gräßlin 6281cf84b4 [drm] Make DrmOutput a QObject
Needs to emit signals when DPMS changes and also needs private slots
when DPMS changes.
2015-09-10 14:31:46 +02:00
Martin Gräßlin a1bcc8e848 [drm] Don't present on an output which is in dpms standby
It will fail if the output is not on, so let's don't try to present
on a disabled output.
2015-09-10 14:31:46 +02:00
Martin Gräßlin 902bdb6cf0 [drm] Add initial support for DPMS
We read the drm property for the connector and set dpms initialy to On.
2015-09-10 14:31:46 +02:00
Martin Gräßlin 5d946e3762 Make X11_XCB a build dependency of X11 windowed backend
Let's rather not build the plugin if we don't have the dependency
then building it without OpenGL support. Simplifies the code a bit
and makes the backend overall more useful and goes along with e.g.
the Wayland one which has EGL also as a hard dependency for the
plugin.

REVIEW: 124697
2015-08-12 11:39:20 +02:00
Martin Gräßlin 06aacf4f65 Drop cmakedefine HAVE_WAYLAND_EGL
Now a required build dependency.
2015-08-12 11:39:20 +02:00
Martin Gräßlin a6c6408f54 Drop cmakedefine HAVE_WAYLAND_CURSOR
Now a required build-dep.
2015-08-12 11:39:20 +02:00
Martin Gräßlin c24e315a9b Drop build option KWIN_BUILD_EGL
It doesn't make much sense any more as we do no longer link EGL since the
switch to epoxy. And epoxy pulls it in at runtime if needed.
Even more on Wayland it's just plain stupid to have EGL disabled. So
removing the option just simplifies our code base without any
disadvantages.

REVIEW: 124695
2015-08-11 11:15:25 +02:00
Martin Gräßlin 125cc5082f Change default logging category to QtCriticalMsg
Less noisy KWin by default.
2015-07-31 13:29:58 +02:00
Martin Gräßlin 53004b95ff Port left over qDebug to qCDebug 2015-07-31 13:25:51 +02:00
Martin Gräßlin 339d9de351 [backends/drm] Drm backend support syncsToVBlank 2015-07-17 20:39:37 +02:00
Martin Gräßlin 4c03115882 [backends/drm] Fix crash in cleanup of DrmOutput
During cleanup the KWayland::OutputInterface is already destroyed before
we hit the cleanup code of DrmOutput. Thus guard with a QPointer to not
delete twice.
2015-06-29 12:47:29 +02:00
Martin Gräßlin 67734050e6 [hwcomposer] Get refresh rate 2015-06-25 18:04:06 +02:00
Martin Gräßlin 53dcd98b8b [hwcomposer] Switch to format HAL_PIXEL_FORMAT_RGB_888
We clearly do not need an alpha channel for our scene.
2015-06-25 15:49:52 +02:00
Martin Gräßlin b8ae823b50 [hwcomposer] Announce support for pointer
Without announcing pointer support the touch-to-pointer translation
in KWayland::Server might not work.
2015-06-24 08:41:10 +02:00
David Edmundson 268eb70016 [hwcomposer] Only update the attached screen 2015-06-17 15:08:49 -07:00
Martin Gräßlin 06fc00b4a9 [wayland] Support pointer warping in the backends
The X11 backend can warp the pointer.
2015-06-06 17:43:13 +02:00
Martin Gräßlin 735ffc8ab2 [wayland] Improve getting cursor image from theme
We don't need to queue the method invokation any more to ensure the
Wayland server connection is flushed since we have the dispatch method
in waylandServer().
2015-06-06 17:43:12 +02:00
Martin Gräßlin 59ca83d67a [wayland/x11] Implement installCursorImage in X11WindowedBackend 2015-06-06 17:43:12 +02:00
Martin Gräßlin 6581bc62a3 [drm] Fix KConfigGroup resolution for edid overwrite
If one of the edid group identifiers cannot be used as it's empty,
replace it by "unknown".

REVIEW: 123848
2015-05-19 15:55:53 +02:00
Martin Gräßlin f30eb50756 [drm] Implement Screens::refreshRate 2015-05-19 09:49:37 +02:00
Martin Gräßlin f5d123d61e [drm] Implement Screens::name
As name of screen we use the information passed to the OutputInterface:
a combination of manufacturer and model name.
2015-05-19 09:35:57 +02:00
David Edmundson 5115d54926 Multitouch on hwcomposer
REVIEW: 123796
2015-05-15 13:28:29 +01:00
Martin Gräßlin d6700ff9f9 [backends/hwcomposer] Forward input events to main thread
Libhybris input events are generated in a different thread, but we want
them in the main thread (InputRedirection and KWayland are not (yet)
thread safe). Thus all events need to be send to the main thread using
QMetaObject::invokeMethod.
2015-05-11 15:43:30 +02:00
Martin Gräßlin d5d304c2f6 [backends/hwcompser] Toggle blank screen on power button press
Also blocks compositor while screen is turned off.
2015-05-11 15:24:23 +02:00
Martin Gräßlin 533a39bc3e [backends/hwcomposer] Perform mapping of key codes
Not all key codes are mapped yet. Those not mapped have KEY_RESERVED
as mapping value and those are not forwarded to InputRedirection.
2015-05-11 14:28:32 +02:00
Martin Graesslin 6a66d84f5c [backends/hwcomper] Initial support for input handling
Unfortunately on libhybris enabled systems libinput doesn't work, thus
the backend needs to handle input events which can be read from hybris.
So far the backend only handles touch events properly, though some
aspects look wrong. E.g. motion gives only for one touch contact point.
Unfortunately the documentation is quite weak, so there might be
something important missing.
2015-05-09 16:22:27 +02:00
Martin Gräßlin 1f62c0acb0 [backends/hwcomposer] Handle OutputInterfaces in Backend
Allows to read the DPI information and export the physical display
size from it. DPI is scaled by 1000 in hwcomposer, split by X and Y,
which allows to calculate size in mm from pixel size.
2015-05-08 21:41:38 +02:00
Martin Graesslin e12400a675 Add a hwcomposer backend based on libhybris
This backend interacts with libhybris to create a hwcomposer which is
used for creating the egl context and surface. The initial version of
this backend is based on test_hwcomposer.cpp provided by libhybris.

Please note that using the hwcomposer backend requires a newer libepoxy,
the latest stable release is not able to bring up OpenGLES, so one needs
a master build of libepoxy.

Notes on licensing:
libhybris is Apache 2.0 licensed, which is not compatile with GPLv2.
But it is compatible with GPLv3. Thus the source files in the hwcomposer
backend are licensed GPLv3+ and not GPLv2+ as the rest of KWin. If one
uses KWin without the hwcomposer backend (which is obviously the default)
the licence doesn't change. But if the hwcomposer backend is used the
overall license of KWin changes to GPLv3+.
2015-05-08 10:28:52 +02:00