diff options
| author | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2011-09-26 00:26:43 +0100 |
|---|---|---|
| committer | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2011-09-26 00:26:43 +0100 |
| commit | a15f6b82252b5afb81486e6f0e9e10e5e2e5ece5 (patch) | |
| tree | 099b1d6cc559c3858ad95c9f1dbd56175c5e689f /src/xine-engine | |
| parent | b097a80fb2d9100e02f2fdaf62fe3d408f73763f (diff) | |
| parent | 752c9d69932238731394c2b86c458b3213d85b97 (diff) | |
| download | xine-lib-a15f6b82252b5afb81486e6f0e9e10e5e2e5ece5.tar.gz xine-lib-a15f6b82252b5afb81486e6f0e9e10e5e2e5ece5.tar.bz2 | |
Merge from 1.1. (Needs some testing.)
--HG--
rename : src/xine-engine/buffer.h => include/xine/buffer.h
Diffstat (limited to 'src/xine-engine')
| -rw-r--r-- | src/xine-engine/buffer_types.c | 8 | ||||
| -rw-r--r-- | src/xine-engine/events.c | 4 | ||||
| -rw-r--r-- | src/xine-engine/xine.c | 16 |
3 files changed, 21 insertions, 7 deletions
diff --git a/src/xine-engine/buffer_types.c b/src/xine-engine/buffer_types.c index 6f45672ee..55661c381 100644 --- a/src/xine-engine/buffer_types.c +++ b/src/xine-engine/buffer_types.c @@ -1194,6 +1194,14 @@ static const audio_db_t audio_db[] = { BUF_AUDIO_EAC3, "E-AC-3" }, +{ + { + ME_FOURCC('M', 'P', '4', 'L'), + 0 + }, + BUF_AUDIO_AAC_LATM, + "AAC LATM" +}, { { 0 }, 0, "last entry" } }; diff --git a/src/xine-engine/events.c b/src/xine-engine/events.c index 11d6e8bd7..5bd827c45 100644 --- a/src/xine-engine/events.c +++ b/src/xine-engine/events.c @@ -111,6 +111,8 @@ xine_event_queue_t *xine_event_new_queue (xine_stream_t *stream) { xine_event_queue_t *queue; + _x_refcounter_inc(stream->refcounter); + queue = malloc (sizeof (xine_event_queue_t)); pthread_mutex_init (&queue->lock, NULL); @@ -186,6 +188,8 @@ void xine_event_dispose_queue (xine_event_queue_t *queue) { free (queue->listener_thread); } + _x_refcounter_dec(stream->refcounter); + /* * clean up pending events */ diff --git a/src/xine-engine/xine.c b/src/xine-engine/xine.c index 6e5001f35..d3a75623b 100644 --- a/src/xine-engine/xine.c +++ b/src/xine-engine/xine.c @@ -1519,6 +1519,14 @@ static void xine_dispose_internal (xine_stream_t *stream) { xine_list_iterator_t *ite; lprintf("stream: %p\n", stream); + + pthread_mutex_lock(&stream->xine->streams_lock); + ite = xine_list_find(stream->xine->streams, stream); + if (ite) { + xine_list_remove(stream->xine->streams, ite); + } + pthread_mutex_unlock(&stream->xine->streams_lock); + pthread_mutex_destroy (&stream->info_mutex); pthread_mutex_destroy (&stream->meta_mutex); pthread_mutex_destroy (&stream->frontend_lock); @@ -1537,13 +1545,6 @@ static void xine_dispose_internal (xine_stream_t *stream) { xine_list_delete(stream->event_queues); - pthread_mutex_lock(&stream->xine->streams_lock); - ite = xine_list_find(stream->xine->streams, stream); - if (ite) { - xine_list_remove(stream->xine->streams, ite); - } - pthread_mutex_unlock(&stream->xine->streams_lock); - _x_refcounter_dispose(stream->refcounter); free (stream->current_extra_info); @@ -1581,6 +1582,7 @@ void xine_dispose (xine_stream_t *stream) { if (stream->osd_renderer) stream->osd_renderer->close( stream->osd_renderer ); + /* Remove the reference that the stream was created with. */ _x_refcounter_dec(stream->refcounter); } |
