Commit graph

13794 commits

Author SHA1 Message Date
Bhushan Shah
c957b145a4 [wayland] Adapt to changes in the kscreenlocker
Initialize is no longer called by KSldApp ctor, and also pass
KWayland::Server::Display* to KSldApp.

Reviewed-By: Martin Gräßlin
2015-11-06 16:53:20 +05:30
Nick Shaforostoff
3a8d7d866a optimize string operations
-use qstringliteral only when necessary (i.e. not in concat or comparison)
-use qbytearray instead of qstring when dealing with latin1 input and output (glplatform)
-use qstringref to extract numbers from strings (glplatform)
-define qt_use_qstringbuilder to optimize all string concatenations
-anidata: use ctor init lists, add windowType member initialization

REVIEW: 125933
2015-11-05 14:14:06 +00:00
Bhushan Shah
bacfd876fe [wayland] Start ksldapp from the WaylandServer
This introduces --lockscreen option in kwin_wayland which when used will
lock screen immediately. Also dependency to newly created kscreenlocker
repo is introduced.

REVIEW: 125954
2015-11-05 18:39:23 +05:30
Marco Martin
1f9fa64a49 preliminar support for task geometries in wayland
make the minimize effect work by reading taskGeometry
from plasmawindowmanagement and returning as iconGeometry()
there is one task geometry per panel window, iconGeometry()
will return the geometry associated to the nearest panel
from the window

REVIEW:125873
2015-11-05 11:36:40 +01:00
l10n daemon script
3433b05c97 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-04 17:27:21 +00:00
Martin Gräßlin
19602a921e [wayland] Reset QT_QPA_PLATFORM to wayland after starting Application
We only need to force QT_QPA_PLATFORM to be our own plugin when starting
the application. As KWin starts other processes (e.g. kcmshell5) we need
to ensure that the env variable has a sane value. No other process can
load our QPA plugin after all.

Reviewed-By: Bhushan Shah
2015-11-03 16:52:55 +01:00
Martin Gräßlin
5904349c69 [libinput] Event compression for PointerAxis 2015-11-03 10:26:01 +01:00
Martin Gräßlin
123e361f55 [libinput] Pointer motion event compression
If we have multiple pointer motion events we compress it to just one.
2015-11-03 10:26:01 +01:00
Martin Gräßlin
cebd723c2c [libinput] Add an event queue
The Connection thread fills the event queue, it gets read from the
main thread. In order to properly support the threaded approach the
setup is changed to delegate into the own thread.
2015-11-03 10:26:01 +01:00
Martin Gräßlin
1cfd72f49f [libinput] Use a dedicated thread for libinput
When the Connection is created we move it into a dedicated thread
so that even processing happens in the thread. Currently all events
are still queued directly.
2015-11-03 10:26:01 +01:00
Martin Gräßlin
ea77d32259 [libinput] Make signals queueable
* Declare and register enums as metatypes
* quint32 instead of uint32_t
2015-11-03 10:26:01 +01:00
Martin Gräßlin
c50da5bdee Fix compile with libepoxy < 1.3
Compile failure on KDE CI:
error: ‘GL_GUILTY_CONTEXT_RESET’ was not declared in this scope

It's not defined in libepoxy 1.2, so let's define it to the values
it has in 1.3.
2015-11-03 10:12:55 +01:00
Martin Gräßlin
f2ad98aa3a Add O2ES as possible value for KWIN_COMPOSE
If KWIN_COMPOSE is set to O2ES, an OpenGL ES context is tried to
be created instead of an OpenGL context.

REVIEW: 125919
2015-11-03 09:30:12 +01:00
Martin Gräßlin
aa43852301 Remove build checks for gles or gl
Also removes the building of the kwinglesutils, there's only
kwinglutils now.

REVIEW: 125865
2015-11-03 09:29:37 +01:00
Martin Gräßlin
d5a5725db1 Remove remaining compile time checks for OpenGLES 2015-11-03 09:29:31 +01:00
Martin Gräßlin
004b928c8d Core uses runtime checks for whether we are on OpenGLES 2015-11-03 09:29:31 +01:00
Martin Gräßlin
14d943caea Runtime depend on GLES in all egl backends
As we don't have GLPLatform before the backend is fully created
the AbstractEglBackend has a new method isOpenGLES() -> bool
which determines based on QOpenGLContext::openGLModuleType().
2015-11-03 09:29:31 +01:00
Martin Gräßlin
2f065b9c6b [plugins/qpa] Runtime depend on OpenGLES instead of compile time
Using QOpenGLContext::openGLModuleType() to determine whether we
need a GLES or GL context.
2015-11-03 09:29:31 +01:00
Martin Gräßlin
4f64b32aba Runtime depend on GLES in SceneOpenGL
Thanks to epoxy for allowing us to get rid of some additional GL/GLES
specific defines.
2015-11-03 09:29:31 +01:00
Martin Gräßlin
03231942bb Bind building of glx support on whether epoxy has a glx header
So far it was bound to whether we build for GLES. But this is
semantically wrong. It might be possible that even on desktop gl
epoxy is built without GLX support, thus we need to reflect this.

