Fix a memory leak in CmaRootObject.

Assign a thread name for easy debugging.
This commit is contained in:
codestation
2013-08-20 00:41:18 -04:30
parent 0704cfa80a
commit d4dcb42a8e
7 changed files with 12 additions and 6 deletions

View File

@@ -78,7 +78,7 @@ void AVDecoder::getVideoMetadata(metadata_t &metadata)
if((entry = av_dict_get(file_metadata, "title", NULL, 0)) != NULL) { if((entry = av_dict_get(file_metadata, "title", NULL, 0)) != NULL) {
metadata.data.video.title = strdup(entry->value); metadata.data.video.title = strdup(entry->value);
} else { } else {
metadata.data.video.title = metadata.name; metadata.data.video.title = strdup(metadata.name);
} }
metadata.data.video.tracks->data.track_video.duration = pFormatCtx->duration / 1000; metadata.data.video.tracks->data.track_video.duration = pFormatCtx->duration / 1000;

View File

@@ -29,10 +29,14 @@ void BaseWorker::onFinished()
{ {
} }
void BaseWorker::start() void BaseWorker::start(const char *thread_name)
{ {
thread = new QThread(); thread = new QThread();
if(thread_name) {
thread->setObjectName(thread_name);
}
// Move this service to a new thread // Move this service to a new thread
this->moveToThread(thread); this->moveToThread(thread);

View File

@@ -30,7 +30,7 @@ class BaseWorker : public QObject
public: public:
explicit BaseWorker(QObject *parent = 0); explicit BaseWorker(QObject *parent = 0);
void start(); void start(const char *thread_name = NULL);
private: private:
QThread *thread; QThread *thread;

View File

@@ -71,7 +71,7 @@ vita_device_t *CmaClient::getDeviceConnection()
break; break;
} }
qDebug("No Vita detected via USB, attempt %i", ++num_tries); qDebug("No Vita detected via USB, attempt %i", ++num_tries);
vita = VitaMTP_Get_First_Wireless_Vita(&host, 0, 0, CmaClient::deviceRegistered, CmaClient::generatePin); vita = VitaMTP_Get_First_Wireless_Vita(&host, 0, 3, CmaClient::deviceRegistered, CmaClient::generatePin);
if(vita || !active) { if(vita || !active) {
break; break;
} }

View File

@@ -37,7 +37,7 @@ void CMARootObject::initObject(const QString &path)
case VITA_OHFI_MUSIC: case VITA_OHFI_MUSIC:
metadata.dataType = Music; metadata.dataType = Music;
this->path = path; this->path = path;
num_filters = 1; num_filters = 2;
filters = new metadata_t[2]; filters = new metadata_t[2];
//createFilter(&filters[0], "Artists", VITA_DIR_TYPE_MASK_MUSIC | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_ARTISTS); //createFilter(&filters[0], "Artists", VITA_DIR_TYPE_MASK_MUSIC | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_ARTISTS);
createFilter(&filters[0], "Albums", VITA_DIR_TYPE_MASK_MUSIC | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_ALBUMS); createFilter(&filters[0], "Albums", VITA_DIR_TYPE_MASK_MUSIC | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_ALBUMS);

View File

@@ -165,6 +165,8 @@ void Database::destroy()
QMutexLocker locker(&mutex); QMutexLocker locker(&mutex);
for(map_list::iterator root = object_list.begin(); root != object_list.end(); ++root) { for(map_list::iterator root = object_list.begin(); root != object_list.end(); ++root) {
CMARootObject *first = static_cast<CMARootObject *>((*root).takeFirst());
delete first;
qDeleteAll(*root); qDeleteAll(*root);
} }

View File

@@ -66,7 +66,7 @@ void MainWidget::dialogResult(int result)
void MainWidget::startServer() void MainWidget::startServer()
{ {
qDebug("Starting cma event loop"); qDebug("Starting cma event loop");
clientLoop.start(); clientLoop.start("CmaClient");
} }
void MainWidget::stopServer() void MainWidget::stopServer()