]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/input_manager.cpp
Hopefully fix the play button issue.
[vlc] / modules / gui / qt4 / input_manager.cpp
index 7100bb99f70791f0705de087ad64e8639111c6fc..c3666191730fe0f548575e942e0bb3a3dcdbea34 100644 (file)
@@ -60,9 +60,12 @@ InputManager::InputManager( QObject *parent, intf_thread_t *_p_intf) :
                            QObject( parent ), p_intf( _p_intf )
 {
     i_old_playing_status = END_S;
-    old_name = "";
-    p_input = NULL;
-    i_rate = 0;
+    b_had_audio  = b_had_video = b_has_audio = b_has_video = false;
+    old_name     = "";
+    artUrl       = "";
+    p_input      = NULL;
+    i_rate       = 0;
+    i_input_id   = 0;
 }
 
 InputManager::~InputManager()
@@ -84,7 +87,7 @@ void InputManager::setInput( input_thread_t *_p_input )
         emit statusChanged( PLAYING_S );
         UpdateMeta();
         UpdateTracks();
-        UpdateTitle();
+        UpdateNavigation();
         UpdateArt();
         addCallbacks();
         i_input_id = input_GetItem( p_input )->i_id;
@@ -105,16 +108,16 @@ void InputManager::delInput()
     if( p_input )
     {
         delCallbacks();
-        vlc_object_release( p_input );
         i_old_playing_status = END_S;
-
         i_input_id = 0;
-        old_name=qfu("");
-        artUrl = qfu("");
+        old_name   = "";
+        artUrl     = "";
         emit positionUpdated( 0.0, 0 ,0 );
         emit statusChanged( END_S );
         emit nameChanged( "" );
         emit artChanged( "" );
+        emit rateChanged( INPUT_RATE_DEFAULT );
+        vlc_object_release( p_input );
         p_input = NULL;
     }
 }
@@ -169,11 +172,15 @@ void InputManager::customEvent( QEvent *event )
          type != ItemStateChanged_Type )
         return;
 
-    if( !p_input || p_input->b_die || p_input->b_dead )
-        return;
-    if( ( type != PositionUpdate_Type && type != ItemRateChanged_Type ) &&
-        ( i_input_id != ple->i_id ) )
+    if( !hasInput() ) return;
+
+    if( ( type != PositionUpdate_Type  &&
+          type != ItemRateChanged_Type &&
+          type != ItemStateChanged_Type
+        )
+        && ( i_input_id != ple->i_id ) )
         return;
+
     if( type != PositionUpdate_Type )
         msg_Dbg( p_intf, "New Event: type %i", type );
 
@@ -185,20 +192,21 @@ void InputManager::customEvent( QEvent *event )
         break;
     case ItemChanged_Type:
         UpdateMeta();
+        UpdateNavigation();
         UpdateTracks();
-        UpdateTitle();
+        UpdateStatus();
         UpdateArt();
         break;
     case ItemRateChanged_Type:
         UpdateRate();
         break;
     case ItemTitleChanged_Type:
-        UpdateTitle();
+        UpdateNavigation();
         UpdateMeta();
         break;
     case ItemStateChanged_Type:
-        UpdateStatus();
         UpdateTracks();
+        UpdateStatus();
         break;
     }
 }
@@ -214,7 +222,7 @@ void InputManager::UpdatePosition()
     emit positionUpdated( f_pos, i_time, i_length );
 }
 
-void InputManager::UpdateTitle()
+void InputManager::UpdateNavigation()
 {
     /* Update navigation status */
     vlc_value_t val; val.i_int = 0;
@@ -576,7 +584,7 @@ static int InterfaceChanged( vlc_object_t *p_this, const char *psz_var,
     static int counter = 0;
     InputManager *im = (InputManager*)param;
 
-    counter = counter++ % 4;
+    counter = ++counter % 4;
     if(!counter)
         return VLC_SUCCESS;
     IMEvent *event = new IMEvent( PositionUpdate_Type, 0 );
@@ -585,7 +593,7 @@ static int InterfaceChanged( vlc_object_t *p_this, const char *psz_var,
 }
 
 static int ItemStateChanged( vlc_object_t *p_this, const char *psz_var,
-                            vlc_value_t oldval, vlc_value_t newval, void *param )
+                           vlc_value_t oldval, vlc_value_t newval, void *param )
 {
     InputManager *im = (InputManager*)param;
 
@@ -595,17 +603,17 @@ static int ItemStateChanged( vlc_object_t *p_this, const char *psz_var,
 }
 
 static int ItemRateChanged( vlc_object_t *p_this, const char *psz_var,
-                            vlc_value_t oldval, vlc_value_t newval, void *param )
+                           vlc_value_t oldval, vlc_value_t newval, void *param )
 {
     InputManager *im = (InputManager*)param;
-    
+
     IMEvent *event = new IMEvent( ItemRateChanged_Type, 0 );
     QApplication::postEvent( im, static_cast<QEvent*>(event) );
     return VLC_SUCCESS;
 }
 
 static int ItemTitleChanged( vlc_object_t *p_this, const char *psz_var,
-                            vlc_value_t oldval, vlc_value_t newval, void *param )
+                           vlc_value_t oldval, vlc_value_t newval, void *param )
 {
     InputManager *im = (InputManager*)param;