Commit graph

13023 commits

Author SHA1 Message Date
Martin Gräßlin
c33a74ae58 [drm] Drop DrmBackend::present without DrmOutput*
Only the variant taking both buffer and output are used now.
2015-04-24 12:03:20 +02:00
Martin Gräßlin
e650eef323 [drm] Find correct crtc/encoder/connector combination
We need to verify that a given crtc is not used already for one of
the created DrmOutputs.
2015-04-24 12:03:20 +02:00
Martin Gräßlin
7c8c1dac0a [SceneOpenGL] Render per DrmOutput in EglGbmBackend
For each DrmOutput a gbm_surface and EglSurface is created. When
rendering per screen the context is made current on each of the
surfaces.

Note: viewport handling needs to be improved by e.g. passing through
the scene to restore to correct viewport after dropping an FBO.

Furthermore it seems like buffer age is not working correctly in this
setup (not overly surprising).

Dynamic changes are not yet supported.
2015-04-24 12:03:20 +02:00
Martin Gräßlin
5c79f777a4 [SceneQPainter] Render per DrmOutput in DrmQPainterBackend
For each DrmOutput a set of buffers is created and presented. The
renderig is still in one go and not synced to the individual screens.

Dynamic changes are not yet supported.
2015-04-24 12:03:20 +02:00
Martin Gräßlin
9133c0f9d5 [SceneQPainter] Per-Screen rendering
The backend can indicate that the rendering needs to be split per screen.
In that case it has to provide a different rendering buffer per screen.
The painting in the scene is adjusted to either take a splitted path
or the existing path for all screens in one go.
2015-04-24 12:03:20 +02:00
Martin Gräßlin
600b3cd2c1 Allow presenting a DrmBuffer on a dedicated DrmOutput 2015-04-24 12:03:20 +02:00
Martin Gräßlin
fcc895180b [drm] Better support for multiple outputs in DrmScreens
We get the DrmOutputs from the backend to properly set count, size and
geometry of the outputs.

Dynamic changes are not yet supported.
2015-04-24 12:03:20 +02:00
Martin Gräßlin
6d6c951402 Set the drm mode again when stride changed compared to previous buffer
Includes better error handling for when page flip failed. If it fails,
we shouldn't set the current buffer as otherwise each new attempt to
present a buffer will fail, too.
2015-04-24 12:03:20 +02:00
Martin Gräßlin
8278ae8487 Handle session deactivate and restore in DRM backend
* blocks compositor while session is inactive
* prevents page flips while session is inactive
* restores modes when going to inactive
* hides cursor when going to inactive
* blanks screens when going active
* shows cursor again when going active
* triggers a repaint when going active
2015-04-24 12:03:20 +02:00
Martin Gräßlin
3a9adcac91 Connect to Logind's PauseDevice signal
If it emits a "pause" signal, we must acknowledge that we paused the
device.
2015-04-24 12:03:20 +02:00
Martin Gräßlin
2c5337074f First deactivate VirtualTerminal, then notify kernel that we are ready to switch 2015-04-24 12:03:19 +02:00
Martin Gräßlin
9efada5bb6 Set VirtualTerminal into KD_GRAPHICS mode 2015-04-24 12:03:19 +02:00
Martin Gräßlin
efa0500313 [libinput] Bind libinput support to VirtualTerminal
This change is motivated by the fact that we need to suspend libinput
before switching the virtual terminal. Also we don't want to take over
libinput if we do not have a VirtualTerminal created - in windowed mode
we don't want libinput to be started. So binding it to the backends which
create the VirtualTerminal makes sense.

The KWin::Application gains a new signal virtualTerminalCreated which is
emitted from VirtualTerminal once it's properly setup. This is used by
Input to create Libinput integration instead of binding it to logind.

