Commit graph

15382 commits

Author SHA1 Message Date
Martin Flöser
630514d52a Remove roundtrip to XServer from Workspace::xStackingOrder
Introduce a method Workspace::markXStackingOrderAsDirty

Summary:
This method replaces the calls x_stacking_dirty = true in the code base
allowing for further refactoring of that functionality.

Remove roundtrip to XServer from Workspace::xStackingOrder

The method xStackingOrder is only used during a Compositor paint pass.
If the stacking order had changed, the method updated the stacking order
from X by performing a sync XQueryTree. With other words we had a round
trip to the X server directly in the paint pass.

This change rearchitectures this area by making better use of xcb. When
we notice that the stacking order changed and an XQueryTree is needed,
we directly send out the request. When xStackingOrder is finally called,
which normally happens a few milliseconds later, the reply is retreived.
In the worst case it still blocks, but in most cases the roundtrip is
gone.

If the stacking order changed again before accessing xStackingOrder the
running request is cancelled and a new request is issued. So whenever we
get into xStackingOrder it will have the current state.

The updating of the xStackingOrder is moved into a dedicated method and
xStackingOrder invokes it through a const_cast instead of operating on
mutable variables.

Test Plan: Normal system usage, no issues

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6323
2017-07-01 08:21:51 +02:00
Martin Flöser
0d8f11405e Introduce a method Workspace::markXStackingOrderAsDirty
This method replaces the calls x_stacking_dirty = true in the code base
allowing for further refactoring of that functionality.
2017-07-01 08:21:51 +02:00
Martin Flöser
be89c16b38 [platforms/x11] Request OpenGL 2.1 instead of 1.2
Summary:
Mismatch in the major/minor version. Requesting 1.2 doesn't make any
sense given that KWin requires 2.1.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6401
2017-07-01 08:21:34 +02:00
Martin Flöser
adceb9c0c9 Merge branch 'Plasma/5.10' 2017-07-01 08:21:16 +02:00
Martin Flöser
113be5fac8 Restore active client after ending showing desktop
Summary:
Showing desktop requests focus on the desktop window. This means the
active window is reset. When ending showing desktop the state was not
restored.

This change addresses this problem by requesting focus to the best
window.

BUG: 375993
FIXED-IN: 5.10.4

Test Plan: New autotest and manual testing

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6420
2017-07-01 08:20:01 +02:00
Martin Flöser
43816119e9 Skip Shader self test for Mesa >= 17
Summary:
We are getting reports about the shader self test failing in a false
positive way on Mesa 17. We already have such false positve results
for NVIDIA quadro and went with disabling the self test.

Most likely our self test has a problem or the rendering of the first
frame has a problem. But disabling compositing because our rendering of
the first frame is broken, is too much.

Let's better be pro user here and disable the shader self test till we
fixed the root problem.

BUG: 376801
FIXED-IN: 5.10.4

Test Plan: It compiles.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6426
2017-07-01 08:19:31 +02:00
l10n daemon script
07259cfa59 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"
2017-06-28 09:36:23 +02:00
l10n daemon script
c385b15783 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"
2017-06-28 08:27:17 +02:00
Jonathan Riddell
f4b407dbe0 Update version number for 5.10.3
GIT_SILENT
2017-06-27 10:15:39 +01:00
Martin Flöser
3f4995fb9b Refactor the specification of OpenGL context attributes
Summary:
The current way to specify the OpenGL context attributes does no longer
scale as can be seen in D6344. There are too many different context
attribute sets and with every addition we grow lots of copied code. The
chances to introduce errors in that code which is difficult to debug are
very high. As can be seen in the glx backend which defines major 1,
minor 2, but it should be major 2, minor 1.

This change reworks this code by creating a builder class which contains
only an abstract definition of what needs to be in the attributes.
E.g. the version, whether it's robust and so on.

Now we can just have a list of possible attributes in a well described
way:
    auto builder;
    builder.setVersion(3, 1);
    builder.setRobust(true);

All possible builders are added to a list and operated on in a for loop
which tries to creat a context. Once it succeeded it breaks the list.
In addition a debug statement is added which prints out the set of
options which went into the context.

So far this is only done for EGL, GLX can follow once D6344 is merged.

Test Plan: New unit test added, kwin_wayland OpenGL tests run and verified

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6396
2017-06-26 22:13:47 +02:00
Martin Flöser
a6d0bc276d Merge branch 'Plasma/5.10' 2017-06-26 22:11:46 +02:00
Martin Flöser
6267d59731 Properly block the edge also for touch screen edges
Summary:
There was a regression introduced with bug fix eec6afe6 which added
a for pointer events only check also to doUpdateBlocking. Do to that
the edge blocking mechanism didn't work for touch edges.

BUG: 380476
FIXED-IN: 5.10.3

Test Plan:
verified with xwininfo that there is no longer a window when
in full screen. Activated edges through touch and pointer

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6304
2017-06-26 22:06:12 +02:00
Martin Flöser
97fa72ee48 [platforms/x11] Add support for GLX_NV_robustness_video_memory_purge
Summary:
Based on earlier phab-request D2079. Adds the nvidia memory purge
extension to the robust context creation.

BUG: 344326
FIXED-IN: 5.10.3

Test Plan: Only compile tested as I don't have an NVIDIA card.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6344
2017-06-26 22:05:28 +02:00
Oleg Chernovskiy
247ef43f68
Implement software cursor in OpenGL backend
This change is needed for Wayland screen recording apps to work
correctly. With this change the cursor is actually visible using GBM
buffer passing protocol.

Previously OpenGL backend did not support software cursor. If launching
in DRM/OpenGL mode with flicked on software cursor it only rendered
scene, but not the cursor image.

Differential Revision: https://phabricator.kde.org/D6186
2017-06-26 08:46:21 +03:00
Martin Flöser
004c0f3892 [autotests] Test creating core context profile
Extends OpenGL testRestart to once with GLCore and once with legacy.
2017-06-25 09:48:46 +02:00
l10n daemon script
3deb48b252 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"
2017-06-25 05:43:31 +02:00
l10n daemon script
a4d401c028 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"
2017-06-25 04:33:13 +02:00
Martin Flöser
66f0839925 [autotests] Introduce a SceneOpenGL ES test
The SceneOpenGLTest is transformed into a GenericSceneOpenGLTest which
can create either an OpenGL or an OpenGL ES scene based on env variable
which it sets in initTestCase. The env variable to set is passed as a
ctor argument from the SceneOpenGLTest and the new SceneOpenGLESTest.

This allows to easily run the same test code for both our OpenGL and
OpenGL ES compositor.
2017-06-24 21:05:49 +02:00
Martin Flöser
e2682c8405 [autotests] Extend pointer constraints test for closing window of locked pointer 2017-06-24 20:31:50 +02:00
l10n daemon script
8765f5b4c3 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"
2017-06-23 05:46:51 +02:00
l10n daemon script
9265d9fae7 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"
2017-06-23 04:36:21 +02:00
Martin Flöser
152be60cc0 Fix double click on window deco if tripple clicked
Patch by Thomas Lübking which got lost in bugs.kde.org.

BUG: 361241
FIXED-IN: 5.10.3
2017-06-22 07:07:06 +02:00
David Edmundson
b7cb301deb Make shadows work for windows 100% width or height
Summary:
Clients provide shadows as 9 images, which then get split into relevant quads.
To work out the full width we need the size of an item on the left, the middle and the right.

Some elements can be legitiamtely missing so to work out the width of the left edge we need to consider
all 3 of topleft,left,bottomleft.

Currently we checked both corners in case one was missing, but it's legitimate for both to be missing if the shadow
stretches the whole way.

BUG: 380825

Test Plan: Shadow on panel, rest looks the same

Reviewers: #plasma, mart

