From 8d82c4803888274094b4de48d379588af314ed9d Mon Sep 17 00:00:00 2001 From: Pierre d'Herbemont Date: Tue, 15 Jul 2008 20:02:36 +0200 Subject: [PATCH] directory: Make sure we can exit and interrupt the access. --- modules/access/directory.c | 15 ++++++++++----- src/playlist/item.c | 7 ++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/modules/access/directory.c b/modules/access/directory.c index 1cde31422b..7beb5e4ed5 100644 --- a/modules/access/directory.c +++ b/modules/access/directory.c @@ -135,8 +135,8 @@ static int Demux( demux_t *p_demux ); static int DemuxControl( demux_t *p_demux, int i_query, va_list args ); -static int ReadDir( playlist_t *, const char *psz_name, int i_mode, - playlist_item_t *, input_item_t *, +static int ReadDir( access_t *, playlist_t *, const char *psz_name, + int i_mode, playlist_item_t *, input_item_t *, DIR *handle, stat_list_t *stats ); static DIR *OpenDir (vlc_object_t *obj, const char *psz_name); @@ -256,7 +256,8 @@ static ssize_t Read( access_t *p_access, uint8_t *p_buffer, size_t i_len) p_item_in_category = playlist_ItemToNode( p_playlist, p_current, false ); - ReadDir( p_playlist, psz_name, i_mode, p_item_in_category, + ReadDir( p_access, p_playlist, psz_name, i_mode, + p_item_in_category, p_current_input, (DIR *)p_access->p_sys, NULL ); playlist_Signal( p_playlist ); @@ -364,7 +365,8 @@ struct stat_list_t /***************************************************************************** * ReadDir: read a directory and add its content to the list *****************************************************************************/ -static int ReadDir( playlist_t *p_playlist, const char *psz_name, +static int ReadDir( access_t *p_access, playlist_t *p_playlist, + const char *psz_name, int i_mode, playlist_item_t *p_parent_category, input_item_t *p_current_input, @@ -374,6 +376,9 @@ static int ReadDir( playlist_t *p_playlist, const char *psz_name, int i_dir_content, i, i_return = VLC_SUCCESS; playlist_item_t *p_node; + if( !vlc_object_alive( p_access ) ) + return VLC_EGENERIC; + if( !vlc_object_alive( p_playlist ) ) return VLC_EGENERIC; @@ -491,7 +496,7 @@ static int ReadDir( playlist_t *p_playlist, const char *psz_name, /* If we had the parent in category, the it is now node. * Else, we still don't have */ - i_return = ReadDir( p_playlist, psz_uri , MODE_EXPAND, + i_return = ReadDir( p_access, p_playlist, psz_uri , MODE_EXPAND, p_parent_category ? p_node : NULL, p_current_input, subdir, &stself ); closedir (subdir); diff --git a/src/playlist/item.c b/src/playlist/item.c index 5d09181b22..c4e9cac55f 100644 --- a/src/playlist/item.c +++ b/src/playlist/item.c @@ -452,13 +452,10 @@ int playlist_BothAddInput( playlist_t *p_playlist, int i_top; assert( p_input ); - PL_LOCK_IF( !b_locked ); - if( !vlc_object_alive( p_playlist ) ) - { - PL_UNLOCK_IF( !b_locked ); return VLC_EGENERIC; - } + + PL_LOCK_IF( !b_locked ); /* Add to category */ p_item_cat = playlist_ItemNewFromInput( p_playlist, p_input ); -- 2.39.2