[vlc-devel] commit: Free rtsp commands on close ( Sébastien Escudier )
git version control
git at videolan.org
Wed May 20 18:05:26 CEST 2009
vlc | branch: 1.0-bugfix | Sébastien Escudier <sebastien-devel at celeos.eu> | Wed May 20 09:32:57 2009 +0200| [fe19e10c0db5b0e558d531a860d52f8248e071fe] | committer: Rémi Denis-Courmont
Free rtsp commands on close
Signed-off-by: Rémi Denis-Courmont <remi at remlab.net>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fe19e10c0db5b0e558d531a860d52f8248e071fe
---
modules/misc/rtsp.c | 32 +++++++++++++++++++++-----------
1 files changed, 21 insertions(+), 11 deletions(-)
diff --git a/modules/misc/rtsp.c b/modules/misc/rtsp.c
index 0dd3e93..ee23ed5 100644
--- a/modules/misc/rtsp.c
+++ b/modules/misc/rtsp.c
@@ -221,6 +221,17 @@ typedef enum
RTSP_CMD_TYPE_FORWARD,
} rtsp_cmd_type_t;
+/* */
+typedef struct
+{
+ int i_type;
+ int i_media_id;
+ //vod_media_t *p_media;
+ char *psz_session;
+ char *psz_arg;
+ double f_arg;
+} rtsp_cmd_t;
+
static vod_media_t *MediaNew( vod_t *, const char *, input_item_t * );
static void MediaDel( vod_t *, vod_media_t * );
static int MediaAddES( vod_t *, vod_media_t *, es_format_t * );
@@ -337,12 +348,22 @@ static void Close( vlc_object_t * p_this )
{
vod_t *p_vod = (vod_t *)p_this;
vod_sys_t *p_sys = p_vod->p_sys;
+ block_t *p_block_cmd;
+ rtsp_cmd_t cmd;
/* Stop command thread */
vlc_object_kill( p_vod );
CommandPush( p_vod, RTSP_CMD_TYPE_NONE, NULL, NULL, 0.0, NULL );
vlc_thread_join( p_vod );
+ while( block_FifoCount( p_sys->p_fifo_cmd ) > 0 )
+ {
+ p_block_cmd = block_FifoGet( p_sys->p_fifo_cmd );
+ memcpy( &cmd, p_block_cmd->p_buffer, sizeof(cmd) );
+ block_Release( p_block_cmd );
+ free( cmd.psz_session );
+ free( cmd.psz_arg );
+ }
block_FifoRelease( p_sys->p_fifo_cmd );
httpd_HostDelete( p_sys->p_rtsp_host );
@@ -780,17 +801,6 @@ static void MediaDelES( vod_t *p_vod, vod_media_t *p_media, es_format_t *p_fmt)
free( p_es );
}
-/* */
-typedef struct
-{
- int i_type;
- int i_media_id;
- //vod_media_t *p_media;
- char *psz_session;
- char *psz_arg;
- double f_arg;
-} rtsp_cmd_t;
-
static void CommandPush( vod_t *p_vod, rtsp_cmd_type_t i_type, vod_media_t *p_media, const char *psz_session,
double f_arg, const char *psz_arg )
{
More information about the vlc-devel
mailing list