Commit graph

17224 commits

Author SHA1 Message Date
Vlad Zagorodniy
ffd4a3b390 [plugins/aurorae] Fix indentation in Decoration::updateBuffer
CCMAIL: kde@davidedmundson.co.uk
2019-08-28 19:39:31 +03:00
David Edmundson
af56a0ca0e [Aurorae] Remove effective triple buffering
Summary:
KWin blits contents into a QImage raster buffer. Because of this we
don't need our underlying GL surface to be double buffered as it
effectively makes the whole thing tripple buffered.

Test Plan: Ran Aurorae, looked the same, should save some memory

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23331
2019-08-28 17:34:56 +01:00
David Edmundson
c67d81aeb9 [Aurorae] Don't delay initial blit.
Summary:
Aurorae has a timer between request update and updating the contents.
This makes some sense.

However on initial creation we want to snap the contents immediately as
otherwise we may be out by a frame between a new window being mapped and
the window decoration being rendered.

Test Plan:
Ran with Auroae
Windows opened immediately seemed to have a deco straight away

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: zzag, romangg, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23332
2019-08-28 17:34:56 +01:00
Roman Gilg
f2c5f85cae Assure wayland output interface creation path
Summary:
The Wayland and XDG output interfaces are created or destroyed when the
output is en- or disabled. This follows a clear path of dependencies and
we should not check if this is indeed the case but instead assert on it.

Test Plan: Nested Wayland and Drm sessions.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23540
2019-08-28 18:33:00 +02:00
Vlad Zagorodniy
7f5f64c0c7 [autotests] Fix failing autotests
Summary:
After recent output-related changes testIdleInhibition and
testColorCorrectionNightColor started failing with the following output:

    ❯ dbus-run-session bin/testIdleInhibition
    ********* Start testing of TestIdleInhibition *********
    Config: Using QtTest library 5.13.0, Qt 5.13.0 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 9.1.0)
    QFATAL : TestIdleInhibition::initTestCase() ASSERT: "mode.size.isValid()" in file /home/vlad/Workspace/KDE/src/frameworks/kwayland/src/server/outputdevice_interface.cpp, line 188
    FAIL!  : TestIdleInhibition::initTestCase() Received a fatal error.
       Loc: [Unknown file(0)]
    Totals: 0 passed, 1 failed, 0 skipped, 0 blacklisted, 13ms
    ********* Finished testing of TestIdleInhibition ********

Apparently, they both don't initialize virtual outputs properly.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: romangg, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23539
2019-08-28 19:20:50 +03:00
Roman Gilg
ae55e37660 Fix variable unused warning 2019-08-28 18:10:24 +02:00
Roman Gilg
5cc626c102 Remove outputs handling alternative
Summary:
With f013a4369c, cd6b69a4d2, d960be4b3f and edb200f6bc all possible
backends of a Wayland session have been ported to using the internal functions
of AbstractWaylandOutput's for managing outputs.

This removes the alternative code path used before in these backends, what
simplifies the code and is also a prerequisite to removing the Screens global
in the future.

Reviewers: #kwin, apol, zzag

Reviewed By: #kwin, apol, zzag

Subscribers: apol, kwin

Tags: #kwin

Maniphest Tasks: T11459, T11098

Differential Revision: https://phabricator.kde.org/D23485
2019-08-28 15:00:39 +02:00
Roman Gilg
331f5d7da7 Get output physical size from output device
Summary:
Get the physical size directly from the always available output device
interface instead of saving an additional copy in the abstract wayland
output class.

There is some ambiguity with orientation and naming that needs to be
cleaned up when output orientation is reworked.

Test Plan: Nested Wayland, Drm, virtual backends tested.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Maniphest Tasks: T11459

Differential Revision: https://phabricator.kde.org/D23496
2019-08-28 14:56:26 +02:00
Roman Gilg
dbb2cede08 Get output pixel size from output device
Summary:
Get the pixel size directly from the always available output device
interface instead of saving an additional copy in the backends.

Test Plan: Nested Wayland, Drm, virtual backends tested.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Maniphest Tasks: T11459

Differential Revision: https://phabricator.kde.org/D23495
2019-08-28 14:54:14 +02:00
Roman Gilg
819609a8a6 Get output position and scale from output device interface
Summary:
Let the data saved in OutputDeviceInterface be the single source of truth
and as low hanging fruits first do this for global position and scale.

