Changeset de9d74a605bbf57f524b309cff22763d3e38638f
- Timestamp:
- 29/09/06 21:48:53
(2 years ago)
- Author:
- Clément Stenac <zorglub@videolan.org>
- git-committer:
- Clément Stenac <zorglub@videolan.org> 1159559333 +0000
- git-parent:
[a0cbc6edd7b71c259ab351e37262c3bf4bd783b0]
- git-author:
- Clément Stenac <zorglub@videolan.org> 1159559333 +0000
- Message:
Don't loop preparse threads when idle
Compile fix
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r5b83fdc |
rde9d74a |
|
| 124 | 124 | } |
|---|
| 125 | 125 | |
|---|
| 126 | | i_meta = input_GetMetaEngineFlags( p_item->p_meta ); |
|---|
| | 126 | i_meta = input_CurrentMetaFlags( p_item->p_meta ); |
|---|
| 127 | 127 | p_me->i_mandatory &= ~i_meta; |
|---|
| 128 | 128 | p_me->i_optional &= ~i_meta; |
|---|
| r5b83fdc |
rde9d74a |
|
| 133 | 133 | mb_Delete( p_mb ); |
|---|
| 134 | 134 | |
|---|
| 135 | | i_meta = input_GetMetaEngineFlags( p_item->p_meta ); |
|---|
| | 135 | i_meta = input_CurrentMetaFlags( p_item->p_meta ); |
|---|
| 136 | 136 | p_me->i_mandatory &= ~i_meta; |
|---|
| 137 | 137 | p_me->i_optional &= ~i_meta; |
|---|
| r2d90e86 |
rde9d74a |
|
| 199 | 199 | p_item ); |
|---|
| 200 | 200 | vlc_mutex_unlock( &p_playlist->p_preparse->object_lock ); |
|---|
| | 201 | vlc_cond_signal( &p_playlist->p_preparse->object_wait ); |
|---|
| 201 | 202 | return VLC_SUCCESS; |
|---|
| 202 | 203 | } |
|---|
| … | … | |
| 230 | 231 | INSERT_ELEM( p_playlist->p_secondary_preparse->p_waiting, |
|---|
| 231 | 232 | p_playlist->p_secondary_preparse->i_waiting, |
|---|
| 232 | | i, |
|---|
| 233 | | p ); |
|---|
| | 233 | i, p ); |
|---|
| 234 | 234 | vlc_mutex_unlock( &p_playlist->p_secondary_preparse->object_lock ); |
|---|
| | 235 | vlc_cond_signal( &p_playlist->p_secondary_preparse->object_lock ); |
|---|
| 235 | 236 | return VLC_SUCCESS; |
|---|
| 236 | 237 | } |
|---|
| ra0cbc6e |
rde9d74a |
|
| 447 | 447 | { |
|---|
| 448 | 448 | playlist_t *p_playlist = (playlist_t *)p_obj->p_parent; |
|---|
| | 449 | input_item_t *p_current; |
|---|
| 449 | 450 | int i_activity; |
|---|
| 450 | 451 | uint32_t i_m, i_o; |
|---|
| 451 | 452 | |
|---|
| 452 | | vlc_mutex_lock( &p_obj->object_lock ); |
|---|
| 453 | | |
|---|
| 454 | | if( p_obj->i_waiting > 0 ) |
|---|
| 455 | | { |
|---|
| 456 | | input_item_t *p_current = p_obj->pp_waiting[0]; |
|---|
| | 453 | while( !p_playlist->b_die ) |
|---|
| | 454 | { |
|---|
| | 455 | vlc_mutex_lock( &p_obj->object_lock ); |
|---|
| | 456 | while( p_obj->i_waiting == 0 ) |
|---|
| | 457 | { |
|---|
| | 458 | vlc_cond_wait( &p_obj->object_wait, &p_obj->object_lock ); |
|---|
| | 459 | if( p_playlist->b_die ) |
|---|
| | 460 | { |
|---|
| | 461 | vlc_mutex_unlock( &p_obj->object_lock ); |
|---|
| | 462 | return; |
|---|
| | 463 | } |
|---|
| | 464 | } |
|---|
| | 465 | |
|---|
| | 466 | p_current = p_obj->pp_waiting[0]; |
|---|
| 457 | 467 | REMOVE_ELEM( p_obj->pp_waiting, p_obj->i_waiting, 0 ); |
|---|
| 458 | 468 | vlc_mutex_unlock( &p_obj->object_lock ); |
|---|
| | 469 | |
|---|
| 459 | 470 | PL_LOCK; |
|---|
| 460 | 471 | if( p_current ) |
|---|
| … | … | |
| 485 | 496 | } |
|---|
| 486 | 497 | PL_LOCK; |
|---|
| | 498 | |
|---|
| 487 | 499 | /* If we haven't retrieved enough meta, add to secondary queue |
|---|
| 488 | 500 | * which will run the "meta fetchers" |
|---|
| … | … | |
| 504 | 516 | vlc_mutex_unlock( |
|---|
| 505 | 517 | &p_playlist->p_secondary_preparse->object_lock); |
|---|
| | 518 | vlc_cond_signal( |
|---|
| | 519 | &p_playlist->p_secondary_preparse->object_wait ); |
|---|
| 506 | 520 | } |
|---|
| 507 | 521 | else |
|---|
| … | … | |
| 516 | 530 | if( i_activity < 0 ) i_activity = 0; |
|---|
| 517 | 531 | vlc_mutex_unlock( &p_obj->object_lock ); |
|---|
| | 532 | /* Sleep at least 1ms */ |
|---|
| 518 | 533 | msleep( (i_activity+1) * 1000 ); |
|---|
| 519 | | return; |
|---|
| 520 | | } |
|---|
| 521 | | vlc_mutex_unlock( &p_obj->object_lock ); |
|---|
| | 534 | } |
|---|
| 522 | 535 | } |
|---|
| 523 | 536 | |
|---|
| … | … | |
| 526 | 539 | { |
|---|
| 527 | 540 | playlist_t *p_playlist = (playlist_t *)p_obj->p_parent; |
|---|
| 528 | | |
|---|
| 529 | | vlc_mutex_lock( &p_obj->object_lock ); |
|---|
| 530 | | |
|---|
| 531 | | if( p_obj->i_waiting > 0 ) |
|---|
| 532 | | { |
|---|
| 533 | | vlc_bool_t b_fetch_art = p_obj->p_waiting->b_fetch_art; |
|---|
| 534 | | input_item_t *p_item = p_obj->p_waiting->p_item; |
|---|
| | 541 | vlc_bool_t b_fetch_art; |
|---|
| | 542 | input_item_t *p_item; |
|---|
| | 543 | int i_activity; |
|---|
| | 544 | |
|---|
| | 545 | while( !p_playlist->b_die ) |
|---|
| | 546 | { |
|---|
| | 547 | vlc_mutex_lock( &p_obj->object_lock ); |
|---|
| | 548 | while( p_obj->i_waiting == 0 ) |
|---|
| | 549 | { |
|---|
| | 550 | vlc_cond_wait( &p_obj->object_wait, &p_obj->object_lock ); |
|---|
| | 551 | if( p_playlist->b_die ) |
|---|
| | 552 | { |
|---|
| | 553 | vlc_mutex_unlock( &p_obj->object_lock ); |
|---|
| | 554 | return; |
|---|
| | 555 | } |
|---|
| | 556 | } |
|---|
| | 557 | |
|---|
| | 558 | b_fetch_art = p_obj->p_waiting->b_fetch_art; |
|---|
| | 559 | p_item = p_obj->p_waiting->p_item; |
|---|
| 535 | 560 | REMOVE_ELEM( p_obj->p_waiting, p_obj->i_waiting, 0 ); |
|---|
| 536 | 561 | vlc_mutex_unlock( &p_obj->object_lock ); |
|---|
| … | … | |
| 550 | 575 | vlc_gc_decref( p_item ); |
|---|
| 551 | 576 | } |
|---|
| 552 | | return; |
|---|
| 553 | | } |
|---|
| 554 | | vlc_mutex_unlock( &p_obj->object_lock ); |
|---|
| | 577 | vlc_mutex_lock( &p_obj->object_lock ); |
|---|
| | 578 | i_activity = var_GetInteger( p_playlist, "activity" ); |
|---|
| | 579 | if( i_activity < 0 ) i_activity = 0; |
|---|
| | 580 | vlc_mutex_unlock( &p_obj->object_lock ); |
|---|
| | 581 | /* Sleep at least 1ms */ |
|---|
| | 582 | msleep( (i_activity+1) * 1000 ); |
|---|
| | 583 | } |
|---|
| 555 | 584 | } |
|---|
| 556 | 585 | |
|---|
| r2d90e86 |
rde9d74a |
|
| 143 | 143 | int playlist_ThreadDestroy( playlist_t * p_playlist ) |
|---|
| 144 | 144 | { |
|---|
| 145 | | p_playlist->b_die = 1; |
|---|
| | 145 | p_playlist->b_die = VLC_TRUE; |
|---|
| | 146 | if( p_playlist->p_preparse ) |
|---|
| | 147 | vlc_cond_signal( &p_playlist->p_preparse->object_wait ); |
|---|
| | 148 | if( p_playlist->p_secondary_preparse ) |
|---|
| | 149 | vlc_cond_signal( &p_playlist->p_secondary_preparse->object_wait ); |
|---|
| 146 | 150 | |
|---|
| 147 | 151 | DestroyInteraction( p_playlist ); |
|---|
| … | … | |
| 209 | 213 | vlc_thread_ready( p_obj ); |
|---|
| 210 | 214 | |
|---|
| 211 | | while( !p_playlist->b_die ) |
|---|
| 212 | | { |
|---|
| 213 | | playlist_PreparseLoop( p_obj ); |
|---|
| 214 | | if( p_obj->i_waiting == 0 ) |
|---|
| 215 | | { |
|---|
| 216 | | msleep( INTF_IDLE_SLEEP ); |
|---|
| 217 | | } |
|---|
| 218 | | } |
|---|
| | 215 | playlist_PreparseLoop( p_obj ); |
|---|
| 219 | 216 | } |
|---|
| 220 | 217 | |
|---|
| … | … | |
| 225 | 222 | vlc_thread_ready( p_obj ); |
|---|
| 226 | 223 | |
|---|
| 227 | | while( !p_playlist->b_die ) |
|---|
| 228 | | { |
|---|
| 229 | | playlist_SecondaryPreparseLoop( p_obj ); |
|---|
| 230 | | if( p_obj->i_waiting == 0 ) |
|---|
| 231 | | { |
|---|
| 232 | | msleep( INTF_IDLE_SLEEP ); |
|---|
| 233 | | } |
|---|
| 234 | | } |
|---|
| | 224 | playlist_SecondaryPreparseLoop( p_obj ); |
|---|
| 235 | 225 | } |
|---|
| 236 | 226 | |
|---|