From e710a6431160aee57b1eab34b11dfe64e341898c Mon Sep 17 00:00:00 2001 From: Thomas Surrel Date: Tue, 13 Nov 2018 11:05:16 +0100 Subject: [PATCH] Do not disconnect all StorageAccess signals when unmounting Summary: The problem is caused by the fact device interfaces returned by Solid (e.g. item->device().as()) are not full objects, but only references/pointers to a per-device-object, i.e. requesting the same interface for a device will return the same address every time. If the interface is used used in multiple places, calling disconnect on the interface address disconnects the signals for all users. BUG: 400992 Test Plan: In Dolphin, mount a local partition (e.g. a Windows partition) then unmount it (right click on it in Places, then Unmount). Try to access it again by clicking on it in Places, we should get access to it correctly. Reviewers: #dolphin, #frameworks, bruns, elvisangelaccio Reviewed By: #dolphin, elvisangelaccio Subscribers: elvisangelaccio, kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D16857 --- src/panels/places/placesitemmodel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/panels/places/placesitemmodel.cpp b/src/panels/places/placesitemmodel.cpp index f7fe5587c..66bdbd57a 100644 --- a/src/panels/places/placesitemmodel.cpp +++ b/src/panels/places/placesitemmodel.cpp @@ -471,7 +471,8 @@ void PlacesItemModel::slotStorageTearDownDone(Solid::ErrorType error, const QVar if (error && errorData.isValid()) { emit errorMessage(errorData.toString()); } - m_deviceToTearDown->disconnect(); + disconnect(m_deviceToTearDown, &Solid::StorageAccess::teardownDone, + this, &PlacesItemModel::slotStorageTearDownDone); m_deviceToTearDown = nullptr; } -- 2.47.3