Reviewed By: #plasma, mart

Subscribers: graesslin, mart, plasma-devel, kwin, #kwin

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D6164
2017-06-20 15:48:41 +01:00
Martin Flöser
763fbf5faf Make Workspace::switchWindow operate on AbstractClient
Summary:
By using AbstractClient instead of Client the method works also for
Wayland windows.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6275
2017-06-20 07:11:57 +02:00
Martin Flöser
92207be904 Use AbstractClient instead of Client in placement
Summary:
There were a few places where we still used Client instead of
AbstractClient. By changing this the placement also works for
Wayland windows in those cases.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6274
2017-06-20 07:11:41 +02:00
Martin Flöser
33ca5025e7 Merge branch 'Plasma/5.10' 2017-06-20 07:11:16 +02:00
Martin Flöser
3b9ccc65a3 [tabbox] Fix casts to Client where it should be AbstractClient
Summary:
A few areas in TabBox perform casts from Toplevel to Client. By casting
to Client instead of AbstractClient the Wayland windows are excluded.

This change addresses the problem by changing the casts where possible.
The only remaining cast to Client is for shading which is not (yet)
supported for Wayland windows anyway.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6273
2017-06-20 07:07:44 +02:00
Martin Flöser
7a3c292612 Fix switch desktop on screenedge while resizing a Wayland window
Summary:
Screenedges only allows to switch desktop while moving window, not
while resizing. There was a special branch which only checked this for
X11 windows but not for Wayland windows.

This change removes a no longer needed cast from AbstractClient to Client
so that the check whether a window is getting resized works for both
X11 and Wayland clients. The cast was introduced in a time when
AbstractClient did not yet support the isResize method.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D6264
2017-06-20 06:58:03 +02:00
Martin Flöser
c45e165514 Fix switch desktop through edge when moving window
Summary:
There was a regression introduced in ScreenEdges when introducing the
activatesForPointer method. It considered the switch desktop on edge,
but not the special case of switch desktop when moving windows. Due to
that the edges did not activate when moving the window.

This change addresses the regression and extends the autotest to ensure
it's properly covered.

BUG: 380440
FIXED-IN: 5.10.3

Test Plan: Manual testing and extended auto test

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6257
2017-06-20 06:57:33 +02:00
Martin Flöser
a6dee74ee4 Workaround Qt regression of no longer delivering events for the root window
Summary:
With qtbase 2b34aefcf02f09253473b096eb4faffd3e62b5f4 we do no longer get
events reported for the X11 root window. Our keyboard handling in effects
like PresentWindows and DesktopGrid relied on that.

This change works around the regression by calling winId() on
qApp->desktop() as suggested in the change. This is a short term solution
for the 5.10 branch.

This needs to be addressed properly by no longer relying on Qt in this
area. KWin already does not rely on Qt for Wayland in that area and is
able to compose the QKeyEvents. This should also be done on X11. It just
needs some more hook up code for xkb, but that's needed anyway to improve
modifier only shortcuts and friends.

BUG: 360841
FIXED-IN: 5.10.3

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6258
2017-06-20 06:56:52 +02:00
Martin Flöser
56e681823b [autotest] Disable default TabBox on touch screen edge in ScreenEdgeClientShowTest
Not needed and the QML doesn't work well in tests.
2017-06-19 21:54:11 +02:00
Martin Flöser
0364fae4b9 [autotests] Fix ScreenEdgeClientShowTest::testScreenEdgeShowHideX11 on new CI
On the new CI system this test is failing. This might be a variation of
Qt 5.10 as I'm able to reproduce with Qt 5.10. From the investigation it
is not a bug in KWin. The test was failing due to a missing xcb_flush.
This happens when we go back to the event loop which seems not to happen
in proper timing. By adding a qWait we force to go to the event loop, the
flush is performed and the test passes.
2017-06-19 21:45:58 +02:00
Martin Flöser
0df09a8cbb Better handle cases when the xkb keymap fails to be created
Summary:
If the keymap cannot be created a few pointers in Xkb are null.
We should make sure to not call any xkbcommon functions on those
null pointers and instead use proper fallbacks.

