diff --git a/src/appcontext.cpp b/src/appcontext.cpp index e7b9ab6..208bd25 100644 --- a/src/appcontext.cpp +++ b/src/appcontext.cpp @@ -104,7 +104,6 @@ void AppContext::addDevice(QString udid, idevice_connection_type conn_type, .deviceInfo = initResult.deviceInfo, .afcClient = initResult.afcClient, .afc2Client = initResult.afc2Client, - .mutex = new std::recursive_mutex(), }; m_devices[device->udid] = device; if (addType == AddType::Regular) { @@ -172,14 +171,15 @@ void AppContext::removeDevice(QString _udid) emit deviceRemoved(udid); emit deviceChange(); - std::lock_guard lock(*device->mutex); + std::lock_guard lock(device->mutex); if (device->afcClient) afc_client_free(device->afcClient); if (device->afc2Client) afc_client_free(device->afc2Client); + idevice_free(device->device); - delete device->mutex; + delete device; } @@ -201,8 +201,7 @@ void AppContext::removeRecoveryDevice(uint64_t ecid) emit recoveryDeviceRemoved(ecid); emit deviceChange(); - std::lock_guard lock(*deviceInfo->mutex); - delete deviceInfo->mutex; + std::lock_guard lock(deviceInfo->mutex); delete deviceInfo; } #endif @@ -254,7 +253,6 @@ void AppContext::addRecoveryDevice(uint64_t ecid) recoveryDevice->cpid = res.deviceInfo.cpid; recoveryDevice->bdid = res.deviceInfo.bdid; recoveryDevice->displayName = res.displayName; - recoveryDevice->mutex = new std::recursive_mutex(); m_recoveryDevices[res.deviceInfo.ecid] = recoveryDevice; emit recoveryDeviceAdded(recoveryDevice); @@ -271,14 +269,12 @@ AppContext::~AppContext() if (device->afc2Client) afc_client_free(device->afc2Client); idevice_free(device->device); - delete device->mutex; delete device; } #ifdef ENABLE_RECOVERY_DEVICE_SUPPORT for (auto recoveryDevice : m_recoveryDevices) { emit recoveryDeviceRemoved(recoveryDevice->ecid); - delete recoveryDevice->mutex; delete recoveryDevice; } #endif diff --git a/src/devicemanagerwidget.cpp b/src/devicemanagerwidget.cpp index 508f209..eba3500 100644 --- a/src/devicemanagerwidget.cpp +++ b/src/devicemanagerwidget.cpp @@ -280,11 +280,6 @@ void DeviceManagerWidget::removeDevice(const std::string &uuid) m_stackedWidget->removeWidget(deviceWidget); m_sidebar->removeDevice(uuid); deviceWidget->deleteLater(); - - // // TODO: - // if (m_deviceWidgets.count() > 0) { - // setCurrentDevice(m_deviceWidgets.firstKey()); - // } } } diff --git a/src/exportmanager.cpp b/src/exportmanager.cpp index fd531ef..13c7e1a 100644 --- a/src/exportmanager.cpp +++ b/src/exportmanager.cpp @@ -62,7 +62,7 @@ QUuid ExportManager::startExport(iDescriptorDevice *device, const QString &destinationPath, std::optional altAfc) { - if (!device || !device->mutex) { + if (!device) { qWarning() << "Invalid device provided to ExportManager"; return QUuid(); } diff --git a/src/iDescriptor.h b/src/iDescriptor.h index 3ed44f0..dbae75b 100644 --- a/src/iDescriptor.h +++ b/src/iDescriptor.h @@ -184,7 +184,7 @@ struct iDescriptorDevice { afc_client_t afcClient; afc_client_t afc2Client; bool is_iPhone; - std::recursive_mutex *mutex; + std::recursive_mutex mutex; }; struct iDescriptorInitDeviceResult { @@ -202,7 +202,7 @@ struct iDescriptorRecoveryDevice { uint32_t cpid; uint32_t bdid; std::string displayName; - std::recursive_mutex *mutex; + std::recursive_mutex mutex; }; #endif diff --git a/src/servicemanager.h b/src/servicemanager.h index a522126..7802e3a 100644 --- a/src/servicemanager.h +++ b/src/servicemanager.h @@ -43,11 +43,11 @@ public: std::function operation, std::optional altAfc = std::nullopt) { - if (!device || !device->mutex) { + if (!device) { return T{}; // Return default-constructed value for the type } - std::lock_guard lock(*device->mutex); + std::lock_guard lock(device->mutex); // Double-check device is still valid after acquiring lock if (!device->afcClient) { @@ -70,11 +70,11 @@ public: std::function operation, std::optional altAfc = std::nullopt) { - if (!device || !device->mutex) { + if (!device) { return T{}; // Return default-constructed value for the type } - std::lock_guard lock(*device->mutex); + std::lock_guard lock(device->mutex); // Double-check device is still valid after acquiring lock if (!device->afcClient) { @@ -94,11 +94,11 @@ public: std::function operation, T failureValue, std::optional altAfc = std::nullopt) { - if (!device || !device->mutex) { + if (!device) { return failureValue; } - std::lock_guard lock(*device->mutex); + std::lock_guard lock(device->mutex); // Double-check device is still valid after acquiring lock if (!device->afcClient) { @@ -118,11 +118,11 @@ public: executeOperation(iDescriptorDevice *device, std::function operation, std::optional altAfc = std::nullopt) { - if (!device || !device->mutex) { + if (!device) { return; } - std::lock_guard lock(*device->mutex); + std::lock_guard lock(device->mutex); // Double-check device is still valid after acquiring lock if (!device->afcClient) { @@ -144,11 +144,11 @@ public: std::optional altAfc = std::nullopt) { try { - if (!device || !device->mutex) { + if (!device) { return AFC_E_UNKNOWN_ERROR; } - std::lock_guard lock(*device->mutex); + std::lock_guard lock(device->mutex); // Double-check device is still valid after acquiring lock if (!device->afcClient) {