From 2265a27912dca82cd7bbf51dadadf25be5084174 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Sun, 15 Mar 2020 15:12:30 -0700 Subject: android/usb: better memory management Instead of relying on the std::vector staying unchanged and not freeing its members, instead keep a copy of the object in our DCDeviceData class. Signed-off-by: Dirk Hohndel --- core/downloadfromdcthread.cpp | 5 +++-- core/downloadfromdcthread.h | 9 ++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'core') diff --git a/core/downloadfromdcthread.cpp b/core/downloadfromdcthread.cpp index 2517b7fb6..8a3365842 100644 --- a/core/downloadfromdcthread.cpp +++ b/core/downloadfromdcthread.cpp @@ -324,9 +324,10 @@ void DCDeviceData::setDevName(const QString &devName) } #if defined(Q_OS_ANDROID) -void DCDeviceData::setUsbDevice(void *device) +void DCDeviceData::setUsbDevice(const android_usb_serial_device_descriptor &usbDescriptor) { - data.androidUsbDeviceDescriptor = device; + androidUsbDescriptor = usbDescriptor; + data.androidUsbDeviceDescriptor = &androidUsbDescriptor; } #endif diff --git a/core/downloadfromdcthread.h b/core/downloadfromdcthread.h index f142a4243..239811749 100644 --- a/core/downloadfromdcthread.h +++ b/core/downloadfromdcthread.h @@ -12,6 +12,10 @@ #if BT_SUPPORT #include "core/btdiscovery.h" #endif +#if defined(Q_OS_ANDROID) +#include "core/serial_usb_android.h" +#endif + /* Helper object for access of Device Data in QML */ class DCDeviceData { public: @@ -50,9 +54,12 @@ public: void setSaveDump(bool dumpMode); void setSaveLog(bool saveLog); #if defined(Q_OS_ANDROID) - void setUsbDevice(void *device); + void setUsbDevice(const android_usb_serial_device_descriptor &usbDescriptor); #endif private: +#if defined(Q_OS_ANDROID) + struct android_usb_serial_device_descriptor androidUsbDescriptor; +#endif device_data_t data; // Bluetooth name is managed outside of libdivecomputer -- cgit v1.2.3-70-g09d2