/***************************************************************************** * Close: *****************************************************************************/ static void Close(vlc_object_t *p_this) { fingerprinter_thread_t *p_fingerprinter = (fingerprinter_thread_t*) p_this; fingerprinter_sys_t *p_sys = p_fingerprinter->p_sys; vlc_cancel( p_sys->thread ); vlc_join( p_sys->thread, NULL ); vlc_mutex_destroy( &p_sys->condwait.lock ); vlc_cond_destroy( &p_sys->condwait.wait ); for ( int i = 0; i < vlc_array_count( p_sys->incoming.queue ); i++ ) fingerprint_request_Delete( vlc_array_item_at_index( p_sys->incoming.queue, i ) ); vlc_array_destroy( p_sys->incoming.queue ); vlc_mutex_destroy( &p_sys->incoming.lock ); vlc_cond_destroy( &p_sys->incoming_queue_filled ); for ( int i = 0; i < vlc_array_count( p_sys->processing.queue ); i++ ) fingerprint_request_Delete( vlc_array_item_at_index( p_sys->processing.queue, i ) ); vlc_array_destroy( p_sys->processing.queue ); vlc_mutex_destroy( &p_sys->processing.lock ); for ( int i = 0; i < vlc_array_count( p_sys->results.queue ); i++ ) fingerprint_request_Delete( vlc_array_item_at_index( p_sys->results.queue, i ) ); vlc_array_destroy( p_sys->results.queue ); vlc_mutex_destroy( &p_sys->results.lock ); free( p_sys ); }
static void CleanSys( fingerprinter_sys_t *p_sys ) { for ( size_t i = 0; i < vlc_array_count( &p_sys->incoming.queue ); i++ ) fingerprint_request_Delete( vlc_array_item_at_index( &p_sys->incoming.queue, i ) ); vlc_array_clear( &p_sys->incoming.queue ); vlc_mutex_destroy( &p_sys->incoming.lock ); for ( size_t i = 0; i < vlc_array_count( &p_sys->processing.queue ); i++ ) fingerprint_request_Delete( vlc_array_item_at_index( &p_sys->processing.queue, i ) ); vlc_array_clear( &p_sys->processing.queue ); vlc_mutex_destroy( &p_sys->processing.lock ); vlc_cond_destroy( &p_sys->processing.cond ); for ( size_t i = 0; i < vlc_array_count( &p_sys->results.queue ); i++ ) fingerprint_request_Delete( vlc_array_item_at_index( &p_sys->results.queue, i ) ); vlc_array_clear( &p_sys->results.queue ); vlc_mutex_destroy( &p_sys->results.lock ); }
void FingerprintDialog::handleResults() { p_r = t->fetchResults(); if ( ! p_r ) { ui->stackedWidget->setCurrentWidget( ui->error ); return; } if ( vlc_array_count( & p_r->results.metas_array ) == 0 ) { fingerprint_request_Delete( p_r ); p_r = NULL; ui->stackedWidget->setCurrentWidget( ui->error ); return; } ui->stackedWidget->setCurrentWidget( ui->results ); for ( int i=0; i< vlc_array_count( & p_r->results.metas_array ) ; i++ ) { vlc_meta_t *p_meta = (vlc_meta_t *) vlc_array_item_at_index( & p_r->results.metas_array, i ); QListWidgetItem *item = new QListWidgetItem(); ui->recordsList->addItem( item ); QString mb_id( vlc_meta_GetExtra( p_meta, "musicbrainz-id" ) ); QLabel *label = new QLabel( QString( "<h3 style=\"margin: 0\"><a style=\"text-decoration:none\" href=\"%1\">%2</a></h3>" "<span style=\"padding-left:20px\">%3</span>" ) .arg( QString( "http://mb.videolan.org/recording/%1" ).arg( mb_id ) ) .arg( qfu( vlc_meta_Get( p_meta, vlc_meta_Title ) ) ) .arg( qfu( vlc_meta_Get( p_meta, vlc_meta_Artist ) ) ) ); label->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); label->setOpenExternalLinks( true ); item->setSizeHint( label->sizeHint() ); ui->recordsList->setItemWidget( item, label ); } ui->recordsList->setCurrentIndex( ui->recordsList->model()->index( 0, 0 ) ); }
FingerprintDialog::~FingerprintDialog() { if ( t ) delete t; if ( p_r ) fingerprint_request_Delete( p_r ); delete ui; }