summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libmpdemux/cache2.c10
-rw-r--r--libmpdemux/stream.c5
2 files changed, 11 insertions, 4 deletions
diff --git a/libmpdemux/cache2.c b/libmpdemux/cache2.c
index 2650ff2dbd..b4e82cb12b 100644
--- a/libmpdemux/cache2.c
+++ b/libmpdemux/cache2.c
@@ -196,6 +196,16 @@ cache_vars_t* cache_init(int size,int sector){
return s;
}
+void cache_uninit(stream_t *s) {
+ cache_vars_t* c = s->cache_data;
+ if(!s->cache_pid) return;
+ kill(s->cache_pid,SIGKILL);
+ waitpid(s->cache_pid,NULL,0);
+ if(!c) return;
+ shmem_free(c->buffer,c->buffer_size);
+ shmem_free(s->cache_data,sizeof(cache_vars_t));
+}
+
static void exit_sighandler(int x){
// close stream
exit(0);
diff --git a/libmpdemux/stream.c b/libmpdemux/stream.c
index 85cfc6da77..7d0989a1de 100644
--- a/libmpdemux/stream.c
+++ b/libmpdemux/stream.c
@@ -391,10 +391,7 @@ void free_stream(stream_t *s){
// printf("\n*** free_stream() called ***\n");
#ifdef USE_STREAM_CACHE
if(s->cache_pid) {
-// kill(s->cache_pid,SIGTERM);
- kill(s->cache_pid,SIGKILL);
- waitpid(s->cache_pid,NULL,0);
- shmem_free(s->cache_data);
+ cache_uninit(s);
}
#endif
switch(s->type) {