From 42720931074186c81328480553498937fa97c340 Mon Sep 17 00:00:00 2001
From: Pierre d'Herbemont <pdherbemont@videolan.org>
Date: Mon, 7 Jan 2008 18:09:45 +0000
Subject: [PATCH] control/media_instance.c: Make sure media_instance_pause()
 will either, play, pause, or stop, depending on the whether the input can be
 paused or is playing.

---
 src/control/media_instance.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/control/media_instance.c b/src/control/media_instance.c
index ce64024f8e3b..366a4fed4fe5 100644
--- a/src/control/media_instance.c
+++ b/src/control/media_instance.c
@@ -546,10 +546,18 @@ void libvlc_media_instance_pause( libvlc_media_instance_t *p_mi,
     if( !p_input_thread )
         return;
 
-    if( var_GetInteger( p_input_thread, "state" ) == PAUSE_S )
-        input_Control( p_input_thread, INPUT_SET_STATE, PLAYING_S );
+    int state = var_GetInteger( p_input_thread, "state" );
+
+    if( state == PLAYING_S )
+    {
+        if( libvlc_media_instance_can_pause( p_mi, p_e ) )
+            input_Control( p_input_thread, INPUT_SET_STATE, PAUSE_S );
+        else
+            libvlc_media_instance_stop( p_mi, p_e );
+    }
     else
-        input_Control( p_input_thread, INPUT_SET_STATE, PAUSE_S );
+        input_Control( p_input_thread, INPUT_SET_STATE, PLAYING_S );
+
     vlc_object_release( p_input_thread );
 }
 
-- 
GitLab