From 43bed9a2a6437ab219cdc0a8d7bc0c61325080af Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Wed, 10 Oct 2018 08:56:10 +0200 Subject: [PATCH 1/4] 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" --- effects/logout/package/metadata.desktop | 1 + 1 file changed, 1 insertion(+) diff --git a/effects/logout/package/metadata.desktop b/effects/logout/package/metadata.desktop index 740bf77738..aed7e8c125 100644 --- a/effects/logout/package/metadata.desktop +++ b/effects/logout/package/metadata.desktop @@ -29,6 +29,7 @@ Comment=Smoothly fade to the logout screen Comment[ca]=Transició suau a la pantalla de sortida Comment[ca@valencia]=Transició suau a la pantalla d'eixida Comment[cs]=Plynule přejít na odhlašovací obrazovku +Comment[de]=Blendet den Abmeldungsdialog langsam ein. Comment[en_GB]=Smoothly fade to the logout screen Comment[es]=Desvanecer suavemente hasta la pantalla de cierre de sesión Comment[eu]=Emeki desagertu saio-ixteko pantailarantz From 6724955a762413bcc6b87e4909eadab593376f2a Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Wed, 10 Oct 2018 11:14:13 +0100 Subject: [PATCH 2/4] [qpa] Always keep a at least one screen Summary: Qt does not like having no screens. Both Qt XCB and Wayland QPAs have systems pretend there's always at least 1 screen present. Kwin already uses a dummy screen on startup, this patch reinserts the dummy screen if the platform states that all real screens are removed. BUG: 399564 Test Plan: Logged in, everything still worked Did not reproduce the original bug Reviewers: #kwin, zzag Reviewed By: #kwin, zzag Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D16096 --- plugins/qpa/integration.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/qpa/integration.cpp b/plugins/qpa/integration.cpp index 055b8fb133..d934b97601 100644 --- a/plugins/qpa/integration.cpp +++ b/plugins/qpa/integration.cpp @@ -205,11 +205,17 @@ QPlatformOpenGLContext *Integration::createPlatformOpenGLContext(QOpenGLContext void Integration::initScreens() { QVector newScreens; + newScreens.reserve(qMax(screens()->count(), 1)); for (int i = 0; i < screens()->count(); i++) { auto screen = new Screen(i); screenAdded(screen); newScreens << screen; } + if (newScreens.isEmpty()) { + auto dummyScreen = new Screen(-1); + screenAdded(dummyScreen); + newScreens << dummyScreen; + } while (!m_screens.isEmpty()) { destroyScreen(m_screens.takeLast()); } From 273a3fabd0ee7aa1321c4636dc29e4c9b29fa5f1 Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Wed, 10 Oct 2018 14:54:16 +0100 Subject: [PATCH 3/4] [activities] Fix logic error in user menu blocking activity updates Summary: There's an attempt to block updates to activities whilst the popup menu is showing. In one of the two code paths for positioning the menu the block is set but instead of releasing the block at the end of the exec locks it again. CCBUG: 335725 Test Plan: On X11 changed activities with the popup menu near the bottom. It still flickered like crazy whilst the menu is open (see bug report) But now at least fixes itself after Reviewers: #kwin, zzag Reviewed By: #kwin, zzag Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D16101 --- useractions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/useractions.cpp b/useractions.cpp index f3ca0f90bf..1d10f7a228 100644 --- a/useractions.cpp +++ b/useractions.cpp @@ -178,7 +178,7 @@ void UserActionsMenu::show(const QRect &pos, const QWeakPointer } } if (!m_client.isNull()) - m_client.data()->blockActivityUpdates(true); + m_client.data()->blockActivityUpdates(false); } } From 396f8f558c07e4c8b0d3090ebe5f65fab1d98f5a Mon Sep 17 00:00:00 2001 From: Vlad Zagorodniy Date: Thu, 11 Oct 2018 17:02:35 +0300 Subject: [PATCH 4/4] [effects/diminactive] Delete active transitions when window is deleted Summary: The Dim Inactive effect expects that the windowClosed signal always proceeds the windowDeleted signal. But in some cases that's not the case. If a window gets destroyed before becoming ready for painting, only the windowDeleted signal will be emitted. In addition to that, KWin will activate that window, which means we'll probably start a transition for it. Because this effect cannot terminate active transitions for such windows, KWin can crash in postPaintScreen. This change addresses the crash in postPaintScreen by adding extra clean up stuff in the windowDeleted slot to make sure that there are no transitions for deleted windows. The proper fix would be to not emit windowActivated signal for windows that are not ready for painting. BUG: 399612 FIXED-IN: 5.14.1 Test Plan: Ran ``` x <- seq(5, 15, length=1000) y <- dnorm(x, mean=10, sd=3) plot(x, y, type="l", lwd=1) ``` in RKWard multiple times. Reviewers: #kwin Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D16130 --- effects/diminactive/diminactive.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/effects/diminactive/diminactive.cpp b/effects/diminactive/diminactive.cpp index aae2c8b1b2..69ba653117 100644 --- a/effects/diminactive/diminactive.cpp +++ b/effects/diminactive/diminactive.cpp @@ -372,6 +372,12 @@ void DimInactiveEffect::windowClosed(EffectWindow *w) void DimInactiveEffect::windowDeleted(EffectWindow *w) { m_forceDim.remove(w); + + // FIXME: Sometimes we can miss the window close signal because KWin + // can activate a window that is not ready for painting and the window + // gets destroyed immediately. So, we have to remove active transitions + // for that window here, otherwise we'll crash in postPaintScreen. + m_transitions.remove(w); } void DimInactiveEffect::activeFullScreenEffectChanged()