int stream_control(stream_t *s, int cmd, void *arg){ if(!s->control) return STREAM_UNSUPPORTED; #ifdef CONFIG_STREAM_CACHE if (s->cache_pid) return cache_do_control(s, cmd, arg); #endif return s->control(s, cmd, arg); }
void cache_uninit(stream_t *s) { cache_vars_t* c = s->cache_data; if(s->cache_pid) { #if !FORKED_CACHE cache_do_control(s, -2, NULL); #else kill(s->cache_pid,SIGKILL); waitpid(s->cache_pid,NULL,0); #endif s->cache_pid = 0; } if(!c) return; shared_free(c->buffer, c->buffer_size); c->buffer = NULL; c->stream = NULL; shared_free(s->cache_data, sizeof(cache_vars_t)); s->cache_data = NULL; }
void cache_uninit(stream_t *s) { cache_vars_t* c = s->cache_data; if(!s->cache_pid) return; #if defined(__MINGW32__) || defined(PTHREAD_CACHE) || defined(__OS2__) cache_do_control(s, -2, NULL); #else kill(s->cache_pid,SIGKILL); waitpid(s->cache_pid,NULL,0); #endif if(!c) return; #if defined(__MINGW32__) || defined(PTHREAD_CACHE) || defined(__OS2__) free(c->stream); free(c->buffer); free(s->cache_data); #else shmem_free(c->buffer,c->buffer_size); shmem_free(s->cache_data,sizeof(cache_vars_t)); #endif }