Changeset e21ba63b8a25191bb68d2a6d075763a3d65371ff
- Timestamp:
- 06/17/08 21:33:26
(2 months ago)
- Author:
- Rémi Denis-Courmont <rdenis@simphalempin.com>
- git-committer:
- Rémi Denis-Courmont <rdenis@simphalempin.com> 1213731206 +0300
- git-parent:
[838cee473b8ab2c2ed36f7c73c15ab2966329116]
- git-author:
- Rémi Denis-Courmont <rdenis@simphalempin.com> 1213731206 +0300
- Message:
Move object lock and condition into the internals
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| rb501c2e |
re21ba63 |
|
| 514 | 514 | int i_flags; \ |
|---|
| 515 | 515 | \ |
|---|
| 516 | | /* Object access lock */ \ |
|---|
| 517 | | vlc_mutex_t object_lock; \ |
|---|
| 518 | | vlc_cond_t object_wait; \ |
|---|
| 519 | | \ |
|---|
| 520 | 516 | /* Object properties */ \ |
|---|
| 521 | 517 | volatile bool b_error; /**< set by the object */ \ |
|---|
| re9deaa7 |
re21ba63 |
|
| 35 | 35 | * Current plugin ABI version |
|---|
| 36 | 36 | */ |
|---|
| 37 | | # define MODULE_SYMBOL 0_9_0k |
|---|
| 38 | | # define MODULE_SUFFIX "__0_9_0k" |
|---|
| | 37 | # define MODULE_SYMBOL 0_9_0l |
|---|
| | 38 | # define MODULE_SUFFIX "__0_9_0l" |
|---|
| 39 | 39 | |
|---|
| 40 | 40 | /***************************************************************************** |
|---|
| ra3e989d |
re21ba63 |
|
| 143 | 143 | const char *psz_type); |
|---|
| 144 | 144 | |
|---|
| 145 | | /* Signal an object without checking for locking consistency. This is wrong. */ |
|---|
| 146 | | #ifdef __GNUC__ |
|---|
| 147 | | __attribute__((deprecated)) |
|---|
| 148 | | #endif |
|---|
| 149 | | static inline void |
|---|
| 150 | | vlc_object_signal_maybe (vlc_object_t *p_this) |
|---|
| 151 | | { |
|---|
| 152 | | vlc_cond_signal (&p_this->object_wait); |
|---|
| 153 | | } |
|---|
| 154 | | |
|---|
| 155 | 145 | /** |
|---|
| 156 | 146 | * libvlc_global_data_t (global variable) |
|---|
| … | … | |
| 190 | 180 | |
|---|
| 191 | 181 | /* Objects thread synchronization */ |
|---|
| | 182 | vlc_mutex_t lock; |
|---|
| | 183 | vlc_cond_t wait; |
|---|
| 192 | 184 | int pipes[2]; |
|---|
| 193 | 185 | vlc_spinlock_t spin; |
|---|
| … | … | |
| 214 | 206 | |
|---|
| 215 | 207 | #define vlc_internals( obj ) (((vlc_object_internals_t*)(VLC_OBJECT(obj)))-1) |
|---|
| | 208 | |
|---|
| | 209 | /* Signal an object without checking for locking consistency. This is wrong. */ |
|---|
| | 210 | #ifdef __GNUC__ |
|---|
| | 211 | __attribute__((deprecated)) |
|---|
| | 212 | #endif |
|---|
| | 213 | static inline void |
|---|
| | 214 | vlc_object_signal_maybe (vlc_object_t *p_this) |
|---|
| | 215 | { |
|---|
| | 216 | vlc_cond_signal (&(vlc_internals(p_this)->wait)); |
|---|
| | 217 | } |
|---|
| 216 | 218 | |
|---|
| 217 | 219 | /** |
|---|
| r7e413aa |
re21ba63 |
|
| 177 | 177 | |
|---|
| 178 | 178 | /* Initialize mutexes and condvars */ |
|---|
| 179 | | vlc_mutex_init( &p_new->object_lock ); |
|---|
| 180 | | vlc_cond_init( p_new, &p_new->object_wait ); |
|---|
| | 179 | vlc_mutex_init( &p_priv->lock ); |
|---|
| | 180 | vlc_cond_init( p_new, &p_priv->wait ); |
|---|
| 181 | 181 | vlc_mutex_init( &p_priv->var_lock ); |
|---|
| 182 | 182 | vlc_spin_init( &p_priv->spin ); |
|---|
| … | … | |
| 388 | 388 | |
|---|
| 389 | 389 | vlc_spin_destroy( &p_priv->ref_spin ); |
|---|
| 390 | | vlc_mutex_destroy( &p_this->object_lock ); |
|---|
| 391 | | vlc_cond_destroy( &p_this->object_wait ); |
|---|
| | 390 | vlc_mutex_destroy( &p_priv->lock ); |
|---|
| | 391 | vlc_cond_destroy( &p_priv->wait ); |
|---|
| 392 | 392 | vlc_spin_destroy( &p_priv->spin ); |
|---|
| 393 | 393 | if( p_priv->pipes[1] != -1 ) |
|---|
| … | … | |
| 404 | 404 | void __vlc_object_lock( vlc_object_t *obj ) |
|---|
| 405 | 405 | { |
|---|
| 406 | | vlc_mutex_lock( &obj->object_lock ); |
|---|
| | 406 | vlc_mutex_lock( &(vlc_internals(obj)->lock) ); |
|---|
| 407 | 407 | } |
|---|
| 408 | 408 | |
|---|
| 409 | 409 | void __vlc_object_unlock( vlc_object_t *obj ) |
|---|
| 410 | 410 | { |
|---|
| 411 | | vlc_assert_locked( &obj->object_lock ); |
|---|
| 412 | | vlc_mutex_unlock( &obj->object_lock ); |
|---|
| | 411 | vlc_assert_locked( &(vlc_internals(obj)->lock) ); |
|---|
| | 412 | vlc_mutex_unlock( &(vlc_internals(obj)->lock) ); |
|---|
| 413 | 413 | } |
|---|
| 414 | 414 | |
|---|
| … | … | |
| 541 | 541 | void __vlc_object_wait( vlc_object_t *obj ) |
|---|
| 542 | 542 | { |
|---|
| 543 | | vlc_assert_locked( &obj->object_lock ); |
|---|
| 544 | | vlc_cond_wait( &obj->object_wait, &obj->object_lock ); |
|---|
| | 543 | vlc_object_internals_t *priv = vlc_internals( obj ); |
|---|
| | 544 | vlc_assert_locked( &priv->lock); |
|---|
| | 545 | vlc_cond_wait( &priv->wait, &priv->lock ); |
|---|
| 545 | 546 | } |
|---|
| 546 | 547 | |
|---|
| … | … | |
| 555 | 556 | int __vlc_object_timedwait( vlc_object_t *obj, mtime_t deadline ) |
|---|
| 556 | 557 | { |
|---|
| 557 | | vlc_assert_locked( &obj->object_lock ); |
|---|
| 558 | | return vlc_cond_timedwait( &obj->object_wait, &obj->object_lock, deadline ); |
|---|
| | 558 | vlc_object_internals_t *priv = vlc_internals( obj ); |
|---|
| | 559 | vlc_assert_locked( &priv->lock); |
|---|
| | 560 | return vlc_cond_timedwait( &priv->wait, &priv->lock, deadline ); |
|---|
| 559 | 561 | } |
|---|
| 560 | 562 | |
|---|
| … | … | |
| 584 | 586 | bool __vlc_object_alive( vlc_object_t *obj ) |
|---|
| 585 | 587 | { |
|---|
| 586 | | vlc_assert_locked( &obj->object_lock ); |
|---|
| | 588 | vlc_assert_locked( &(vlc_internals(obj)->lock) ); |
|---|
| 587 | 589 | return !obj->b_die; |
|---|
| 588 | 590 | } |
|---|
| … | … | |
| 598 | 600 | void __vlc_object_signal_unlocked( vlc_object_t *obj ) |
|---|
| 599 | 601 | { |
|---|
| 600 | | vlc_assert_locked (&obj->object_lock); |
|---|
| 601 | | vlc_cond_signal( &obj->object_wait ); |
|---|
| | 602 | vlc_assert_locked (&(vlc_internals(obj)->lock)); |
|---|
| | 603 | vlc_cond_signal( &(vlc_internals(obj)->wait) ); |
|---|
| 602 | 604 | } |
|---|
| 603 | 605 | |
|---|
| rd666030 |
re21ba63 |
|
| 380 | 380 | p_module->p_config[i].b_dirty = false; |
|---|
| 381 | 381 | |
|---|
| 382 | | p_module->p_config[i].p_lock = &p_module->object_lock; |
|---|
| | 382 | p_module->p_config[i].p_lock = &(vlc_internals(p_module)->lock); |
|---|
| 383 | 383 | |
|---|
| 384 | 384 | if( p_module->p_config[i].i_list ) |
|---|
| r0b06fc5 |
re21ba63 |
|
| 221 | 221 | memset (tab + confsize, 0, sizeof (tab[confsize])); |
|---|
| 222 | 222 | tab[confsize].i_type = type; |
|---|
| 223 | | tab[confsize].p_lock = &module->object_lock; |
|---|
| | 223 | tab[confsize].p_lock = &(vlc_internals(module)->lock); |
|---|
| 224 | 224 | |
|---|
| 225 | 225 | if (type & CONFIG_ITEM) |
|---|
| r7e413aa |
re21ba63 |
|
| 226 | 226 | void playlist_release_current_input( playlist_t * p_playlist ) |
|---|
| 227 | 227 | { |
|---|
| 228 | | vlc_assert_locked( &p_playlist->object_lock ); |
|---|
| | 228 | vlc_assert_locked( &(vlc_internals(p_playlist)->lock) ); |
|---|
| 229 | 229 | |
|---|
| 230 | 230 | if( !p_playlist->p_input ) return; |
|---|
| … | … | |
| 249 | 249 | playlist_t * p_playlist, input_thread_t * p_input ) |
|---|
| 250 | 250 | { |
|---|
| 251 | | vlc_assert_locked( &p_playlist->object_lock ); |
|---|
| | 251 | vlc_assert_locked( &(vlc_internals(p_playlist)->lock) ); |
|---|
| 252 | 252 | |
|---|
| 253 | 253 | playlist_release_current_input( p_playlist ); |
|---|