From d3fcccfb3d7ebe7d982c3fdf53de462a9c71f04d Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Tue, 3 Nov 2015 22:12:58 +0100 Subject: [PATCH] Fix crash on multiscreen setups by not relying on sender() Reviewed-By: d_ed Reviewed-By: einar77 --- ksmserver/screenlocker/greeter/greeterapp.cpp | 10 ++++++---- ksmserver/screenlocker/greeter/greeterapp.h | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ksmserver/screenlocker/greeter/greeterapp.cpp b/ksmserver/screenlocker/greeter/greeterapp.cpp index b93900fd2..c65d6bfad 100644 --- a/ksmserver/screenlocker/greeter/greeterapp.cpp +++ b/ksmserver/screenlocker/greeter/greeterapp.cpp @@ -255,14 +255,16 @@ void UnlockApp::desktopResized() view->showFullScreen(); } view->raise(); - connect(view, &QQuickWindow::frameSwapped, this, &UnlockApp::markViewsAsVisible, Qt::QueuedConnection); + + connect(view, &QQuickWindow::frameSwapped, this, [this, view] { + markViewsAsVisible(view); + }, Qt::QueuedConnection); } } -void UnlockApp::markViewsAsVisible() +void UnlockApp::markViewsAsVisible(KQuickAddons::QuickViewSharedEngine *view) { - auto *view = qobject_cast(sender()); - disconnect(view, &QQuickWindow::frameSwapped, this, &UnlockApp::markViewsAsVisible); + disconnect(view, &QQuickWindow::frameSwapped, this, 0); QQmlProperty showProperty(view->rootObject(), QStringLiteral("viewVisible")); showProperty.write(true); // random state update, actually rather required on init only diff --git a/ksmserver/screenlocker/greeter/greeterapp.h b/ksmserver/screenlocker/greeter/greeterapp.h index dcfc5d1a6..35e7aa5a3 100644 --- a/ksmserver/screenlocker/greeter/greeterapp.h +++ b/ksmserver/screenlocker/greeter/greeterapp.h @@ -72,7 +72,7 @@ private Q_SLOTS: void suspendToRam(); void suspendToDisk(); void getFocus(); - void markViewsAsVisible(); + void markViewsAsVisible(KQuickAddons::QuickViewSharedEngine *view); void setLockedPropertyOnViews(); private: