From: Thomas Surrel Date: Tue, 13 Nov 2018 10:05:16 +0000 (+0100) Subject: Do not disconnect all StorageAccess signals when unmounting X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/e710a6431160aee57b1eab34b11dfe64e341898c?ds=sidebyside 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 --- 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; }