Test Plan: Nested Wayland, Drm, virtual backends tested.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Maniphest Tasks: T11459

Differential Revision: https://phabricator.kde.org/D23489
2019-08-28 14:51:12 +02:00
Roman Gilg
0bcfb4d609 Rely on output device existence
Summary:
For every abstract wayland output an output device interface is created
by the backend directly after instance creation. We can therefore rely on
its existence and remove superfluous checks.

Test Plan: Relevant auto tests pass. Wayland nested and DRM sessions tested.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Maniphest Tasks: T11459

Differential Revision: https://phabricator.kde.org/D23486
2019-08-28 14:48:28 +02:00
Vlad Zagorodniy
4dfb8150fa [platforms/x11] Delete duplicate doxygen comments in X11Output
Summary:
geometry(), refreshRate(), and gammaRampSize() are already documented in
AbstractOutput class.

Test Plan: Compiles.

Reviewers: #kwin, apol

Reviewed By: apol

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23481
2019-08-28 12:06:56 +03:00
Roman Gilg
edb200f6bc [platforms/x11/windowed] Create output devices
Summary: Create output devices in X11 nested Wayland session.

Test Plan: Started nested session in X11. KScreen showed output.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Maniphest Tasks: T11459

Differential Revision: https://phabricator.kde.org/D23479
2019-08-27 12:33:09 +02:00
Roman Gilg
d960be4b3f [platforms/fbdev] Create output device
Summary: Create output device in framebuffer backend.

Test Plan: On VT started `dbus-run-session kwin_wayland --framebuffer --xwayland`.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Maniphest Tasks: T11459

Differential Revision: https://phabricator.kde.org/D23478
2019-08-27 12:29:04 +02:00
Roman Gilg
cd6b69a4d2 [platforms/virtual] Create output devices
Summary:
Create output devices in virtual backend. For that the setVirtualOutputs call
can only come after the Wayland server has been initiliazied such that the
display exists to create the output and output device interfaces. Tests have
been adjusted for that.

Test Plan:
```
98% tests passed, 3 tests failed out of 148

Total Test time (real) = 362.97 sec

The following tests FAILED:
         33 - kwin-testInternalWindow (Failed)
         39 - kwin-testPointerInput (Failed)
        101 - kwin-testMoveResize (Failed)
```
Failing of these tests looks unrelated to the change.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Maniphest Tasks: T11459

Differential Revision: https://phabricator.kde.org/D23477
2019-08-27 12:24:49 +02:00
Roman Gilg
f013a4369c [platforms/wayland] Create output devices
Summary:
Since all Wayland session backends now use the same structure of
AbstractWaylandOutput we can create output devices like in the DRM backend.

First let us do this for Wayland nested sessions.

Test Plan: Manually with output-count 1 and 2. Outputs are correctly shown in KScreen.

Reviewers: #kwin

Subscribers: zzag, kwin

Tags: #kwin

Maniphest Tasks: T11140, T11459

Differential Revision: https://phabricator.kde.org/D23473
2019-08-27 12:20:25 +02:00
Vlad Zagorodniy
e79aedb1de Merge branch 'Plasma/5.16' 2019-08-27 08:23:25 +03:00
Vlad Zagorodniy
780cf9812e Merge branch 'Plasma/5.12' into Plasma/5.16 2019-08-27 08:22:57 +03:00
Vlad Zagorodniy
e918cb5d2d [effects/desktopgrid] Don't change activities
Summary:
If the Desktop Grid effect doesn't use the Present Windows effect to
layout windows, windowAt helper can return a window that doesn't belong
to current activity because it doesn't check whether that window belongs
to current activity.

This change addresses that problem by adding corresponding check.

BUG: 301447
FIXED-IN: 5.13.4

Test Plan:
//Unchecked "Use Present Windows effect to layout the windows".//

* Switched to activity #1
* Switched to virtual desktop #1
* Launched Konsole and maximized it(to increate hit area)
* Switched to activity #2
* Switched to virtual desktop #2
* Launched Dolphin and maximized it
* Activated the Desktop Grid effect, clicked on virtual desktop #1 (activity #2 is still active)
* Switched to activity #1
* Activated the Desktop Grid effect, clicked on virtual desktop #2 (activity #1 is still active)

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D14046
2019-08-27 08:22:06 +03:00
Roman Gilg
0301c0866a Emit mode-change on all relevant changes
Summary:
The EGL GBM backend must be informed about mode changes so that the surface
gets reset. This fixes mode changes for me. Rotations still not work, this
needs some more structure cleanup.

