summaryrefslogtreecommitdiff
path: root/src/demuxers/demux_mpeg_block.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/demuxers/demux_mpeg_block.c')
-rw-r--r--src/demuxers/demux_mpeg_block.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/demuxers/demux_mpeg_block.c b/src/demuxers/demux_mpeg_block.c
index e1de03b33..b188dbde9 100644
--- a/src/demuxers/demux_mpeg_block.c
+++ b/src/demuxers/demux_mpeg_block.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: demux_mpeg_block.c,v 1.100 2002/05/14 22:22:43 tmattern Exp $
+ * $Id: demux_mpeg_block.c,v 1.101 2002/05/21 00:17:55 tmattern Exp $
*
* demultiplexer for mpeg 1/2 program streams
*
@@ -933,7 +933,7 @@ static int demux_mpeg_detect_blocksize(demux_mpeg_block_t *this,
}
-static void demux_mpeg_block_start (demux_plugin_t *this_gen,
+static int demux_mpeg_block_start (demux_plugin_t *this_gen,
fifo_buffer_t *video_fifo,
fifo_buffer_t *audio_fifo,
off_t start_pos, int start_time) {
@@ -941,6 +941,7 @@ static void demux_mpeg_block_start (demux_plugin_t *this_gen,
demux_mpeg_block_t *this = (demux_mpeg_block_t *) this_gen;
buf_element_t *buf;
int err;
+ int status;
pthread_mutex_lock( &this->mutex );
@@ -1052,14 +1053,20 @@ static void demux_mpeg_block_start (demux_plugin_t *this_gen,
_("demux_mpeg_block: unknown block size. try using demux_mpeg.\n"));
this->status = DEMUX_FINISHED ;
}
+
+ /* this->status is saved because we can be interrupted between
+ * pthread_mutex_unlock and return
+ */
+ status = this->status;
pthread_mutex_unlock( &this->mutex );
+ return status;
}
-static void demux_mpeg_block_seek (demux_plugin_t *this_gen,
+static int demux_mpeg_block_seek (demux_plugin_t *this_gen,
off_t start_pos, int start_time) {
demux_mpeg_block_t *this = (demux_mpeg_block_t *) this_gen;
- demux_mpeg_block_start (this_gen, this->video_fifo, this->audio_fifo,
+ return demux_mpeg_block_start (this_gen, this->video_fifo, this->audio_fifo,
start_pos, start_time);
}