summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJames Courtier-Dutton <jcdutton@users.sourceforge.net>2002-04-13 13:34:27 +0000
committerJames Courtier-Dutton <jcdutton@users.sourceforge.net>2002-04-13 13:34:27 +0000
commit2d4b53d2070e1490bd09f172937a7375d9626f1f (patch)
tree6632586a117799edd093ce295f4fd7360437d997 /src
parent44a7370d29e830e6c001a1d81c8a004741c725b5 (diff)
downloadxine-lib-2d4b53d2070e1490bd09f172937a7375d9626f1f.tar.gz
xine-lib-2d4b53d2070e1490bd09f172937a7375d9626f1f.tar.bz2
Fix a bug whereby xine would hang if someone pressed the STOP or EXIT button during a still dvd menu using the xine-dvdnav plugin.
CVS patchset: 1714 CVS date: 2002/04/13 13:34:27
Diffstat (limited to 'src')
-rw-r--r--src/xine-engine/xine.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/xine-engine/xine.c b/src/xine-engine/xine.c
index b2207beca..2adf4c147 100644
--- a/src/xine-engine/xine.c
+++ b/src/xine-engine/xine.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: xine.c,v 1.115 2002/04/09 04:35:17 miguelfreitas Exp $
+ * $Id: xine.c,v 1.116 2002/04/13 13:34:27 jcdutton Exp $
*
* top-level xine functions
*
@@ -192,12 +192,22 @@ void xine_stop_internal (xine_t *this) {
xine_set_speed_internal(this, SPEED_NORMAL);
this->status = XINE_STOP;
- printf ("xine_stop: stopping demuxer\n");
+ if(this->cur_input_plugin) {
+ /* This forces the input plugin to return from any sleeps it might
+ * be doing for still menus etc.
+ * Otherwise, if the input plugin was sleeping when STOP or EXIT
+ * was pressed, xine would hang and need kill -9 to exit it.
+ */
+ this->cur_input_plugin->stop(this->cur_input_plugin);
+ }
+
+ printf ("xine_stop: stopping demuxer\n");
if(this->cur_demuxer_plugin) {
this->cur_demuxer_plugin->stop (this->cur_demuxer_plugin);
this->cur_demuxer_plugin = NULL;
}
+ printf ("xine_stop: stopped demuxer\n");
if(this->cur_input_plugin) {
this->cur_input_plugin->close(this->cur_input_plugin);