[vlc-devel] commit: macosx: Make sure we don't leak an input_thread_t. (Pierre d' Herbemont )
git version control
git at videolan.org
Sat Jul 5 19:46:27 CEST 2008
vlc | branch: master | Pierre d'Herbemont <pdherbemont at videolan.org> | Sat Jul 5 19:32:50 2008 +0200| [a15af1b90a7ee88f76a1f67c1fdd13efe885a564]
macosx: Make sure we don't leak an input_thread_t.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a15af1b90a7ee88f76a1f67c1fdd13efe885a564
---
modules/gui/macosx/intf.h | 3 ---
modules/gui/macosx/intf.m | 15 +++++++++------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h
index 6fe2489..3dbe618 100644
--- a/modules/gui/macosx/intf.h
+++ b/modules/gui/macosx/intf.h
@@ -67,9 +67,6 @@ struct intf_sys_t
{
NSAutoreleasePool * o_pool;
- /* the current input */
- input_thread_t * p_input;
-
/* special actions */
bool b_mute;
int i_play_status;
diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m
index 639cf27..f2ee386 100644
--- a/modules/gui/macosx/intf.m
+++ b/modules/gui/macosx/intf.m
@@ -1132,6 +1132,7 @@ static VLCMain *_o_sharedMainInstance = nil;
- (void)manage
{
playlist_t * p_playlist;
+ input_thread_t * p_input = NULL;
/* new thread requires a new pool */
NSAutoreleasePool * o_pool = [[NSAutoreleasePool alloc] init];
@@ -1153,25 +1154,25 @@ static VLCMain *_o_sharedMainInstance = nil;
{
vlc_mutex_lock( &p_intf->change_lock );
- if( p_intf->p_sys->p_input == NULL )
+ if( !p_input )
{
- p_intf->p_sys->p_input = playlist_CurrentInput( p_playlist );
+ p_input = playlist_CurrentInput( p_playlist );
/* Refresh the interface */
- if( p_intf->p_sys->p_input )
+ if( p_input )
{
msg_Dbg( p_intf, "input has changed, refreshing interface" );
p_intf->p_sys->b_input_update = true;
}
}
- else if( !vlc_object_alive (p_intf->p_sys->p_input) || p_intf->p_sys->p_input->b_dead )
+ else if( !vlc_object_alive (p_input) || p_input->b_dead )
{
/* input stopped */
p_intf->p_sys->b_intf_update = true;
p_intf->p_sys->i_play_status = END_S;
msg_Dbg( p_intf, "input has stopped, refreshing interface" );
- vlc_object_release( p_intf->p_sys->p_input );
- p_intf->p_sys->p_input = NULL;
+ vlc_object_release( p_input );
+ p_input = NULL;
}
/* Manage volume status */
@@ -1184,6 +1185,8 @@ static VLCMain *_o_sharedMainInstance = nil;
vlc_object_unlock( p_intf );
[o_pool release];
+ if( p_input ) vlc_object_release( p_input );
+
var_DelCallback( p_playlist, "playlist-current", PlaylistChanged, self );
var_DelCallback( p_playlist, "intf-change", PlaylistChanged, self );
var_DelCallback( p_playlist, "item-change", PlaylistChanged, self );
More information about the vlc-devel
mailing list