Commit graph

17215 commits

Author SHA1 Message Date
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
Frederik Gladhorn
5a2ae27474 Remove stray semicolon 2019-08-10 00:24:14 +02:00
Frederik Gladhorn
67b7904d5c Fix typo mkae -> make 2019-08-10 00:23:24 +02:00
Bhushan Shah
d7cfd0012a Revert "Load the keyboard on-demand"
This reverts commit 5c39795b88.

This unfortuntaely introduces the regression on the phone where there's
multiple bugs preset,

- Keyboard can no longer be closed using close button, or removing
  focus.
- Opening keyboard makes application get no input events, making it look
  like it is crashed/stuck or hung.

I failed to reproduce this bug on desktop unfortunately.

CCMAIL: Aleix Pol <aleixpol@kde.org>
2019-08-09 11:40:22 +05:30
l10n daemon script
18d8555135 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-09 05:37:51 +02:00
Roman Gilg
8e78ccac46 Remove X11Compositor requires compositing check
Summary:
With the split of the Compositor class in X11 and Wayland it is unnecessary
to check in X11Compositor if compositing is required since on X it never is.

Test Plan: Compiles.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D23032
2019-08-08 16:53:23 +02:00
Roman Gilg
91faa589c7 Replace foreach loops and improve code style in composite
Summary: Replaces foreach loops with modern for loops and improve code style overall.

Test Plan: Auto tests pass as before and manually in X and Wayland sessions.

Reviewers: #kwin

Subscribers: zzag, kwin

Tags: #kwin

Maniphest Tasks: T11071

Differential Revision: https://phabricator.kde.org/D23011
2019-08-08 14:43:53 +02:00
l10n daemon script
9275deba36 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-08 05:05:39 +02:00
Roman Gilg
1db84a2ba7 Split Compositor class in Wayland and X11 child classes
Summary:
This patch is a first take at splitting up of the Compositor class into
Wayland and X11 child classes.

In this first patch we mostly deal with setup and teardown procedures.
A future goal is to further differentiate the compositing part itself too.

Test Plan: Manually X from VT and Wayland nested. Autotests pass.

Reviewers: #kwin

Subscribers: sbergeron, anthonyfieroni, zzag, kwin

Tags: #kwin

Maniphest Tasks: T11071

Differential Revision: https://phabricator.kde.org/D22195
2019-08-07 21:06:53 +02:00
Vlad Zagorodniy
4e078b9eaf Revert "wayland: Terminate client connections before Workspace is destroyed"
Commit 826b9742e9 breaks a lot of other
things. Need further investigation before fixing heap-use-after-free.
2019-08-07 11:21:30 +03:00