Test Plan: Manually changed resolution and scale alone and together with KScreen.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23435
2019-08-26 12:41:42 +02:00
Roman Gilg
9bf7cbc7f6 Remove change-set null check
Summary:
It is unnecessary to check if the change-set is null when looking at the
KWayland code. Also the check would be useless at the moment anyway because
before the check we access the change-set already in the DRM backend and at
the check we would not return if it would be null.

Test Plan: Relevant auto tests pass.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23428
2019-08-26 12:38:23 +02:00
David Faure
36ee672903 Merge remote-tracking branch 'origin/Plasma/5.16' 2019-08-22 14:10:17 +02:00
David Faure
ba5432fd52 Remove slideWindow(QWidget*) overload with recent KWindowSystem
Test Plan: Fixes the build after https://phabricator.kde.org/D23213

Reviewers: davidedmundson, zzag

Reviewed By: zzag

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23227
2019-08-22 14:09:41 +02:00
Roman Gilg
99d921707f [platforms/x11/standalone] Fix stored refresh rate
Summary:
With 1a11abc821 X11 standalone plugin uses the AbstractOutput interface for
managing its outputs. In there the refresh rate is stored in 1/μs.

Test Plan: currentRefreshRate() provides correct rate.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23265
2019-08-20 14:02:43 +02:00
l10n daemon script
506b9b2866 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"
2019-08-20 05:07:01 +02:00
Bhushan Shah
2bf2a04f86 Fix the build error in hwcomposer backend
This fixes build error introduced by commit 12886cf442
2019-08-17 16:24:53 +05:30
l10n daemon script
080cdd4931 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"
2019-08-17 05:17:35 +02:00
l10n daemon script
9608a8b579 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"
2019-08-15 04:57:48 +02:00
Frederik Gladhorn
1296ad3986 Remove custom menu positioning code
Summary:
Qt will position the menu just fine, this is overhead.
No matter how hard I tried, I couldn't get the menu to show up in a
position where it wasn't shown entirely, removing this should be safe.
Suggested by zzag.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23142
2019-08-14 11:50:25 +02:00
Frederik Gladhorn
25ec024ab5 Use compiler __SSE2__ definitions and C++11 alignas
Summary:
Since C++11 alignas is a keyword, so we don't need to create our own.
All relevant compilers (gcc, clang, icc) define __SSE2__, so just use that.

There seem to be frequent crashes in the quad version of this code, but
this change should not make any difference from what I can tell.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23120
2019-08-14 09:31:28 +02:00
Yuri Chornoivan
ac702ff2dc Update icon PNGs 2019-08-13 12:17:26 +03:00
Frederik Gladhorn
ce404f52a8 Use C++ cast instead of c-style
Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23121
2019-08-13 08:43:12 +02:00
Frederik Gladhorn
0a5b029a39 Reduce duplicate code calculating popup position
Summary: The popup/exec if was duplicated three times, only to calculate the y position.

Reviewers: #kwin, romangg, zzag

Reviewed By: #kwin, romangg, zzag

Subscribers: zzag, romangg, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23102
2019-08-13 08:39:23 +02:00
l10n daemon script
e180a8b2b0 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"
2019-08-13 05:31:32 +02:00
l10n daemon script
6bf209975c 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"
2019-08-12 05:16:13 +02:00
Frederik Gladhorn
75e96010a3 Move common code out of if/else
Summary: Less duplication is better.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23101
2019-08-11 22:15:43 +02:00
Frederik Gladhorn
12886cf442 Be consistent about touch point id type: use qint32
Summary:
There is no point in using quint32 and casting back and forth in numerous places.
Fix a bunch of compiler warnings that we implicitly cast between signed and unsigned.
This makes things consistent with what we get from libinput.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: zzag, romangg, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23086
2019-08-11 22:15:05 +02:00
Frederik Gladhorn
ed4a9d756a Clean up usage of m_client
Summary:
We have a smart pointer, so be consistent in checking it.
Since there is an operator->, make the code easier to read by removing countless .data()->.
!m_client.isNull() can also be written as m_client since operator bool works.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: romangg, zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23067
2019-08-11 21:08:11 +02:00
Frederik Gladhorn
969403b35f Make iterating over Layer enum simple
Summary:
Having a function with a confusing comment, to iterate over the enum,
is mostly confusing. Make it boring by just moving the cast to the one
place that uses it.

