Example #1
0
/*****************************************************************************
 * 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 );
}
Example #2
0
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 );
}
Example #3
0
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 ) );
}
Example #4
0
FingerprintDialog::~FingerprintDialog()
{
    if ( t ) delete t;
    if ( p_r ) fingerprint_request_Delete( p_r );
    delete ui;
}