Fix a memory leak in CmaRootObject.
Assign a thread name for easy debugging.
This commit is contained in:
		@@ -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;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user