Furthermore Libinput gets suspended when the VirtualTerminal reports that
it is no longer active. For re-activation we still just use logind's
session active property.
2015-04-24 12:03:19 +02:00
Martin Gräßlin
2f312f35c9 Add a DrmOutput class to be used by the DrmBackend
The DrmOutput corresponds to one output we perform mode setting on.
This implies that page flip is now performed on the DrmOutput. As our
compositor cannot drive multiple outputs yet, we only use the first one
and call into bufferSwapComplete and aboutToBufferSwap when either all
page flips are completed or respectivly the first one is performed.

Setting cursor is also handled on each DrmOutput.

When the DrmOutput is initialized it is blanked with a black buffer which
gets destroyed once the first page flip event has occurred (meanig the
buffer is no longer needed). Before setting the black buffer we store the
current buffer which will be set back on tear down. Because of that
tearing down the DrmBackend needs to wait till all page flips ended.
2015-04-24 12:03:19 +02:00
Martin Gräßlin
38b676d809 Add support for hardware cursors in DrmBackend
Creates two buffers with the size queried through the drm capabilities.
The actual cursor image is retrieved using the software cursor
functionality from the AbstractBackend and rendered into the shared
memory buffer. The the buffer is set as the new cursor image and the
rendering buffer for the cursor is swapped.

The position is updated whenever the cursor image changes or the mouse
position changes.
2015-04-24 12:03:19 +02:00
Martin Gräßlin
877c33fe7d Initial implementation of EglGbmBackend
Uses EGL_MESA_platform_gbm to get an EglDisplay from a gbm_device.
The DrmBackend can provide a DrmBuffer for a gbm_surface and present
it.

Unfortunately buffer age seems to be slightly broken and we still have
artefacts.
2015-04-24 12:03:19 +02:00
Martin Gräßlin
3a7d0c395e Page flip event support in drm backend 2015-04-24 12:03:19 +02:00
Martin Gräßlin
c759551340 [wayland] Add a basic drm/kms backend
Introduces a new (optional) dependency: libdrm.

The DrmBackend currently supports finding the first connected output.
It can create shared memory buffers which are used by SceneQPainter to
do double buffered rendering.

There is still lots to do, the following things are not yet working:
* multiple outputs
* page flip
* OpenGL (through gbm)
* restoring mode setting to start value
2015-04-24 12:03:19 +02:00
Martin Gräßlin
da3f7914f7 [framebuffer_backend] Delay VirtualTerminal::init till we have logind control 2015-04-24 12:03:19 +02:00
Martin Gräßlin
f135d92c00 [udev] Find the primary gpu by iterating drm devices 2015-04-24 12:03:19 +02:00
Martin Gräßlin
e6b076df9c Move Udev into an own header and implementation
For a DRM backend we also need Udev, so don't bundle with libinput.
2015-04-24 12:03:19 +02:00
l10n daemon script
7c747e1591 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-04-24 09:53:59 +00:00
Jonathan Riddell
6d31775ee8 replace reference to licence with the bsd licence as the reference often goes missing 2015-04-23 16:10:00 +02:00
l10n daemon script
7037327ec4 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-04-23 10:15:53 +00:00
Martin Gräßlin
c66a44cf45 Merge branch 'Plasma/5.3' 2015-04-23 09:37:47 +02:00
Martin Gräßlin
67d7eb7120 [kcmkwin/rules] Fix kdeinit_kwin_rules_dialog crashing on start
It needs to install the x11connection on the QApplication as it uses
kwinglobals.h internally. Same fix as already done for the KCM, see
305387ec3a.

Thanks to soee on #plasma for reporting the issue just in time to make
Riddell hold the release off.
2015-04-23 09:36:31 +02:00
Martin Gräßlin
25b937d6cf Merge branch 'Plasma/5.3' 2015-04-22 12:32:34 +02:00
Mika Allan Rauhala
9636922827 Fix DecorationPalette loading when kdeglobals doesn't exist
When kdeglobals doesn't exist, QStandardPaths::locate() for it returns
an empty string, so the check in previous fix doesn't work in this case.

This change sets m_colorScheme properly in this case and also creates an
empty kdeglobals(needed because QFileSystemWatcher can't monitor
non-existing files) so kdeglobals can be reloaded if it is later
populated.

