Commit e710a643 authored by Thomas Surrel's avatar Thomas Surrel
Browse files

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<Solid::StorageAccess>()) 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
parent c900f7d2
...@@ -471,7 +471,8 @@ void PlacesItemModel::slotStorageTearDownDone(Solid::ErrorType error, const QVar ...@@ -471,7 +471,8 @@ void PlacesItemModel::slotStorageTearDownDone(Solid::ErrorType error, const QVar
if (error && errorData.isValid()) { if (error && errorData.isValid()) {
emit errorMessage(errorData.toString()); emit errorMessage(errorData.toString());
} }
m_deviceToTearDown->disconnect(); disconnect(m_deviceToTearDown, &Solid::StorageAccess::teardownDone,
this, &PlacesItemModel::slotStorageTearDownDone);
m_deviceToTearDown = nullptr; m_deviceToTearDown = nullptr;
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment