Changeset 7ca46db5b0de9a4f15de790990303cc46b496e24
- Timestamp:
- 06/28/08 21:22:00
(2 months ago)
- Author:
- Rémi Denis-Courmont <rdenis@simphalempin.com>
- git-committer:
- Rémi Denis-Courmont <rdenis@simphalempin.com> 1214680920 +0300
- git-parent:
[c2c6729b7abd3a0d1096c79251a6d05a2e9a3403]
- git-author:
- Rémi Denis-Courmont <rdenis@simphalempin.com> 1214680920 +0300
- Message:
playlist: release video outputs *once* - fixes #1593
Releasing other thread's references is not a very good idea...
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| rb437d81 |
r7ca46db |
|
| 182 | 182 | static void ObjectGarbageCollector( playlist_t *p_playlist, bool b_force ) |
|---|
| 183 | 183 | { |
|---|
| 184 | | vlc_object_t *p_obj; |
|---|
| 185 | | |
|---|
| 186 | 184 | if( !b_force ) |
|---|
| 187 | 185 | { |
|---|
| … | … | |
| 196 | 194 | |
|---|
| 197 | 195 | vlc_mutex_lock( &p_playlist->gc_lock ); |
|---|
| 198 | | while( ( p_obj = vlc_object_find( p_playlist->p_libvlc, VLC_OBJECT_VOUT, |
|---|
| 199 | | FIND_CHILD ) ) ) |
|---|
| 200 | | { |
|---|
| 201 | | vlc_object_release( p_obj ); |
|---|
| 202 | | if( p_obj->p_parent == VLC_OBJECT(p_playlist->p_libvlc) ) |
|---|
| 203 | | { |
|---|
| 204 | | msg_Dbg( p_playlist, "garbage collector destroying 1 vout" ); |
|---|
| 205 | | vlc_object_release( p_obj ); /* Hmm, is this (thread-)safe?? */ |
|---|
| 206 | | } |
|---|
| | 196 | /* Remove video outputs when user presses stop: */ |
|---|
| | 197 | vlc_list_t *list = vlc_list_find( p_playlist->p_libvlc, VLC_OBJECT_VOUT, |
|---|
| | 198 | FIND_CHILD ); |
|---|
| | 199 | if( list != NULL ) |
|---|
| | 200 | { |
|---|
| | 201 | msg_Dbg( p_playlist, "removing %u vout(s)", list->i_count ); |
|---|
| | 202 | for( int i = 0; i < list->i_count; i++) |
|---|
| | 203 | vlc_object_release( list->p_values[i].p_object ); |
|---|
| | 204 | vlc_list_release( list ); |
|---|
| 207 | 205 | } |
|---|
| 208 | 206 | p_playlist->b_cant_sleep = false; |
|---|