这篇教程C++ vlc_cond_destroy函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中vlc_cond_destroy函数的典型用法代码示例。如果您正苦于以下问题:C++ vlc_cond_destroy函数的具体用法?C++ vlc_cond_destroy怎么用?C++ vlc_cond_destroy使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了vlc_cond_destroy函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: Close/***************************************************************************** * 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 );}
开发者ID:Kubink,项目名称:vlc,代码行数:32,
示例2: libvlc_event_async_fini/************************************************************************** * libvlc_event_async_fini (internal) : * * Destroy what might have been created by. **************************************************************************/voidlibvlc_event_async_fini(libvlc_event_manager_t * p_em){ if(!is_queue_initialized(p_em)) return; if(current_thread_is_asynch_thread(p_em)) { fprintf(stderr, "*** Error: releasing the last reference of the observed object from its callback thread is not (yet!) supported/n"); abort(); } vlc_thread_t thread = queue(p_em)->thread; if(thread) { vlc_cancel(thread); vlc_join(thread, NULL); } vlc_mutex_destroy(&queue(p_em)->lock); vlc_cond_destroy(&queue(p_em)->signal); vlc_cond_destroy(&queue(p_em)->signal_idle); vlc_threadvar_delete(&queue(p_em)->is_asynch_dispatch_thread_var); struct queue_elmt * iter = queue(p_em)->elements; while (iter) { struct queue_elmt * elemt_to_delete = iter; iter = iter->next; free(elemt_to_delete); } free(queue(p_em));}
开发者ID:FLYKingdom,项目名称:vlc,代码行数:37,
示例3: vlc_mwait_i11eint vlc_mwait_i11e(mtime_t deadline){ vlc_interrupt_t *ctx = vlc_threadvar_get(vlc_interrupt_var); if (ctx == NULL) return mwait(deadline), 0; vlc_cond_t wait; vlc_cond_init(&wait); int ret = vlc_interrupt_prepare(ctx, vlc_mwait_i11e_wake, &wait); if (ret) { vlc_cond_destroy(&wait); vlc_testcancel(); return ret; } vlc_mutex_lock(&ctx->lock); vlc_cleanup_push(vlc_mwait_i11e_cleanup, ctx); while (!ctx->interrupted && vlc_cond_timedwait(&wait, &ctx->lock, deadline) == 0); vlc_cleanup_pop(); vlc_mutex_unlock(&ctx->lock); ret = vlc_interrupt_finish(ctx); vlc_cond_destroy(&wait); return ret;}
开发者ID:lustigepepe,项目名称:pVLC,代码行数:28,
示例4: Close//---------------------------------------------------------------------------// Close: destroy interface//---------------------------------------------------------------------------static void Close( vlc_object_t *p_this ){ intf_thread_t *p_intf = (intf_thread_t *)p_this; msg_Dbg( p_intf, "closing skins2 module" ); vlc_mutex_lock( &skin_load.mutex ); skin_load.intf = NULL; vlc_mutex_unlock( &skin_load.mutex); vlc_join( p_intf->p_sys->thread, NULL ); vlc_mutex_destroy( &p_intf->p_sys->init_lock ); vlc_cond_destroy( &p_intf->p_sys->init_wait ); if( p_intf->p_sys->p_playlist ) pl_Release( p_this ); // Unsubscribe from messages bank#if 0 msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub );#endif vlc_cond_destroy( &p_intf->p_sys->vout_wait ); vlc_mutex_destroy( &p_intf->p_sys->vout_lock ); // Destroy structure free( p_intf->p_sys );}
开发者ID:FLYKingdom,项目名称:vlc,代码行数:32,
示例5: background_worker_Deletevoid background_worker_Delete( struct background_worker* worker ){ BackgroundWorkerCancel( worker, NULL ); vlc_array_clear( &worker->tail.data ); vlc_mutex_destroy( &worker->lock ); vlc_cond_destroy( &worker->head.wait ); vlc_cond_destroy( &worker->head.worker_wait ); vlc_cond_destroy( &worker->tail.wait ); free( worker );}
开发者ID:tguillem,项目名称:vlc,代码行数:10,
示例6: Closestatic void Close( vlc_object_t *p_this ){ stream_t *s = (stream_t*)p_this; stream_sys_t *p_sys = s->p_sys; vlc_join( p_sys->download.thread, NULL ); vlc_mutex_destroy( &p_sys->lock ); vlc_cond_destroy( &p_sys->download.wait ); vlc_mutex_destroy( &p_sys->playback.lock ); vlc_cond_destroy( &p_sys->playback.wait ); SysCleanup( p_sys ); free( p_sys );}
开发者ID:xswm1123,项目名称:vlc,代码行数:14,
示例7: EventThreadDestroyvoid EventThreadDestroy( event_thread_t *p_event ){ free( p_event->psz_title ); vlc_cond_destroy( &p_event->wait ); vlc_mutex_destroy( &p_event->lock ); free( p_event );}
开发者ID:LDiracDelta,项目名称:vlc_censor_plugin,代码行数:7,
示例8: transcode_video_closevoid transcode_video_close( sout_stream_t *p_stream, sout_stream_id_t *id ){ if( p_stream->p_sys->i_threads >= 1 ) { vlc_mutex_lock( &p_stream->p_sys->lock_out ); vlc_object_kill( p_stream->p_sys ); vlc_cond_signal( &p_stream->p_sys->cond ); vlc_mutex_unlock( &p_stream->p_sys->lock_out ); vlc_thread_join( p_stream->p_sys ); vlc_mutex_destroy( &p_stream->p_sys->lock_out ); vlc_cond_destroy( &p_stream->p_sys->cond ); } video_timer_close( id->p_encoder ); /* Close decoder */ if( id->p_decoder->p_module ) module_unneed( id->p_decoder, id->p_decoder->p_module ); if( id->p_decoder->p_description ) vlc_meta_Delete( id->p_decoder->p_description ); free( id->p_decoder->p_owner ); /* Close encoder */ if( id->p_encoder->p_module ) module_unneed( id->p_encoder, id->p_encoder->p_module ); /* Close filters */ if( id->p_f_chain ) filter_chain_Delete( id->p_f_chain ); if( id->p_uf_chain ) filter_chain_Delete( id->p_uf_chain );}
开发者ID:iamnpc,项目名称:myfaplayer,代码行数:34,
示例9: Open/***************************************************************************** * Open: initialize and create stuff *****************************************************************************/static int Open(vlc_object_t *p_this){ intf_thread_t *p_intf = (intf_thread_t*) p_this; intf_sys_t *p_sys = calloc(1, sizeof(intf_sys_t)); if (!p_sys) return VLC_ENOMEM; p_intf->p_sys = p_sys; vlc_mutex_init(&p_sys->lock); vlc_cond_init(&p_sys->wait); if (vlc_clone(&p_sys->thread, Run, p_intf, VLC_THREAD_PRIORITY_LOW)) { vlc_cond_destroy(&p_sys->wait); vlc_mutex_destroy(&p_sys->lock); free(p_sys); return VLC_ENOMEM; } var_AddCallback(pl_Get(p_intf), "activity", ItemChange, p_intf); return VLC_SUCCESS;}
开发者ID:Kubink,项目名称:vlc,代码行数:28,
示例10: Stop/** * Closes the audio device. */static HRESULT Stop( aout_stream_sys_t *p_sys ){ vlc_mutex_lock( &p_sys->lock ); p_sys->b_playing = true; vlc_cond_signal( &p_sys->cond ); vlc_mutex_unlock( &p_sys->lock ); vlc_cancel( p_sys->eraser_thread ); vlc_join( p_sys->eraser_thread, NULL ); vlc_cond_destroy( &p_sys->cond ); vlc_mutex_destroy( &p_sys->lock ); if( p_sys->p_notify != NULL ) { IDirectSoundNotify_Release(p_sys->p_notify ); p_sys->p_notify = NULL; } if( p_sys->p_dsbuffer != NULL ) { IDirectSoundBuffer_Stop( p_sys->p_dsbuffer ); IDirectSoundBuffer_Release( p_sys->p_dsbuffer ); p_sys->p_dsbuffer = NULL; } if( p_sys->p_dsobject != NULL ) { IDirectSound_Release( p_sys->p_dsobject ); p_sys->p_dsobject = NULL; } return DS_OK;}
开发者ID:videolan,项目名称:vlc,代码行数:32,
示例11: Close/***************************************************************************** * Close: destroy interface stuff *****************************************************************************/static void Close(vlc_object_t *p_this){ intf_thread_t *p_intf = (intf_thread_t*) p_this; intf_sys_t *p_sys = p_intf->p_sys; vlc_playlist_t *playlist = p_sys->playlist; vlc_cancel(p_sys->thread); vlc_join(p_sys->thread, NULL); int i; for (i = 0; i < p_sys->i_songs; i++) DeleteSong(&p_sys->p_queue[i]); vlc_UrlClean(&p_sys->p_submit_url); vlc_UrlClean(&p_sys->p_nowp_url); vlc_cond_destroy(&p_sys->wait); vlc_mutex_destroy(&p_sys->lock); vlc_playlist_Lock(playlist); vlc_player_RemoveListener( vlc_playlist_GetPlayer(playlist), p_sys->player_listener); vlc_playlist_RemoveListener(playlist, p_sys->playlist_listener); vlc_playlist_Unlock(playlist); free(p_sys);}
开发者ID:videolan,项目名称:vlc,代码行数:29,
示例12: vlc_timer_createint vlc_timer_create (vlc_timer_t *id, void (*func) (void *), void *data){ struct vlc_timer *timer = malloc (sizeof (*timer)); if (unlikely(timer == NULL)) return ENOMEM; vlc_mutex_init (&timer->lock); vlc_cond_init (&timer->reschedule); assert (func); timer->func = func; timer->data = data; timer->value = 0; timer->interval = 0; atomic_init(&timer->overruns, 0); if (vlc_clone (&timer->thread, vlc_timer_thread, timer, VLC_THREAD_PRIORITY_INPUT)) { vlc_cond_destroy (&timer->reschedule); vlc_mutex_destroy (&timer->lock); free (timer); return ENOMEM; } *id = timer; return 0;}
开发者ID:0xheart0,项目名称:vlc,代码行数:27,
示例13: vlc_object_destroy/** **************************************************************************** * Destroy a vlc object (Internal) * * This function destroys an object that has been previously allocated with * vlc_object_create. The object's refcount must be zero and it must not be * attached to other objects in any way. * * This function must be called with cancellation disabled (currently). *****************************************************************************/static void vlc_object_destroy( vlc_object_t *p_this ){ vlc_object_internals_t *p_priv = vlc_internals( p_this ); /* Send a kill to the object's thread if applicable */ vlc_object_kill( p_this ); /* Call the custom "subclass" destructor */ if( p_priv->pf_destructor ) p_priv->pf_destructor( p_this ); /* Any thread must have been cleaned up at this point. */ assert( !p_priv->b_thread ); /* Destroy the associated variables. */ var_DestroyAll( p_this ); vlc_cond_destroy( &p_priv->var_wait ); vlc_mutex_destroy( &p_priv->var_lock ); free( p_this->psz_header ); free( p_priv->psz_name ); vlc_spin_destroy( &p_priv->ref_spin ); if( p_priv->pipes[1] != -1 && p_priv->pipes[1] != p_priv->pipes[0] ) close( p_priv->pipes[1] ); if( p_priv->pipes[0] != -1 ) close( p_priv->pipes[0] ); if( VLC_OBJECT(p_this->p_libvlc) == p_this ) vlc_mutex_destroy (&(libvlc_priv ((libvlc_int_t *)p_this)->structure_lock)); free( p_priv );}
开发者ID:cmassiot,项目名称:vlc-broadcast,代码行数:44,
示例14: vlc_cond_init/** * @brief Directory Monitoring thread loop */void *RunMonitoringThread( void *p_this ){ monitoring_thread_t *p_mon = (monitoring_thread_t*) p_this; vlc_cond_init( &p_mon->wait ); vlc_mutex_init( &p_mon->lock ); var_Create( p_mon, "ml-recursive-scan", VLC_VAR_BOOL | VLC_VAR_DOINHERIT ); while( vlc_object_alive( p_mon ) ) { vlc_mutex_lock( &p_mon->lock ); /* Update */ UpdateLibrary( p_mon ); /* We wait MONITORING_DELAY seconds or wait that the media library signals us to do something */ vlc_cond_timedwait( &p_mon->wait, &p_mon->lock, mdate() + 1000000*MONITORING_DELAY ); vlc_mutex_unlock( &p_mon->lock ); } vlc_cond_destroy( &p_mon->wait ); vlc_mutex_destroy( &p_mon->lock ); return NULL;}
开发者ID:CSRedRat,项目名称:vlc,代码行数:29,
示例15: Close/***************************************************************************** * Close: destroy interface stuff *****************************************************************************/static void Close( vlc_object_t *p_this ){ playlist_t *p_playlist = pl_Get( p_this ); input_thread_t *p_input; intf_thread_t *p_intf = ( intf_thread_t* ) p_this; intf_sys_t *p_sys = p_intf->p_sys; var_DelCallback( p_playlist, "item-current", ItemChange, p_intf ); p_input = playlist_CurrentInput( p_playlist ); if ( p_input ) { if( p_sys->b_state_cb ) var_DelCallback( p_input, "intf-event", PlayingChange, p_intf ); vlc_object_release( p_input ); } int i; for( i = 0; i < p_sys->i_songs; i++ ) DeleteSong( &p_sys->p_queue[i] ); free( p_sys->psz_submit_host ); free( p_sys->psz_submit_file );#if 0 //NOT USED free( p_sys->psz_nowp_host ); free( p_sys->psz_nowp_file );#endif vlc_cond_destroy( &p_sys->wait ); vlc_mutex_destroy( &p_sys->lock ); free( p_sys );}
开发者ID:Italianmoose,项目名称:Stereoscopic-VLC,代码行数:33,
示例16: Close/***************************************************************************** * Close: *****************************************************************************/static void Close( vlc_object_t *p_this ){ services_discovery_t *p_sd = ( services_discovery_t* )p_this; services_discovery_sys_t *p_sys = p_sd->p_sys; int i; vlc_cancel (p_sys->thread); vlc_join (p_sys->thread, NULL); var_DelCallback( p_sd, "podcast-urls", UrlsChange, p_sys ); var_DelCallback( p_sd, "podcast-request", Request, p_sys ); vlc_cond_destroy( &p_sys->wait ); vlc_mutex_destroy( &p_sys->lock ); for( i = 0; i < p_sys->i_input; i++ ) { input_thread_t *p_input = p_sd->p_sys->pp_input[i]; if( !p_input ) continue; input_Stop( p_input, true ); vlc_thread_join( p_input ); vlc_object_release( p_input ); p_sd->p_sys->pp_input[i] = NULL; } free( p_sd->p_sys->pp_input ); for( i = 0; i < p_sys->i_urls; i++ ) free( p_sys->ppsz_urls[i] ); free( p_sys->ppsz_urls ); for( i = 0; i < p_sys->i_items; i++ ) vlc_gc_decref( p_sys->pp_items[i] ); free( p_sys->pp_items ); free( p_sys->psz_request ); free( p_sys );}
开发者ID:iamnpc,项目名称:myfaplayer,代码行数:37,
示例17: mallocstruct vlc_h2_output *vlc_h2_output_create(struct vlc_tls *tls, bool client){ struct vlc_h2_output *out = malloc(sizeof (*out)); if (unlikely(out == NULL)) return NULL; out->tls = tls; out->prio.first = NULL; out->prio.last = &out->prio.first; out->queue.first = NULL; out->queue.last = &out->queue.first; out->size = 0; out->failed = false; out->closing = false; vlc_mutex_init(&out->lock); vlc_cond_init(&out->wait); void *(*cb)(void *) = client ? vlc_h2_client_output_thread : vlc_h2_output_thread; if (vlc_clone(&out->thread, cb, out, VLC_THREAD_PRIORITY_INPUT)) { vlc_cond_destroy(&out->wait); vlc_mutex_destroy(&out->lock); free(out); out = NULL; } return out;}
开发者ID:0xheart0,项目名称:vlc,代码行数:30,
示例18: Close/***************************************************************************** * Close: destroy interface stuff *****************************************************************************/static void Close(vlc_object_t *p_this){ intf_thread_t *p_intf = (intf_thread_t*) p_this; intf_sys_t *p_sys = p_intf->p_sys; var_DelCallback(pl_Get(p_intf), "activity", ItemChange, p_intf); vlc_cancel(p_sys->thread); vlc_join(p_sys->thread, NULL); input_thread_t *p_input = pl_CurrentInput(p_intf); if (p_input) { if (p_sys->b_state_cb) var_DelCallback(p_input, "intf-event", PlayingChange, p_intf); vlc_object_release(p_input); } int i; for (i = 0; i < p_sys->i_songs; i++) DeleteSong(&p_sys->p_queue[i]); vlc_UrlClean(&p_sys->p_submit_url);#if 0 //NOT USED free(p_sys->psz_nowp_host); free(p_sys->psz_nowp_file);#endif vlc_cond_destroy(&p_sys->wait); vlc_mutex_destroy(&p_sys->lock); free(p_sys);}
开发者ID:Kubink,项目名称:vlc,代码行数:33,
示例19: _DLL_InitTermunsigned long _System _DLL_InitTerm(unsigned long hmod, unsigned long flag){ VLC_UNUSED (hmod); switch (flag) { case 0 : /* Initialization */ if(_CRT_init() == -1) return 0; vlc_mutex_init (&super_mutex); vlc_cond_init (&super_variable); vlc_threadvar_create (&thread_key, NULL); vlc_rwlock_init (&config_lock); vlc_rwlock_init (&msg_lock); vlc_CPU_init (); return 1; case 1 : /* Termination */ vlc_rwlock_destroy (&msg_lock); vlc_rwlock_destroy (&config_lock); vlc_threadvar_delete (&thread_key); vlc_cond_destroy (&super_variable); vlc_mutex_destroy (&super_mutex); _CRT_term(); return 1; } return 0; /* Failed */}
开发者ID:Tilka,项目名称:vlc,代码行数:33,
示例20: Close/***************************************************************************** * Close: close the target *****************************************************************************/static void Close( vlc_object_t * p_this ){ sout_access_out_t *p_access = (sout_access_out_t *) p_this; sout_access_out_sys_t *p_sys = p_access->p_sys; int i; vlc_cancel( p_sys->p_thread->thread ); vlc_join( p_sys->p_thread->thread, NULL ); vlc_cond_destroy( &p_sys->p_thread->wait ); vlc_mutex_destroy( &p_sys->p_thread->lock ); block_FifoRelease( p_sys->p_thread->p_fifo_input ); block_FifoRelease( p_sys->p_thread->p_empty_blocks ); for( i = 0; i < 64; i++ ) /* RTMP_HEADER_STREAM_INDEX_MASK */ { if( p_sys->p_thread->rtmp_headers_recv[i].body != NULL ) { free( p_sys->p_thread->rtmp_headers_recv[i].body->body ); free( p_sys->p_thread->rtmp_headers_recv[i].body ); } } net_Close( p_sys->p_thread->fd ); vlc_object_release( p_sys->p_thread ); vlc_UrlClean( &p_sys->p_thread->url ); free( p_sys->p_thread->psz_application ); free( p_sys->p_thread->psz_media ); free( p_sys );}
开发者ID:banketree,项目名称:faplayer,代码行数:36,
示例21: Close/***************************************************************************** * Close: close the plugin *****************************************************************************/static void Close( vlc_object_t *p_this ){ filter_t *p_filter = (filter_t *)p_this; filter_sys_t *p_sys = p_filter->p_sys; /* Stop Goom Thread */ vlc_mutex_lock( &p_sys->p_thread->lock ); p_sys->p_thread->b_exit = true; vlc_cond_signal( &p_sys->p_thread->wait ); vlc_mutex_unlock( &p_sys->p_thread->lock ); vlc_join( p_sys->p_thread->thread, NULL ); /* Free data */ aout_filter_RequestVout( p_filter, p_sys->p_thread->p_vout, NULL ); vlc_mutex_destroy( &p_sys->p_thread->lock ); vlc_cond_destroy( &p_sys->p_thread->wait ); while( p_sys->p_thread->i_blocks-- ) { block_Release( p_sys->p_thread->pp_blocks[p_sys->p_thread->i_blocks] ); } free( p_sys->p_thread ); free( p_sys );}
开发者ID:LTNGlobal-opensource,项目名称:vlc-sdi,代码行数:30,
示例22: E_/***************************************************************************** * CloseEncoder: ffmpeg encoder destruction *****************************************************************************/void E_(CloseEncoder)( vlc_object_t *p_this ){ encoder_t *p_enc = (encoder_t *)p_this; encoder_sys_t *p_sys = p_enc->p_sys;#if LIBAVCODEC_BUILD >= 4702 if ( p_sys->b_inited && p_enc->i_threads >= 1 ) { int i; struct thread_context_t ** pp_contexts = (struct thread_context_t **)p_sys->p_context->thread_opaque; for ( i = 0; i < p_enc->i_threads; i++ ) { pp_contexts[i]->b_die = 1; vlc_cond_signal( &pp_contexts[i]->cond ); vlc_thread_join( pp_contexts[i] ); vlc_mutex_destroy( &pp_contexts[i]->lock ); vlc_cond_destroy( &pp_contexts[i]->cond ); vlc_object_destroy( pp_contexts[i] ); } free( pp_contexts ); }#endif avcodec_close( p_sys->p_context ); av_free( p_sys->p_context ); if( p_sys->p_buffer ) free( p_sys->p_buffer ); if( p_sys->p_buffer_out ) free( p_sys->p_buffer_out ); free( p_sys );}
开发者ID:forthyen,项目名称:SDesk,代码行数:36,
示例23: Close/***************************************************************************** * Close: destroy interface stuff *****************************************************************************/static void Close(vlc_object_t *p_this){ intf_thread_t *p_intf = (intf_thread_t*) p_this; intf_sys_t *p_sys = p_intf->p_sys; vlc_cancel(p_sys->thread); vlc_join(p_sys->thread, NULL); var_DelCallback(pl_Get(p_intf), "input-current", ItemChange, p_intf); if (p_sys->p_input != NULL) { var_DelCallback(p_sys->p_input, "intf-event", PlayingChange, p_intf); vlc_object_release(p_sys->p_input); } int i; for (i = 0; i < p_sys->i_songs; i++) DeleteSong(&p_sys->p_queue[i]); vlc_UrlClean(&p_sys->p_submit_url); vlc_UrlClean(&p_sys->p_nowp_url); vlc_cond_destroy(&p_sys->wait); vlc_mutex_destroy(&p_sys->lock); free(p_sys);}
开发者ID:0xheart0,项目名称:vlc,代码行数:28,
示例24: libvlc_media_release/************************************************************************** * Delete a media descriptor object **************************************************************************/void libvlc_media_release( libvlc_media_t *p_md ){ if (!p_md) return; p_md->i_refcount--; if( p_md->i_refcount > 0 ) return; if( p_md->p_subitems ) libvlc_media_list_release( p_md->p_subitems ); uninstall_input_item_observer( p_md ); vlc_gc_decref( p_md->p_input_item ); vlc_cond_destroy( &p_md->parsed_cond ); vlc_mutex_destroy( &p_md->parsed_lock ); /* Construct the event */ libvlc_event_t event; event.type = libvlc_MediaFreed; event.u.media_freed.md = p_md; /* Send the event */ libvlc_event_send( p_md->p_event_manager, &event ); libvlc_event_manager_release( p_md->p_event_manager ); free( p_md );}
开发者ID:LDiracDelta,项目名称:vlc_censor_plugin,代码行数:34,
示例25: playlist_preparser_Deletevoid playlist_preparser_Delete( playlist_preparser_t *p_preparser ){ vlc_mutex_lock( &p_preparser->lock ); /* Remove pending item to speed up preparser thread exit */ while( p_preparser->i_waiting > 0 ) { preparser_entry_t *p_entry = p_preparser->pp_waiting[0]; vlc_gc_decref( p_entry->p_item ); free( p_entry ); REMOVE_ELEM( p_preparser->pp_waiting, p_preparser->i_waiting, 0 ); } vlc_sem_post( &p_preparser->item_done ); while( p_preparser->b_live ) vlc_cond_wait( &p_preparser->wait, &p_preparser->lock ); vlc_mutex_unlock( &p_preparser->lock ); /* Destroy the item preparser */ vlc_sem_destroy( &p_preparser->item_done ); vlc_cond_destroy( &p_preparser->wait ); vlc_mutex_destroy( &p_preparser->lock ); if( p_preparser->p_fetcher != NULL ) playlist_fetcher_Delete( p_preparser->p_fetcher ); free( p_preparser );}
开发者ID:mingyueqingquan,项目名称:vlc,代码行数:27,
示例26: ReleaseDLSysstatic void ReleaseDLSys(vlc_object_t *obj){ vlc_object_t *libvlc = VLC_OBJECT(obj->p_libvlc); vlc_mutex_lock(&sys_lock); struct decklink_sys_t *sys = (struct decklink_sys_t*)var_GetAddress(libvlc, "decklink-sys"); if (--sys->users == 0) { msg_Dbg(obj, "Destroying decklink data"); vlc_mutex_destroy(&sys->lock); vlc_cond_destroy(&sys->cond); if (sys->p_output) { sys->p_output->StopScheduledPlayback(0, NULL, 0); sys->p_output->DisableVideoOutput(); sys->p_output->DisableAudioOutput(); sys->p_output->Release(); } free(sys); var_Destroy(libvlc, "decklink-sys"); } vlc_mutex_unlock(&sys_lock);}
开发者ID:Adatan,项目名称:vlc,代码行数:26,
示例27: _CRT_INIT//BOOL WINAPI DllMain (HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved)BOOL WINAPI _CRT_INIT (HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved) // sunqueen modify{ (void) hinstDll; (void) lpvReserved; switch (fdwReason) { case DLL_PROCESS_ATTACH: InitializeCriticalSection (&clock_lock); vlc_mutex_init (&super_mutex); vlc_cond_init (&super_variable); vlc_threadvar_create (&thread_key, NULL); vlc_rwlock_init (&config_lock); vlc_CPU_init (); break; case DLL_PROCESS_DETACH: vlc_rwlock_destroy (&config_lock); vlc_threadvar_delete (&thread_key); vlc_cond_destroy (&super_variable); vlc_mutex_destroy (&super_mutex); DeleteCriticalSection (&clock_lock); break; } return TRUE;}
开发者ID:12307,项目名称:VLC-for-VS2010,代码行数:27,
示例28: Close//---------------------------------------------------------------------------// Close: destroy interface//---------------------------------------------------------------------------static void Close( vlc_object_t *p_this ){ intf_thread_t *p_intf = (intf_thread_t *)p_this; msg_Dbg( p_intf, "closing skins2 module" ); /* Terminate input to ensure that our window provider is released. */ playlist_Deactivate( p_intf->p_sys->p_playlist ); vlc_mutex_lock( &skin_load.mutex ); skin_load.intf = NULL; vlc_mutex_unlock( &skin_load.mutex); AsyncQueue *pQueue = p_intf->p_sys->p_queue; if( pQueue ) { CmdGeneric *pCmd = new CmdExitLoop( p_intf ); if( pCmd ) pQueue->push( CmdGenericPtr( pCmd ) ); } else { msg_Err( p_intf, "thread found already stopped (weird!)" ); } vlc_join( p_intf->p_sys->thread, NULL ); vlc_mutex_destroy( &p_intf->p_sys->init_lock ); vlc_cond_destroy( &p_intf->p_sys->init_wait ); // Destroy structure free( p_intf->p_sys );}
开发者ID:371816210,项目名称:vlc_vlc,代码行数:36,
注:本文中的vlc_cond_destroy函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ vlc_cond_init函数代码示例 C++ vlc_clone函数代码示例 |