这篇教程C++ vlc_object_hold函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中vlc_object_hold函数的典型用法代码示例。如果您正苦于以下问题:C++ vlc_object_hold函数的具体用法?C++ vlc_object_hold怎么用?C++ vlc_object_hold使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了vlc_object_hold函数的26个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: vlc_assert_lockedstatic aout_instance_t *RequestAout( input_resource_t *p_resource, aout_instance_t *p_aout ){ vlc_assert_locked( &p_resource->lock ); assert( p_resource->p_input ); if( p_aout ) { msg_Dbg( p_resource->p_parent, "releasing aout" ); vlc_object_release( p_aout ); return NULL; } else { p_aout = p_resource->p_aout; if( !p_aout ) { msg_Dbg( p_resource->p_parent, "creating aout" ); p_aout = aout_New( p_resource->p_parent ); vlc_mutex_lock( &p_resource->lock_hold ); p_resource->p_aout = p_aout; vlc_mutex_unlock( &p_resource->lock_hold ); } else { msg_Dbg( p_resource->p_parent, "reusing aout" ); } if( !p_aout ) return NULL; vlc_object_hold( p_aout ); return p_aout; }}
开发者ID:banketree,项目名称:faplayer,代码行数:34,
示例2: HoldVoutsstatic void HoldVouts( input_resource_t *p_resource, vout_thread_t ***ppp_vout, size_t *pi_vout ){ vout_thread_t **pp_vout; *pi_vout = 0; *ppp_vout = NULL; vlc_mutex_lock( &p_resource->lock_hold ); if( p_resource->i_vout <= 0 ) goto exit; pp_vout = malloc( p_resource->i_vout * sizeof(*pp_vout) ); if( !pp_vout ) goto exit; *ppp_vout = pp_vout; *pi_vout = p_resource->i_vout; for( int i = 0; i < p_resource->i_vout; i++ ) { pp_vout[i] = p_resource->pp_vout[i]; vlc_object_hold( pp_vout[i] ); }exit: vlc_mutex_unlock( &p_resource->lock_hold );}
开发者ID:banketree,项目名称:faplayer,代码行数:29,
示例3: vlclua_get_libvlcstatic int vlclua_get_libvlc( lua_State *L ){ libvlc_int_t *p_libvlc = vlclua_get_this( L )->obj.libvlc; vlc_object_hold( p_libvlc ); vlclua_push_vlc_object( L, p_libvlc ); return 1;}
开发者ID:BossKing,项目名称:vlc,代码行数:7,
示例4: WindowOpen// Callbacks for vout requestsstatic int WindowOpen( vlc_object_t *p_this ){ int i_ret; vout_window_t *pWnd = (vout_window_t *)p_this; vlc_mutex_lock( &skin_load.mutex ); intf_thread_t *pIntf = skin_load.intf; if( pIntf ) vlc_object_hold( pIntf ); vlc_mutex_unlock( &skin_load.mutex ); if( pIntf == NULL ) return VLC_EGENERIC; vlc_mutex_lock( &serializer ); pWnd->handle.hwnd = VoutManager::getWindow( pIntf, pWnd ); if( pWnd->handle.hwnd ) { pWnd->control = &VoutManager::controlWindow; pWnd->sys = (vout_window_sys_t*)pIntf; vlc_mutex_unlock( &serializer ); return VLC_SUCCESS; } else { vlc_object_release( pIntf ); vlc_mutex_unlock( &serializer ); return VLC_EGENERIC; }}
开发者ID:FLYKingdom,项目名称:vlc,代码行数:34,
示例5: VarsCommandstatic int VarsCommand (vlc_object_t *obj, char const *cmd, vlc_value_t oldval, vlc_value_t newval, void *data){ void *p; (void) cmd; (void) oldval; (void) data; if (sscanf (newval.psz_string, "%p", &p) == 1) { p = ObjectExists (obj, p); if (p == NULL) { msg_Err (obj, "no such object: %s", newval.psz_string); return VLC_ENOOBJ; } obj = p; } else vlc_object_hold (obj); PrintObject (obj, ""); DumpVariables (obj); vlc_object_release (obj); return VLC_SUCCESS;}
开发者ID:IAPark,项目名称:vlc,代码行数:26,
示例6: onTaskBarChange/// Callback for the systray configuration optionstatic int onTaskBarChange( vlc_object_t *pObj, const char *pVariable, vlc_value_t oldVal, vlc_value_t newVal, void *pParam ){ intf_thread_t *pIntf; vlc_mutex_lock( &skin_load.mutex ); pIntf = skin_load.intf; if( pIntf ) vlc_object_hold( pIntf ); vlc_mutex_unlock( &skin_load.mutex ); if( pIntf == NULL ) { return VLC_EGENERIC; } AsyncQueue *pQueue = AsyncQueue::instance( pIntf ); if( newVal.b_bool ) { CmdAddInTaskBar *pCmd = new CmdAddInTaskBar( pIntf ); pQueue->push( CmdGenericPtr( pCmd ) ); } else { CmdRemoveFromTaskBar *pCmd = new CmdRemoveFromTaskBar( pIntf ); pQueue->push( CmdGenericPtr( pCmd ) ); } vlc_object_release( pIntf ); return VLC_SUCCESS;}
开发者ID:FLYKingdom,项目名称:vlc,代码行数:33,
示例7: delInput/* Define the Input used. Add the callbacks on input p_input is held once here */void InputManager::setInput( input_thread_t *_p_input ){ delInput(); p_input = _p_input; if( p_input && !( p_input->b_dead || !vlc_object_alive (p_input) ) ) { msg_Dbg( p_intf, "IM: Setting an input" ); vlc_object_hold( p_input ); addCallbacks(); UpdateStatus(); UpdateName(); UpdateArt(); UpdateTeletext(); UpdateNavigation(); UpdateVout(); p_item = input_GetItem( p_input ); emit rateChanged( var_GetFloat( p_input, "rate" ) ); } else { p_input = NULL; p_item = NULL; assert( !p_input_vbi ); emit rateChanged( var_InheritFloat( p_intf, "rate" ) ); }}
开发者ID:RodrigoNieves,项目名称:vlc,代码行数:30,
示例8: msg_Dbgstatic aout_instance_t *AllocateAout( input_resource_t *p_resource ){ aout_instance_t *p_aout; if( unlikely(p_resource->b_aout_busy) ) { msg_Dbg( p_resource->p_parent, "creating audio output" ); return aout_New( p_resource->p_parent ); } p_aout = p_resource->p_aout; if( p_aout == NULL ) { msg_Dbg( p_resource->p_parent, "creating audio output" ); p_aout = aout_New( p_resource->p_parent ); if( unlikely(p_aout == NULL) ) return NULL; vlc_mutex_lock( &p_resource->lock_hold ); p_resource->p_aout = p_aout; vlc_mutex_unlock( &p_resource->lock_hold ); } else msg_Dbg( p_resource->p_parent, "recycling audio output" ); p_resource->b_aout_busy = true; vlc_object_hold( p_aout ); return p_aout;}
开发者ID:Italianmoose,项目名称:Stereoscopic-VLC,代码行数:29,
示例9: sizeof/** * Perform a deep copy of an existing ACL. * * @param p_this object to attach the copy to. * @param p_acl ACL object to be copied. * * @return a new ACL object, or NULL on error. */vlc_acl_t *ACL_Duplicate( vlc_object_t *p_this, const vlc_acl_t *p_acl ){ vlc_acl_t *p_dupacl; if( p_acl == NULL ) return NULL; p_dupacl = (vlc_acl_t *)malloc( sizeof( *p_dupacl ) ); if( p_dupacl == NULL ) return NULL; if( p_acl->i_size ) { p_dupacl->p_entries = (vlc_acl_entry_t *) malloc( p_acl->i_size * sizeof( vlc_acl_entry_t ) ); if( p_dupacl->p_entries == NULL ) { free( p_dupacl ); return NULL; } memcpy( p_dupacl->p_entries, p_acl->p_entries, p_acl->i_size * sizeof( vlc_acl_entry_t ) ); } else p_dupacl->p_entries = NULL; vlc_object_hold( p_this ); p_dupacl->p_owner = p_this; p_dupacl->i_size = p_acl->i_size; p_dupacl->b_allow_default = p_acl->b_allow_default; return p_dupacl;}
开发者ID:paa,项目名称:vlc,代码行数:43,
示例10: delInput/* Define the Input used. Add the callbacks on input p_input is held once here */void InputManager::setInput( input_thread_t *_p_input ){ delInput(); p_input = _p_input; if( p_input != NULL ) { msg_Dbg( p_intf, "IM: Setting an input" ); vlc_object_hold( p_input ); addCallbacks(); UpdateStatus(); UpdateName(); UpdateArt(); UpdateTeletext(); UpdateNavigation(); UpdateVout(); p_item = input_GetItem( p_input ); emit rateChanged( var_GetFloat( p_input, "rate" ) ); /* Get Saved Time */ if( p_item->i_type == ITEM_TYPE_FILE ) { char *uri = input_item_GetURI( p_item ); int i_time = RecentsMRL::getInstance( p_intf )->time( qfu(uri) ); if( i_time > 0 && qfu( uri ) != lastURI && !var_GetFloat( p_input, "run-time" ) && !var_GetFloat( p_input, "start-time" ) && !var_GetFloat( p_input, "stop-time" ) ) { emit resumePlayback( (int64_t)i_time * 1000 ); } playlist_Lock( THEPL ); // Add root items only playlist_item_t* p_node = playlist_CurrentPlayingItem( THEPL ); if ( p_node != NULL && p_node->p_parent != NULL && p_node->p_parent->i_id == THEPL->p_playing->i_id ) { // Save the latest URI to avoid asking to restore the // position on the same input file. lastURI = qfu( uri ); RecentsMRL::getInstance( p_intf )->addRecent( lastURI ); } playlist_Unlock( THEPL ); free( uri ); } } else { p_item = NULL; lastURI.clear(); assert( !p_input_vbi ); emit rateChanged( var_InheritFloat( p_intf, "rate" ) ); }}
开发者ID:DaemonSnake,项目名称:vlc,代码行数:58,
示例11: vlc_object_holdstatic vlc_object_t *FindParent (vlc_object_t *p_this, int i_type){ for (vlc_object_t *parent = p_this->p_parent; parent != NULL; parent = parent->p_parent) { if (vlc_internals (parent)->i_object_type == i_type) return vlc_object_hold (parent); } return NULL;}
开发者ID:paa,项目名称:vlc,代码行数:11,
示例12: sout_AnnounceRegisterSDP/** * Registers a new session with the announce handler, using a pregenerated SDP * * /param obj a VLC object * /param psz_sdp the SDP to register * /param psz_dst session address (needed for SAP address auto detection) * /param p_method an announce method descriptor * /return the new session descriptor structure */session_descriptor_t *sout_AnnounceRegisterSDP( vlc_object_t *obj, const char *psz_sdp, const char *psz_dst, announce_method_t *p_method ){ assert (p_method == &sap_method); (void) p_method; session_descriptor_t *p_session = calloc( 1, sizeof (*p_session) ); if( !p_session ) return NULL; p_session->psz_sdp = strdup( psz_sdp ); /* GRUIK. We should not convert back-and-forth from string to numbers */ struct addrinfo *res; if (vlc_getaddrinfo (obj, psz_dst, 0, NULL, &res) == 0) { if (res->ai_addrlen <= sizeof (p_session->addr)) memcpy (&p_session->addr, res->ai_addr, p_session->addrlen = res->ai_addrlen); vlc_freeaddrinfo (res); } vlc_mutex_lock (&sap_mutex); sap_handler_t *p_sap = libvlc_priv (obj->p_libvlc)->p_sap; if (p_sap == NULL) { p_sap = SAP_Create (VLC_OBJECT (obj->p_libvlc)); libvlc_priv (obj->p_libvlc)->p_sap = p_sap; vlc_object_set_destructor ((vlc_object_t *)p_sap, sap_destroy); } else vlc_object_hold ((vlc_object_t *)p_sap); vlc_mutex_unlock (&sap_mutex); if (p_sap == NULL) goto error; msg_Dbg (obj, "adding SAP session"); if (SAP_Add (p_sap, p_session)) { vlc_mutex_lock (&sap_mutex); vlc_object_release ((vlc_object_t *)p_sap); vlc_mutex_unlock (&sap_mutex); goto error; } return p_session;error: free (p_session->psz_sdp); free (p_session); return NULL;}
开发者ID:paa,项目名称:vlc,代码行数:63,
示例13: objectQVLCVariable::QVLCVariable (vlc_object_t *obj, const char *varname, int type, bool inherit) : object (obj), name (qfu(varname)){ vlc_object_hold (object); if (inherit) type |= VLC_VAR_DOINHERIT; var_Create (object, qtu(name), type); var_AddCallback (object, qtu(name), callback, this);}
开发者ID:FLYKingdom,项目名称:vlc,代码行数:11,
示例14: vlclua_get_playliststatic int vlclua_get_playlist( lua_State *L ){ playlist_t *p_playlist = vlclua_get_playlist_internal( L ); if( p_playlist ) { vlclua_push_vlc_object( L, p_playlist, vlclua_gc_release ); vlc_object_hold( p_playlist ); } else lua_pushnil( L ); return 1;}
开发者ID:iamnpc,项目名称:myfaplayer,代码行数:11,
示例15: libvlc_privstatic vlc_object_t *dialog_GetProvider (vlc_object_t *obj){ libvlc_priv_t *priv = libvlc_priv (obj->p_libvlc); vlc_object_t *provider; vlc_mutex_lock (&provider_lock); if ((provider = priv->p_dialog_provider) != NULL) vlc_object_hold (provider); vlc_mutex_unlock (&provider_lock); return provider;}
开发者ID:CSRedRat,项目名称:vlc,代码行数:11,
示例16: vlc_mutex_lockaudio_output_t *input_resource_HoldAout( input_resource_t *p_resource ){ audio_output_t *p_aout; vlc_mutex_lock( &p_resource->lock_hold ); p_aout = p_resource->p_aout; if( p_aout != NULL ) vlc_object_hold( p_aout ); vlc_mutex_unlock( &p_resource->lock_hold ); return p_aout;}
开发者ID:839687571,项目名称:vlc-2.2.1.32-2013,代码行数:12,
示例17: vlc_internalsstatic vlc_object_t *FindParentName (vlc_object_t *p_this, const char *name){ for (vlc_object_t *parent = p_this->p_parent; parent != NULL; parent = parent->p_parent) { const char *objname = vlc_internals (parent)->psz_name; if (objname && !strcmp (objname, name)) return vlc_object_hold (parent); } return NULL;}
开发者ID:paa,项目名称:vlc,代码行数:12,
示例18: vlc_mutex_lockstatic aout_instance_t *HoldAout( input_resource_t *p_resource ){ vlc_mutex_lock( &p_resource->lock_hold ); aout_instance_t *p_aout = p_resource->p_aout; if( p_aout ) vlc_object_hold( p_aout ); vlc_mutex_unlock( &p_resource->lock_hold ); return p_aout;}
开发者ID:banketree,项目名称:faplayer,代码行数:12,
示例19: GenericWindowVoutWindow::VoutWindow( intf_thread_t *pIntf, vout_window_t* pWnd, int width, int height, GenericWindow* pParent ) : GenericWindow( pIntf, 0, 0, false, false, pParent ), m_pWnd( pWnd ), original_width( width ), original_height( height ), m_pParentWindow( pParent ), m_pCtrlVideo( NULL ), m_bFullscreen( false ){ // counter for debug count++; if( m_pWnd ) vlc_object_hold( m_pWnd );}
开发者ID:FLYKingdom,项目名称:vlc,代码行数:12,
示例20: foreach foreach( vout_thread_t *p_vout, add ) { vlc_object_hold( VLC_OBJECT(p_vout) ); vlc_mutex_lock( &lock ); vout.append( p_vout ); var_AddCallback( p_vout, "fullscreen", FullscreenControllerWidget::FullscreenChanged, this ); /* I miss a add and fire */ fullscreenChanged( p_vout, var_GetBool( THEPL, "fullscreen" ), var_GetInteger( p_vout, "mouse-hide-timeout" ) ); vlc_mutex_unlock( &lock ); }
开发者ID:r1k,项目名称:vlc,代码行数:13,
示例21: WindowOpenstatic int WindowOpen( vout_window_t *pWnd, const vout_window_cfg_t *cfg ){ vout_window_sys_t* sys; vlc_mutex_lock( &skin_load.mutex ); intf_thread_t *pIntf = skin_load.intf; if( pIntf ) vlc_object_hold( pIntf ); vlc_mutex_unlock( &skin_load.mutex ); if( pIntf == NULL ) return VLC_EGENERIC; if( !vlc_object_alive( pIntf ) || !var_InheritBool( pIntf, "skinned-video") || cfg->is_standalone ) { vlc_object_release( pIntf ); return VLC_EGENERIC; } sys = (vout_window_sys_t*)calloc( 1, sizeof( *sys ) ); if( !sys ) { vlc_object_release( pIntf ); return VLC_ENOMEM; } pWnd->sys = sys; pWnd->sys->cfg = *cfg; pWnd->sys->pIntf = pIntf; pWnd->control = WindowControl; // force execution in the skins2 thread context CmdExecuteBlock* cmd = new CmdExecuteBlock( pIntf, VLC_OBJECT( pWnd ), WindowOpenLocal ); CmdExecuteBlock::executeWait( CmdGenericPtr( cmd ) );#ifdef X11_SKINS if( !pWnd->handle.xid )#else if( !pWnd->handle.hwnd )#endif { free( sys ); vlc_object_release( pIntf ); return VLC_EGENERIC; } return VLC_SUCCESS;}
开发者ID:vlcchina,项目名称:vlc-player-experimental,代码行数:51,
示例22: PlaylistEventstatic int PlaylistEvent( vlc_object_t *p_this, char const *psz_var, vlc_value_t oldval, vlc_value_t val, void *p_data ){ intf_thread_t *p_intf = (intf_thread_t *)p_data; // sunqueen modify intf_sys_t *p_sys = p_intf->p_sys; input_thread_t *p_input = (input_thread_t *)val.p_address; // sunqueen modify (void) p_this; (void) psz_var; (void) oldval; var_AddCallback( p_input, "intf-event", InputEvent, p_intf ); assert( p_sys->p_input == NULL ); p_sys->p_input = (input_thread_t *)vlc_object_hold( p_input ); // sunqueen modify return VLC_SUCCESS;}
开发者ID:12307,项目名称:VLC-for-VS2010,代码行数:14,
示例23: vlclua_get_input_internalinput_thread_t * vlclua_get_input_internal( lua_State *L ){ extension_t *p_extension = vlclua_extension_get( L ); if( p_extension ) { input_thread_t *p_input = p_extension->p_sys->p_input; if( p_input ) { vlc_object_hold(p_input); return p_input; } } playlist_t *p_playlist = vlclua_get_playlist_internal( L ); input_thread_t *p_input = playlist_CurrentInput( p_playlist ); return p_input;}
开发者ID:DZLiao,项目名称:vlc-2.1.4.32.subproject-2013-update2,代码行数:16,
示例24: assert/* * Retrieve the input thread. Be sure to release the object * once you are done with it. (libvlc Internal) */input_thread_t *libvlc_get_input_thread( libvlc_media_player_t *p_mi ){ input_thread_t *p_input_thread; assert( p_mi ); lock_input(p_mi); p_input_thread = p_mi->input.p_thread; if( p_input_thread ) vlc_object_hold( p_input_thread ); else libvlc_printerr( "No active input" ); unlock_input(p_mi); return p_input_thread;}
开发者ID:Three-DS,项目名称:VLC-2.1.4,代码行数:20,
示例25: ItemChange/***************************************************************************** * ItemChange: Playlist item change callback *****************************************************************************/static int ItemChange(vlc_object_t *p_this, const char *psz_var, vlc_value_t oldval, vlc_value_t newval, void *p_data){ intf_thread_t *p_intf = p_data; intf_sys_t *p_sys = p_intf->p_sys; input_thread_t *p_input = newval.p_address; VLC_UNUSED(p_this); VLC_UNUSED(psz_var); VLC_UNUSED(oldval); p_sys->b_meta_read = false; p_sys->b_submit = false; if (p_sys->p_input != NULL) { var_DelCallback(p_sys->p_input, "intf-event", PlayingChange, p_intf); vlc_object_release(p_sys->p_input); p_sys->p_input = NULL; } if (p_input == NULL) return VLC_SUCCESS; input_item_t *p_item = input_GetItem(p_input); if (p_item == NULL) return VLC_SUCCESS; if (var_CountChoices(p_input, "video-es")) { msg_Dbg(p_this, "Not an audio-only input, not submitting"); return VLC_SUCCESS; } p_sys->time_total_pauses = 0; time(&p_sys->p_current_song.date); /* to be sent to last.fm */ p_sys->p_current_song.i_start = mdate(); /* only used locally */ p_sys->p_input = vlc_object_hold(p_input); var_AddCallback(p_input, "intf-event", PlayingChange, p_intf); if (input_item_IsPreparsed(p_item)) ReadMetaData(p_intf, p_input); /* if the input item was not preparsed, we'll do it in PlayingChange() * callback, when "state" == PLAYING_S */ return VLC_SUCCESS;}
开发者ID:Distrotech,项目名称:vlc,代码行数:50,
示例26: vlc_object_holdstatic vlc_object_t *ObjectExists (vlc_object_t *root, void *obj){ if (root == obj) return vlc_object_hold (root); vlc_object_internals_t *priv = vlc_internals(root); vlc_object_t *ret = NULL; /* NOTE: nested locking here (due to recursive call) */ vlc_mutex_lock (&vlc_internals(root)->tree_lock); for (priv = priv->first; priv != NULL && ret == NULL; priv = priv->next) ret = ObjectExists (vlc_externals (priv), obj); vlc_mutex_unlock (&vlc_internals(root)->tree_lock); return ret;}
开发者ID:IAPark,项目名称:vlc,代码行数:17,
注:本文中的vlc_object_hold函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ vlc_object_release函数代码示例 C++ vlc_object_find函数代码示例 |