[vlc-devel] commit: Don't reregister the same callbacks over and over again ( Rémi Denis-Courmont )
git version control
git at videolan.org
Wed May 7 20:37:29 CEST 2008
vlc | branch: master | Rémi Denis-Courmont <rem at videolan.org> | Wed May 7 21:37:29 2008 +0300| [2b5eb3185ecd05444ce310ec33e0fdc0e5e69c90]
Don't reregister the same callbacks over and over again
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2b5eb3185ecd05444ce310ec33e0fdc0e5e69c90
---
modules/gui/ncurses.c | 17 ++++++++++-------
1 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/modules/gui/ncurses.c b/modules/gui/ncurses.c
index ce9f031..1809348 100644
--- a/modules/gui/ncurses.c
+++ b/modules/gui/ncurses.c
@@ -108,6 +108,10 @@ static void ManageSlider ( intf_thread_t * );
static void ReadDir ( intf_thread_t * );
static void start_color_and_pairs ( intf_thread_t * );
+static playlist_t *pl_Get( intf_thread_t *p_intf )
+{
+ return p_intf->p_sys->p_playlist;
+}
/*****************************************************************************
* Module descriptor
@@ -180,6 +184,7 @@ struct pl_item_t
struct intf_sys_t
{
input_thread_t *p_input;
+ playlist_t *p_playlist;
bool b_color;
bool b_color_started;
@@ -335,12 +340,8 @@ static void Close( vlc_object_t *p_this )
{
intf_thread_t *p_intf = (intf_thread_t *)p_this;
intf_sys_t *p_sys = p_intf->p_sys;
- playlist_t *p_playlist = pl_Get( p_intf );
int i;
- var_DelCallback( p_playlist, "intf-change", PlaylistChanged, p_intf );
- var_DelCallback( p_playlist, "item-append", PlaylistChanged, p_intf );
-
PlaylistDestroy( p_intf );
for( i = 0; i < p_sys->i_dir_entries; i++ )
@@ -384,6 +385,7 @@ static void Run( intf_thread_t *p_intf )
{
intf_sys_t *p_sys = p_intf->p_sys;
playlist_t *p_playlist = pl_Yield( p_intf );
+ p_sys->p_playlist = p_playlist;
int i_key;
time_t t_last_refresh;
@@ -396,15 +398,14 @@ static void Run( intf_thread_t *p_intf )
* force building of the playlist array
*/
PlaylistRebuild( p_intf );
+ var_AddCallback( p_playlist, "intf-change", PlaylistChanged, p_intf );
+ var_AddCallback( p_playlist, "item-append", PlaylistChanged, p_intf );
while( !intf_ShouldDie( p_intf ) )
{
msleep( INTF_IDLE_SLEEP );
/* Update the input */
- var_AddCallback( p_playlist, "intf-change", PlaylistChanged, p_intf );
- var_AddCallback( p_playlist, "item-append", PlaylistChanged, p_intf );
-
PL_LOCK;
if( p_sys->p_input == NULL )
{
@@ -458,6 +459,8 @@ static void Run( intf_thread_t *p_intf )
Redraw( p_intf, &t_last_refresh );
}
}
+ var_DelCallback( p_playlist, "intf-change", PlaylistChanged, p_intf );
+ var_DelCallback( p_playlist, "item-append", PlaylistChanged, p_intf );
}
/* following functions are local */
More information about the vlc-devel
mailing list