REVIEW: 123399
2015-04-22 12:31:17 +02:00
Martin Gräßlin
c8ebcf4ca2 [wayland] Pass X11 events through the native event filters
E.g. KSelectionOwner installs a native event filter and listens for
xcb events. Without that the KSelectionOwner::claim never succeeds and
for other X11 applications it will look like Compositing is not
supported.
2015-04-22 11:23:06 +02:00
Weng Xuetian
a23713accd Merge branch 'Plasma/5.3' 2015-04-21 23:27:27 -07:00
Weng Xuetian
740be3e8d3 make sure connect to screen changed signal after screen is created
REVIEW: 123461
BUG: 346453
FIXED-IN: 5.3
2015-04-21 23:25:37 -07:00
l10n daemon script
d4af45da2d SVN_SILENT made messages (.desktop file) 2015-04-21 14:57:25 +00:00
l10n daemon script
a00f1f3ad4 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-04-21 13:24:50 +00:00
Martin Gräßlin
db34ddda53 [wayland] Add positional arguments to be programs to starts
This allows to start applications once kwin_wayland is started. E.g.
kwin_wayland --libinput --xwayland --framebuffer /usr/bin/startkde

Thus it would start startkde once both Wayland Server and Xwayland
are up and running and ready for connection. This resolves the problem
that prior to startup it is not known which will be the X11 display
variable. By passing the environment to the process by KWin this problem
is resolved.
2015-04-21 11:21:28 +02:00
Martin Gräßlin
8ec3f55ff4 [wayland] Abort if Xwayland connection breaks
If Xwayland goes down it's better to abort than staying alive. If
Xwayland goes down the next roundtrip to X (most likely during call
to xStackingOrder) will just freeze completely, which is kind of the
worst as one cannot VT-switch anymore. So a clean abort is a bad but
better solution.
2015-04-21 09:21:49 +02:00
Thomas Lübking
0c823754ff Merge branch 'Plasma/5.3' 2015-04-20 23:42:17 +02:00
Thomas Lübking
70a2b327b1 fix showing desktop for multiple desktop windows
BUG: 346268
FIXED-IN: 5.3
REVIEW: 123409
2015-04-20 22:24:54 +02:00
l10n daemon script
49586fdd00 SVN_SILENT made messages (.desktop file) 2015-04-19 11:50:07 +00:00
l10n daemon script
e9afce7b04 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-04-19 10:17:15 +00:00
l10n daemon script
0a6668c53b SVN_SILENT made messages (.desktop file) 2015-04-18 11:59:40 +00:00
l10n daemon script
5cd7658930 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-04-18 10:28:01 +00:00
David Edmundson
10f1dc3fcb Don't follow QT_DEVICE_PIXEL_RATIO
Setting this means we get scaled screen geometry from Qt, and everything
becomes confusing when commmunicating with apps that might not have
this set.

As we use plasma units for UI everything is scaled anyway.

REVIEW: 123115
2015-04-17 18:13:48 +02:00
l10n daemon script
d18b931f55 SVN_SILENT made messages (.desktop file) 2015-04-17 13:13:21 +00:00
Lasse Liehu
5f9a6278d0 Add disambiguation context
REVIEW: 123396
2015-04-17 15:56:58 +03:00
l10n daemon script
ef748afe63 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-04-17 11:43:23 +00:00
l10n daemon script
5a093d134c SVN_SILENT made messages (.desktop file) 2015-04-14 15:25:55 +00:00
l10n daemon script
53392ea009 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-04-14 13:53:56 +00:00
l10n daemon script
8b1f42314c SVN_SILENT made messages (.desktop file) 2015-04-12 12:16:24 +00:00
l10n daemon script
63a0b4133e 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-04-12 10:31:39 +00:00
l10n daemon script
1a1a6cd8bf SVN_SILENT made messages (.desktop file) 2015-04-11 12:07:56 +00:00