This change introduces fixes for a few usages, but it's not unlikely
that there are more cases.

BUG: 381210
FIXED-IN: 5.10.3

Test Plan:
Autotest added for the condition of the bug, which does
not crash any more. Just starting the test found a few more crash
cases.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6260
2017-06-18 21:04:58 +02:00
Marco Martin
8190927eaf geometry shape changes also with no resize
Summary:
the morphingpopup effect was working with notifications only
in wayland. looking at what the codepath is, the signal
geometryShapeChanged was not emitted as it was checking for
resized, but it's supposed to come at every geometry
update, not only resizes

Test Plan:
notification with D6216 are correctly animated, other
animated things liketooltips are unaffected

Reviewers: #plasma, #kwin, graesslin, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6229
2017-06-15 19:08:19 +02:00
Jonathan Riddell
cfe13c5a4f Update version number for 5.10.2
GIT_SILENT
2017-06-13 18:31:37 +01:00
l10n daemon script
1680a4e9eb 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"
2017-06-13 05:58:57 +02:00
l10n daemon script
35c6aa526b 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"
2017-06-13 04:43:13 +02:00
Jonathan Riddell
7dabf22300 bump version number again 2017-06-12 11:13:05 +01:00
Roman Gilg
7ed8323cf8 Merge branch 'Plasma/5.10' 2017-06-12 01:30:34 +02:00
Roman Gilg
2f8cc2aa75 [platforms/drm] Make Atomic Mode Setting the new default
With the recent patches AMS should be stable enough for daily use. It was
tested by several people in the last week without reporting back any problems.
So make it the new default on master.

Leave an env variable for now to deactivate it, in case something bad happens.

Reviewers: #kwin, graesslin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D5934
2017-06-12 01:26:16 +02:00
Rohan Garg
b3247539e4 [DRM plugin] Remove dead code
Reviewed-By: Roman Gilg <subdiff@gmail.com>
2017-06-12 01:24:17 +02:00
Eike Hein
e7e79124aa Set pid on the ClientConnection backing the PlasmaWindow surface.
Summary: Depends on D5747.

Reviewers: #plasma, sebas, graesslin

Reviewed By: #plasma, graesslin

Subscribers: kwin, plasma-devel, #kwin

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D5756
2017-06-12 01:09:22 +02:00
Oleg Chernovskiy
d8ec2e0466 Make kwin_wayland remotely debuggable
Differential Revision: https://phabricator.kde.org/D6160
2017-06-11 22:17:27 +03:00
l10n daemon script
155b6ecb3b 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"
2017-06-11 04:45:20 +02:00
l10n daemon script
1112188a8b 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"
2017-06-10 05:41:19 +02:00
l10n daemon script
e3024908f5 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"
2017-06-10 04:29:59 +02:00
Jonathan Riddell
6d9a7142e5 Update version number for 5.10.1
GIT_SILENT
2017-06-06 11:42:40 +01:00
David Edmundson
5091feb8f6 Fix Aurorae decorations with non integer DPI
Summary:
As noted by Thomas L we're casting the scaleFactor to an int far too
early, which in the worst case means we end up with Aurorare themes not
rendering.

This moves the rounding to where it's used per border.

BUG: 380524

Test Plan:
Forced Xft.DPI to 95 with xrdb. Confirmed that it was broken
Applied this patch. Got decoration again

Reviewers: #plasma, mart

Reviewed By: #plasma, mart

Subscribers: mart, rikmills, plasma-devel, kwin, #kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D6099
2017-06-05 10:50:01 +01:00
l10n daemon script
85ede03a57 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"
2017-06-04 05:39:14 +02:00
Jonathan Riddell
c5861b99eb Update version number for 5.10.0
GIT_SILENT
2017-05-25 19:30:36 +01:00