diff --git a/modules/gui/qt4/input_manager.cpp b/modules/gui/qt4/input_manager.cpp
index a5c029ebead6da7cd9744bffd940d9122544eee7..1c52d87c859782ab5e7dedf9cf1a35076738a5ee 100644
--- a/modules/gui/qt4/input_manager.cpp
+++ b/modules/gui/qt4/input_manager.cpp
@@ -428,10 +428,13 @@ void InputManager::sliderUpdate( float new_pos )
 void InputManager::togglePlayPause()
 {
     vlc_value_t state;
-    var_Get( p_input, "state", &state );
-    state.i_int = ( state.i_int != PLAYING_S ) ? PLAYING_S : PAUSE_S;
-    var_Set( p_input, "state", state );
-    emit statusChanged( state.i_int );
+    if( hasInput() )
+    {
+        var_Get( p_input, "state", &state );
+        state.i_int = ( state.i_int != PLAYING_S ) ? PLAYING_S : PAUSE_S;
+        var_Set( p_input, "state", state );
+        emit statusChanged( state.i_int );
+    }
 }
 
 void InputManager::sectionPrev()
@@ -741,18 +744,16 @@ void MainInputManager::prev()
 
 void MainInputManager::togglePlayPause()
 {
-    if( p_input == NULL )
-    {
+    /* No input, play */
+    if( !p_input )
         playlist_Play( THEPL );
-        return;
-    }
-    getIM()->togglePlayPause();
+    else
+        getIM()->togglePlayPause();
 }
 
 bool MainInputManager::teletextState()
 {
-    im = getIM();
-    if( im->hasInput() )
+    if( getIM()->hasInput() )
     {
         const int i_teletext_es = var_GetInteger( getInput(), "teletext-es" );
         const int i_spu_es = var_GetInteger( getInput(), "spu-es" );
diff --git a/modules/gui/qt4/input_manager.hpp b/modules/gui/qt4/input_manager.hpp
index bbefa84b01dca732898f62b6a4b5c11978278b53..609790d918fac6bfb266437f64cb068df5efefca 100644
--- a/modules/gui/qt4/input_manager.hpp
+++ b/modules/gui/qt4/input_manager.hpp
@@ -65,6 +65,8 @@ public:
 class InputManager : public QObject
 {
     Q_OBJECT;
+    friend class MainInputManager;
+
 public:
     InputManager( QObject *, intf_thread_t * );
     virtual ~InputManager();
@@ -107,7 +109,6 @@ private:
 public slots:
     void setInput( input_thread_t * ); ///< Our controlled input changed
     void sliderUpdate( float ); ///< User dragged the slider. We get new pos
-    void togglePlayPause();
     /* SpeedRate Rate Management */
     void slower();
     void faster();
@@ -125,6 +126,8 @@ public slots:
     /* A to B Loop */
     void setAtoB();
 
+private slots:
+    void togglePlayPause();
 
 signals:
     /// Send new position, new time and new length