Commit graph

14051 commits

Author SHA1 Message Date
Martin Gräßlin
f284ef814c Pass projection matrix to ScreenPaintData
With this change a new ctor overload is added to ScreenPaintData
which allows passing a projection matrix through the effects. This
allows effects to put up custom shaders with a shared projection matrix
and without having to calculate it themselves.

The projection matrix is a read-only information for the effects. There
is no way to change or overwrite it.
2016-01-25 14:11:54 +01:00
Martin Gräßlin
5657405d32 Use ShaderTraits based shader for paint background
Little bit less usage of old Shader API.
2016-01-25 14:11:54 +01:00
Martin Gräßlin
ad7246e010 Create the new projection matrix at start of frame rendering
For both simple and generic rendering the projection is actually the
same. So let's create it at the start of the frame rendering which
allows us to also pass it through the effects.
2016-01-25 14:11:54 +01:00
Martin Gräßlin
778a7fd1a0 [kwinglutils] Add a ShaderTraits variant to ShaderBinder
Simplifies binding a Shader with traits.
2016-01-25 14:11:54 +01:00
Bhushan Shah
fbd1122a15 Fix the build 2016-01-20 03:35:32 +05:30
Bhushan Shah
bb7674f2b6 Make use of Xinput lib only if we found it
Reviewed by: mgraesslin
2016-01-20 03:05:14 +05:30
Thomas Lübking
1c344c16d9 emit shadeChanged before calculating unshaded size
Otherwise the old (shaded) border sizes will be invoked, causing
a shrinkage of the window

BUG: 357669
FIXED-IN: 5.6
REVIEW: 126671
2016-01-18 22:50:13 +01:00
Thomas Lübking
ed1d32288b move doubleclick logic into press event
alignes w/ systemwide behavior and allows elegant fix of
BUG: 357450
FIXED-IN: 5.6
REVIEW: 126631
2016-01-18 22:34:37 +01:00
Thomas Lübking
95cbd7c1b3 prevent nullptr dereferentiation
BUG: 357032
FIXED-IN: 5.6
REVIEW: 126787
2016-01-18 22:34:26 +01:00
Thomas Lübking
c7aefc6b6b skip SWAP_BEHAVIOR_PRESERVED for supportsBufferAge
pointless and unsupported on latter MESA/DRI3
http://lists.freedesktop.org/archives/mesa-dev/2015-November/100869.html

Thanks to Uriy Zhuravlev for reporting and investigation

BUG: 356992
CCBUG: 356882
FIXED-IN: 5.5.4
REVIEW: 126783
2016-01-18 22:32:10 +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
Thomas Lübking
e73e331f35 use XCB_CURRENT_TIME for NET::TakeFocusProtocol
The only clients that really seem to rely on it are
Java and they're apparently "broken", resp. extremely
picky on the tiemstamp and probably happily refuse focus
if it's *not* equal to the current server time (ie. anything else
happens at this moment) and overmore feel oblieged to act as WM
by juggling around VDs at all.

BUG: 347153
FIXED-IN: 5.6
REVIEW: 126753
2016-01-15 22:00:10 +01:00
Thomas Lübking
87795eef2a Actually keep the expandedGeometry alive
... until the effects handled the deletion

BUG: 318322
BUG: 320892
BUG: 344359
REVIEW: 126323

FIXED-IN: 5.6
2016-01-15 01:37:51 +01:00
Thomas Lübking
f918bc3367 fix build of rules kcm
REVIEW: 126733
2016-01-14 23:40:44 +01:00
Thomas Lübking
69aa80750f force restart on crash
We don't want to actively release claims on segfaults, but then
drkonqi can stop us while we're still holding the WM privs.

=> If KWin performs a crash-restart, it forcefully takes WM privs
(since the old instance shall be replaced for quite sure)

BUG: 348834
BUG: 353030
BUG: 353428