Reviewers: #kwin, romangg, zzag

Reviewed By: #kwin, romangg, zzag

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23085
2019-08-11 16:23:08 +02:00
Frederik Gladhorn
dd944b2d5e Fix warning: -Wdeprecated-copy - implement StrutRect::operator=
Summary:
/home/frederik/kdesrc/kde/workspace/kwin/geometry.cpp:156:88: warning: implicitly-declared ‘constexpr KWin::StrutRect& KWin::StrutRect::operator=(const KWin::StrutRect&)’ is deprecated [-Wdeprecated-copy]
  156 |             *strut = StrutRect((*strut).intersected(clientsScreenRect), (*strut).area());
      |                                                                                        ^
In file included from /home/frederik/kdesrc/kde/workspace/kwin/rules.h:32,
                 from /home/frederik/kdesrc/kde/workspace/kwin/client.h:27,
                 from /home/frederik/kdesrc/kde/workspace/kwin/geometry.cpp:30:
/home/frederik/kdesrc/kde/workspace/kwin/utils.h:113:5: note: because ‘KWin::StrutRect’ has user-provided ‘KWin::StrutRect::StrutRect(const KWin::StrutRect&)’
  113 |     StrutRect(const StrutRect& other);
      |     ^~~~~~~~~

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23084
2019-08-11 16:00:00 +02:00
Frederik Gladhorn
e6ad8786da Be consistent in undefining macros
Summary: I don't think it matters, but for completness' sake, undefine all of them.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23083
2019-08-11 12:09:23 +02:00
Frederik Gladhorn
99c2318301 Remove stray semicolon 2019-08-11 11:51:57 +02:00
l10n daemon script
304c2f9f93 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"
2019-08-11 08:15:45 +02:00
l10n daemon script
d657448324 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"
2019-08-11 04:57:32 +02:00
Vlad Zagorodniy
744e2be3f6 refactor: Minimize use of geom in Toplevel subclasses
Summary:
This change makes easier to refactor geometry handling in the future.
The main motivation for avoiding using geom directly is to make code
more readable and ensure that the geometry is updated only through
designated methods, e.g. setGeometry, plainResize, etc.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: romangg, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23072
2019-08-10 20:01:16 +03:00
Frederik Gladhorn
00daa8a07e Remove usage of QWeakPointer for QObject for AbstractThumbnailItem::m_parent
Summary:
This usage of QWeakPointer has been deprecated since Qt 5.0, since it
leads to really confusing API - usually you must never dereference a
QWeakPointer directly, but always go through QSharedPointer, except in
this one case, where it's permissible.

Use QPointer instead, which is clean.

Reviewers: #kwin, zzag, romangg

Reviewed By: #kwin, zzag, romangg

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23071
2019-08-10 16:25:12 +02:00
Frederik Gladhorn
348232e682 Remove usage of QWeakPointer for QObject for thumbnails
Summary:
This usage of QWeakPointer has been deprecated since Qt 5.0, since it
leads to really confusing API - usually you must never dereference a
QWeakPointer directly, but always go through QSharedPointer, except in
this one case, where it's permissible.

The thumbnails are only referenced in one place, this change is straight-forward.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: romangg, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23070
2019-08-10 16:24:37 +02:00
Frederik Gladhorn
ef670c3648 Fix ifdefs resulting in dead code
Summary:
Use #else, otherwise there are two return statements after each other
which doesn't make sense.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23068
2019-08-10 12:27:23 +02:00
Frederik Gladhorn
9002f9b99e Remove usage of QWeakPointer for QObject
This usage of QWeakPointer has been deprecated since Qt 5.0, since it
leads to really confusing API - usually you must never dereference a
QWeakPointer directly, but always go through QSharedPointer, except in
this one case, where it's permissible.

Use QPointer instead, which is clean.
Only keep the QPointer where the object in question may get deleted,
while in the API where it has to be valid, use a regular pointer.

Initializing the pointer explicitly to nullptr makes no sense.
2019-08-10 11:18:16 +02:00
l10n daemon script
8f5b781a33 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"
2019-08-10 05:09:50 +02:00