This change ensures that epoxy/glx.h is only included if available,
that relevant code is bound to it and that checks are in place to
enforce EGL if not build with glx support.

In addtion the glxbackend.cpp is now only included in the build set
if available.
2015-11-03 09:29:31 +01:00
Martin Gräßlin
9919627106 [kwineffects] Runtime checks for GLES in ColorCorrection 2015-11-03 09:29:31 +01:00
Martin Gräßlin
49d8502567 [kwineffects] Runtime depend on gles in GLPlatform 2015-11-03 09:29:31 +01:00
Martin Gräßlin
78ac6aaf13 [effects] Runtime checks for GLES instead of compile time checks 2015-11-03 09:29:31 +01:00
Martin Gräßlin
fc2805d218 Turn compile time checks to runtime check in kwinglutils.cpp
Only those which truly are different are kept as compile time checks.
In addition the index buffer is made available to GLES as in principle
all required functionality is available on gles.

REVIEW: 125865
2015-11-03 09:29:31 +01:00
Martin Gräßlin
99ddcfbac0 [glplatform] Ensure glsl is supported with OpenGLES
No matter what our checks say on OpenGLES we have shaders.
2015-11-03 09:29:31 +01:00
Martin Gräßlin
1170303fc6 [kwineffects] Runtime detect whether we are on GLES in GLPlatform
We detect from OpenGL version string whether we are on OpenGL ES
instead of using a compile time check.
2015-11-03 09:29:31 +01:00
Martin Gräßlin
4d6dbc63f6 Merge branch 'Plasma/5.4' 2015-11-03 08:18:12 +01:00
l10n daemon script
b33a878e45 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-02 11:12:07 +00:00
Martin Gräßlin
e6542f01d3 [aurorae] Use property binding for toggled state
So far we manually updated the toggled state depending on the button
type and the corresponding client property. This had an error sneaked
in for onAllDesktops: it was bound to desktop change instead of on all
desktop change causing the button to not reflect the state correctly.

To prevent such errors it's now setup to a property binding to the
client's state directly.

BUG: 354702
FIXED-IN: 5.4.3
REVIEW: 125917
2015-11-02 10:11:32 +01:00
Martin Gräßlin
7c3e4afe54 [aurorae] Fix state changes for maximize/restore button in plastik theme
A check for whether the button is the maximize/restore button was still
for the old syntax causing always the maximize button and never the
restore to show.

BUG: 354702
FIXED-IN: 5.4.3
2015-11-02 10:06:23 +01:00
David Edmundson
cd9f43af7d don't activate clients (autohide) if we're dragging a window
BUG: 352267
REVIEW: 125867
2015-10-31 13:25:53 +00:00
Thomas Lübking
b2755bcaa7 re-evaluate rules on title change
If a rule minus the title match matches,
the captionChanged signal is bound to re-evaluate
the rules for that client, ie. the tracking overhead
only exists for those clients where title matching
is relevant and costs rematching all rules when such
client changes its title (yes, the partial matching
rules could be stored for faster re-check, but that
would make the patch bigger and is probably not worth
it; just some string comparisms)

additional tracking of wm_class or wm_role
(what is iirc a netwm violation anyway) would require
to monitor the resp. property for changes (not done atm.)

