From: Stefan H. <ho...@us...> - 2005-01-18 22:38:53
|
Update of /cvsroot/xine/xine-lib/src/xine-engine In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26701 Modified Files: xine.c Log Message: fix the status, xine-streams report. XINE_STATUS_IDLE is reported for a stream with no mrl assigned, XINE_STATUS_STOP for a stream ready to play. Index: xine.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/xine-engine/xine.c,v retrieving revision 1.306 retrieving revision 1.307 diff -u -r1.306 -r1.307 --- xine.c 20 Dec 2004 21:22:21 -0000 1.306 +++ xine.c 18 Jan 2005 22:38:31 -0000 1.307 @@ -273,7 +273,8 @@ lprintf ("status before = %d\n", stream->status); - if (stream->status == XINE_STATUS_STOP) { + if ( stream->status == XINE_STATUS_IDLE || + stream->status == XINE_STATUS_STOP ) { _x_demux_control_end(stream, 0); lprintf ("ignored\n"); return; @@ -391,6 +392,16 @@ close_internal (stream); + /* + * set status to idle. + * not putting this into close_internal because it is also called + * by open_internal. + */ + + /* Don't change status if we're quitting */ + if (stream->status != XINE_STATUS_QUIT) + stream->status = XINE_STATUS_IDLE; + pthread_mutex_unlock (&stream->frontend_lock); } @@ -467,7 +478,7 @@ _x_extra_info_reset( stream->audio_decoder_extra_info ); stream->xine = this; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; stream->spu_decoder_plugin = NULL; stream->spu_decoder_streamtype = -1; @@ -633,7 +644,8 @@ if (!mrl) { xprintf (stream->xine, XINE_VERBOSITY_LOG, _("xine: error while parsing mrl\n")); stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + if (stream->status != XINE_STATUS_IDLE) + stream->status = XINE_STATUS_STOP; return 0; } @@ -718,7 +730,7 @@ if (!(stream->demux_plugin = _x_find_demux_plugin_by_name(stream, demux_name, stream->input_plugin))) { xine_log(stream->xine, XINE_LOG_MSG, _("xine: specified demuxer %s failed to start\n"), demux_name); stream->err = XINE_ERROR_NO_DEMUX_PLUGIN; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; free(demux_name); return 0; } @@ -729,7 +741,7 @@ } else { xprintf(stream->xine, XINE_VERBOSITY_LOG, _("xine: error while parsing mrl\n")); stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; return 0; } continue; @@ -759,14 +771,14 @@ } else { xprintf(stream->xine, XINE_VERBOSITY_LOG, _("xine: error opening rip input plugin instance\n")); stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; return 0; } } else { xprintf(stream->xine, XINE_VERBOSITY_LOG, _("xine: error while parsing mrl\n")); stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; return 0; } continue; @@ -790,7 +802,7 @@ if (!(stream->demux_plugin = _x_find_demux_plugin_last_probe(stream, demux_name, stream->input_plugin))) { xine_log(stream->xine, XINE_LOG_MSG, _("xine: last_probed demuxer %s failed to start\n"), demux_name); stream->err = XINE_ERROR_NO_DEMUX_PLUGIN; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; free(demux_name); return 0; } @@ -802,7 +814,7 @@ } else { xprintf(stream->xine, XINE_VERBOSITY_LOG, _("xine: error while parsing mrl\n")); stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; return 0; } continue; @@ -814,7 +826,7 @@ } else { xprintf(stream->xine, XINE_VERBOSITY_LOG, _("xine: error while parsing mrl\n")); stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; return 0; } xprintf (stream->xine, XINE_VERBOSITY_LOG, _("ignoring video\n")); @@ -827,7 +839,7 @@ } else { xprintf(stream->xine, XINE_VERBOSITY_LOG, _("xine: error while parsing mrl\n")); stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; return 0; } xprintf (stream->xine, XINE_VERBOSITY_LOG, _("ignoring audio\n")); @@ -840,7 +852,7 @@ } else { xprintf(stream->xine, XINE_VERBOSITY_LOG, _("xine: error while parsing mrl\n")); stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; return 0; } xprintf (stream->xine, XINE_VERBOSITY_LOG, _("ignoring subpicture\n")); @@ -853,7 +865,7 @@ } else { xprintf(stream->xine, XINE_VERBOSITY_LOG, _("xine: error while parsing mrl\n")); stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; return 0; } xprintf (stream->xine, XINE_VERBOSITY_LOG, _("input cache plugin disabled\n")); @@ -879,7 +891,7 @@ } else { xprintf(stream->xine, XINE_VERBOSITY_LOG, _("xine: error while parsing mrl\n")); stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; return 0; } continue; @@ -904,7 +916,7 @@ } else { xprintf(stream->xine, XINE_VERBOSITY_LOG, _("xine: error while parsing mrl\n")); stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; return 0; } continue; @@ -939,7 +951,7 @@ } else { xprintf(stream->xine, XINE_VERBOSITY_LOG, _("xine: error while parsing mrl\n")); stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; return 0; } continue; @@ -970,7 +982,7 @@ config_entry); } stream->err = XINE_ERROR_MALFORMED_MRL; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; free(config_entry); return 0; } @@ -993,7 +1005,7 @@ xine_log (stream->xine, XINE_LOG_MSG, _("xine: couldn't find demux for >%s<\n"), mrl); stream->err = XINE_ERROR_NO_DEMUX_PLUGIN; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; /* force the engine to unregister fifo callbacks */ _x_demux_control_nop(stream, BUF_FLAG_END_STREAM); @@ -1037,7 +1049,7 @@ stream->input_plugin = NULL; stream->err = XINE_ERROR_NO_DEMUX_PLUGIN; - stream->status = XINE_STATUS_STOP; + stream->status = XINE_STATUS_IDLE; xprintf (stream->xine, XINE_VERBOSITY_DEBUG, "return from\n"); return 0; @@ -1045,6 +1057,8 @@ _x_demux_control_headers_done (stream); + stream->status = XINE_STATUS_STOP; + lprintf ("done\n"); return 1; } |