REVIEW: 126741
FIXED-IN: 5.6
2016-01-14 23:40:27 +01:00
Thomas Lübking
57c9aa9fc0 update expanded geometry when slide is done
In addition it's required to keep the expandedGeometry alive until
the effects handled the deletion

BUG: 318322
BUG: 320892
BUG: 344359
REVIEW: 126323

FIXED-IN: 5.6
2016-01-14 23:37:13 +01:00
Martin Gräßlin
5a31618461 Use XInput for "polling" the mouse positing
Replaces the timer based polling approach. If XInput is available we
listen for the RawMotion event on the root window and use this to
trigger a mouse pointer position.

BUG: 357692
FIXED-IN: 5.6.0
REVIEW: 126733
2016-01-14 17:25:04 +01: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
aa0f2c88f0 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-10 11:46:53 +00:00
Andreas Hartmetz
2eac7634cc Remove saving and loading (and client matching by) WM_COMMAND.
This legacy session management scheme using the WM_COMMAND property
seems to be called XSM. It is very, very legacy because it was
superseded by XSMP in 1993(!).

By inspecting ~/.config/session/kwin_[...] I could see that Firefox
still sets WM_COMMAND, but nothing else in a regular session with
some applications.
As one of the last applications to switch to XSMP session management,
I guess Firefox keeps doing that because it still needs to work on,
say, Solaris, anyway, so why not set WM_COMMAND on Linux as well.
The WM_COMMAND set by Firefox looks like "wmCommand8=firefox\s" in
the kwin session file. It doesn't actually contain a session
identifier. But then, Firefox only has one session per user anyway.

This goes together with commit 5f0ca1305db4a925 in plasma-workspace /
ksmserver to remove legacy session management support.

I've talked about my plan to do this on IRC with Martin so hopefully
it's okay to just do this now.
2016-01-09 03:53:47 +01:00
Jonathan Riddell
0c5bed27de Update version number for 5.5.3
GIT_SILENT
2016-01-06 11:29:25 +00:00
Dāvis Mosāns
3e255e6969 Remove KWIN_BUILD_COVERAGE
It's provided by ECM BUILD_COVERAGE

REVIEW: 126628
2016-01-05 17:10:23 +02:00
l10n daemon script
e616d7e143 SVN_SILENT made messages (.desktop file) 2015-12-30 12:19:00 +00:00
l10n daemon script
aff81afd27 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-30 09:40:57 +00:00
l10n daemon script
87ccc5010a SVN_SILENT made messages (.desktop file) 2015-12-29 13:53:25 +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
Michael Pyne
bcc36b87fb Avoid undefined behavior in nearestPowerOfTwo.
The way nearestPowerOfTwo is currently defined allows for the possibility of
left-shifting an int by 32 bits or more, which is undefined behavior on
platforms where int is 32 bits, and is something that can happen here if `s`
is equal to 31 by the end of the loop. Noted by Coverity as CID 1291191.

This patch takes an algorithm to perform the same operation from Hank Warren
Jr.'s book "Hacker's Delight", which should avoid UB.

REVIEW:126540
2015-12-28 17:08:15 -05:00
Michael Pyne
4957c18a44 Widen int to qint64 before multiplication, not after.
Noted by Coverity, CID 1334968.
2015-12-27 21:56:09 -05:00
l10n daemon script
02e9001f39 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-27 09:18:16 +00:00
l10n daemon script
9356fb52fb SVN_SILENT made messages (.desktop file) 2015-12-26 11:41:27 +00:00
Jonathan Riddell
03c198e31e Update version number for 5.5.2
GIT_SILENT
2015-12-22 10:11:20 +00:00
Jan Kundrát
05c542ad60 Fix build with Qt 5.6
A recent change [1] led to Qt5PlatformSupport.pc not being installed
anymore. Pkg-config was only used for finding the paths, and the actual
include flags and library names were hardcoded in KWin's
FindQt5PlatformSupport.cmake anyway, so let's just focus on finding
Qt5Gui, the module which provides this Qt5PlatformSupport library, and
work from there.