BUG: 220227
FIXED-IN: 5.5
REVIEW: 125427
2015-10-29 23:36:10 +01:00
Thomas Lübking
3b71411112 desktop grid: allow desktop to cross screens
While the main plasma desktop containment does one
desktop per screen, that does not necessarily hold
for other containments, let alone other desktop shells
2015-10-29 23:36:10 +01:00
Thomas Lübking
c2acb5ad63 desktop grid: general cleanup
code cleanups and minor fixes
2015-10-29 23:36:10 +01:00
Thomas Lübking
454f704647 desktop grid: set desktop when moving stickies
Notably on presentwindows invocation, there would
be no point in moving the window otherwise itfp
2015-10-29 23:36:10 +01:00
Thomas Lübking
66ed2d39a0 desktop grid: less branches for isOnAllDesktops
just cleanup, no functional change intended
2015-10-29 23:36:10 +01:00
Thomas Lübking
4a439bd3cf desktop grid: brightness doesn't flicker here
May have been fixed interim?
2015-10-29 23:36:10 +01:00
Thomas Lübking
14d1fdf63f desktop grid: zoom hovered window
To indicate that the window is "active" ie. can
be dragged or activated (like in present windows)
There was either a bug or a forum post complaining
about the inability to activate windows from DG
2015-10-29 23:36:10 +01:00
Thomas Lübking
d1cf29f6b2 desktop grid: vector instead of qhash for buttons
They're only traversed and QHash is unordered - so
the worst container. Also we have complete control
over the maintained class, so we can just keep the
mapped EffectWindow there
2015-10-29 23:36:10 +01:00
Thomas Lübking
c0e61c3e1a desktop grid: offset buttons from screen edge
mostly aesthetical but also to keep them away
from the (potentially) assigned electric border
2015-10-29 23:36:10 +01:00
Thomas Lübking
fbfc573a8a desktop grid: add option to hide buttons
one does indeed not change the desktop count
that often...

BUG: 352588
FIXED-IN: 5.5
REVIEW: 125228
2015-10-29 23:36:10 +01:00
Thomas Lübking
4fc9f44d2a desktop grid: use -/+ text buttons
esp. the list-remove icon looks like "delete" and
can cause worries about what happens to the windows

as a bonus, the buttons now follow the DPI. are a
little smaller (presently might fit touch devices? but
is way to huge on "normal" desktops with ordinary DPI)
and the buttons have nice visible animations on pressing

BUG: 354131
FIXED-IN: 5.5
2015-10-29 23:36:10 +01:00
Martin Gräßlin
e379d06f34 [hwcomposer] Adjust present strategy for block on retrace
Heavily inspired by how the glxbackend works: present happens on
rendering start and not on end frame. In addition present needs to
check whether there is something to show to not block incorrectly.

This is needed as present might also be called from going to idle.

With this change the Nexus5 has a decend refresh rate shown in the
totally accurate fps effect. Before it was capped at around 30 fps
which indicates that the refresh rate was halfed.

On the tearfing front the change seems to not have any negative
impact.
2015-10-29 14:13:40 +01:00
Martin Gräßlin
c35c464b1d [wayland] Add support for move/resize triggered on ShellSurface
Welcome to a mostly usable Wayland world!
2015-10-29 10:41:25 +01:00
Marco Martin
8fe8bf59a5 make most windows minimizable
allow to minimize some kind of windows, all those that don't
have a plasmashell surface and those that have and have Normal
as role (to be sure to not minimize panel, desktop, etc)

REVIEW:125842
2015-10-29 10:32:14 +01:00
Martin Gräßlin
7cc566681d [wayland] Drop check for QtWayland 5.4.2
We don't use QtWayland any more, so we don't need to check the version
any more.
2015-10-29 10:10:28 +01:00
Martin Gräßlin
28992c3d31 [wayland] Force Qt::AA_NoHighDpiScaling on Qt 5.6
We already unset QT_DEVICE_PIXEL_RATIO to ensure to keep out of
high dpi scaling. Now with Qt 5.6 we also need to set the attribute.
Without we crash on startup as we don't have a screen that early and
well Qt doesn't check whether it's null.
2015-10-29 10:08:23 +01:00
Heiko Becker
2c4ed0aca1 Use KDE_INSTALL_DBUSINTERFACEDIR to install dbus interfaces
...and use PATH_VARS to make the config file work with absolute paths.

Two reasons to do this:
- DBUS_INTERFACES_INSTALL_DIR is marked deprecated
- Not hard-coding the packackage prefix is helpful on a multiarch
  layout where the prefix is /usr/${host} but arch-independent files
  should still be installed to /usr/share (i.e a level below the
  prefix).

REVIEW: 125843
2015-10-28 21:26:11 +01:00
Martin Gräßlin
89a4df651d [wayland] Sync resizes
Similar to X11 world: we send a sync request on each size change and
block till we get the next damage with the proper size.

Testing seems to show a very smooth resize experience. We automatically
sync to the resize speed of the client.

Maybe we need a timeout in case the client isn't able to resize to the
requested size.
2015-10-28 11:16:48 +01:00
Martin Gräßlin
a23a9d38f9 Make it possible to end move/resize through mouse button release
Properly handle the mouse press/release events in InputRedirection
while we move windows. If it's the last mouse release event we end
the move resize of the window. For that we reuse the code written
in Client.
2015-10-28 10:43:49 +01:00