Thanks to Hrvoje Senjan (shumski) for pointing me towards the upstream
Gerrit change.

[1] https://codereview.qt-project.org/140954/

REVIEW: 126234
2015-12-20 07:45:56 -06:00
Martin Gräßlin
ecce036979 [wayland] Introduce a memeber variable for checking whether ShellClient is internal
ASAN complained about heap-use-after-freeze in copyToDeleted due to call
into isInternal().
2015-12-18 17:26:21 +01:00
Martin Gräßlin
8604e03106 [wayland] Properly implement userCanSetNoBorder in ShellClient
Only for server side decorations it's possible to set no border and
in that case it should have same checks as Client.
2015-12-18 16:41:49 +01:00
Martin Gräßlin
7ed4b5ed1a Include abstract_client.h instead of client.h in decorationbridge.cpp 2015-12-18 16:41:49 +01:00
Martin Gräßlin
2d7477359e DecorationBridge::recreateDecorations operates on AbstractClient 2015-12-18 16:41:49 +01:00
Martin Gräßlin
89be6cf4ed Add a Workspace::forEachAbstractClient 2015-12-18 16:41:49 +01:00
Martin Gräßlin
5e96f65224 Add window decoration to ShellClient
If a ShellClient supports the ServerSideDecoration interface we can
create a server decoration for it. For that updateDecoration is added
as a pure virtual method in AbstractClient and a more-or-less code copy
from Client is added to ShellClient.

Geometry handling is adjusted to consider the window decoration offsets.
2015-12-18 16:41:49 +01:00
Martin Gräßlin
5cfe9428aa [backends/wayland] Use server side decorations if available 2015-12-18 16:41:49 +01:00
Martin Gräßlin
5cef26d275 [wayland] Add support for ServerSideDecorationManager
We announce support for it and depending on whether we have a plugin
or not set the default mode to Server or None.

When a decoration interface is created it gets installed on the
ShellClient. But there it isn't properly used yet as we don't have
support for decorations in ShellClient yet.
2015-12-18 16:41:49 +01:00
Martin Gräßlin
3de3a959c6 Move implementation of clientPos() to AbstractClient
The Client's variant works for both Client and ShellClient.
2015-12-18 16:41:49 +01:00
Martin Gräßlin
827486ff36 Introduce a Toplevel::clientContentPos() -> QPoint
This describes an additional offset for the client content. On X11
our client content position matches with the window - the window
decoration is part of the overall content coordinate system.

On Wayland the content is an own texture starting at 0/0. Thus a
mapping to texture coordinates will be required when server side
decorations are provided. The new information is used in the scene's
to adjust the rendering and generating of quads.
2015-12-18 16:41:49 +01:00
Martin Gräßlin
5f90fa5cfd Introduce pure virtual, protectd AbstractClient::acceptsFocus -> bool
Replacement for calls to info->input() which is only valid for the Client
sub class, but not for ShellClient.

In ShellClient the implementation is swapped with wantsInput() and
wantsInput() has a new implementation which properly delegates to rules()
just like Client does.
2015-12-18 16:41:49 +01:00
Martin Gräßlin
a4c347fc7a [wayland] Translate inputTransformation matrix by borderLeft/Top
With decorations the ShellClient needs to have another input offset
by borderTop and borderLeft.
2015-12-18 16:41:49 +01:00
Martin Gräßlin
d28fba8839 DecorationShadow operates on AbstractClient 2015-12-18 16:41:49 +01:00
Martin Gräßlin
60b09586ef [decorations] Schedule repaint for renderer on AbstractClient
We need to search in AbstractClient instead of just Client.
2015-12-18 16:41:49 +01:00
Martin Gräßlin
0bf2b1de0f Add a Workspace::findAbstractClient
Like Workspace::findClient just that it operates on AbstractClient
and the m_allClients instead of clients.
2015-12-18 16:41:49 +01:00