]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/input_manager.cpp
Trailing ;
[vlc] / modules / gui / qt4 / input_manager.cpp
index 8978060f70de469be2bc4f857aa97d0c461cbb78..2dc83e7fc057e506e5b73176a6dcf4834f3b45b5 100644 (file)
@@ -31,6 +31,8 @@
 
 #include <QApplication>
 
+#include <assert.h>
+
 static int ItemChanged( vlc_object_t *, const char *,
                         vlc_value_t, vlc_value_t, void * );
 static int PLItemChanged( vlc_object_t *, const char *,
@@ -61,7 +63,7 @@ InputManager::InputManager( QObject *parent, intf_thread_t *_p_intf) :
     b_video      = false;
     timeA        = 0;
     timeB        = 0;
-
+    f_cache      = -1.; /* impossible initial value, different from all */
 }
 
 InputManager::~InputManager()
@@ -141,7 +143,7 @@ void InputManager::customEvent( QEvent *event )
     int i_type = event->type();
     IMEvent *ple = static_cast<IMEvent *>(event);
 
-    if ( i_type != PositionUpdate_Type &&
+    assert( !( i_type != PositionUpdate_Type &&
          i_type != ItemChanged_Type &&
          i_type != ItemRateChanged_Type &&
          i_type != ItemTitleChanged_Type &&
@@ -156,8 +158,8 @@ void InputManager::customEvent( QEvent *event )
          i_type != SynchroChanged_Type &&
          i_type != CachingEvent_Type &&
          i_type != BookmarksChanged_Type &&
-         i_type != InterfaceAoutUpdate_Type )
-        return;
+         i_type != InterfaceAoutUpdate_Type &&
+         i_type != RecordingEvent_Type ) );
 
     if( !hasInput() ) return;
 
@@ -176,7 +178,8 @@ void InputManager::customEvent( QEvent *event )
           i_type != InfoChanged_Type &&
           i_type != SynchroChanged_Type &&
           i_type != BookmarksChanged_Type &&
-          i_type != InterfaceAoutUpdate_Type
+          i_type != InterfaceAoutUpdate_Type &&
+          i_type != RecordingEvent_Type
         )
         && ( i_input_id != ple->i_id ) )
         return;
@@ -247,6 +250,9 @@ void InputManager::customEvent( QEvent *event )
     case InterfaceAoutUpdate_Type:
         UpdateAout();
         break;
+    case RecordingEvent_Type:
+        UpdateRecord();
+        break;
     default:
         msg_Warn( p_intf, "This shouldn't happen: %i", i_type );
     }
@@ -271,7 +277,7 @@ static int ItemChanged( vlc_object_t *p_this, const char *psz_var,
     InputManager *im = (InputManager*)param;
 
     IMEvent *event = new IMEvent( ItemChanged_Type, newval.i_int );
-    QApplication::postEvent( im, static_cast<QEvent*>(event) );
+    QApplication::postEvent( im, event );
     return VLC_SUCCESS;
 }
 
@@ -340,10 +346,8 @@ static int InputEvent( vlc_object_t *p_this, const char *,
         break;
 
     case INPUT_EVENT_RECORD:
-        /* This happens when a recording starts. What do we do then?
-           Display a red light? */
-        /* event = new IMEvent( RecordingEvent_Type, 0 );
-        break; */
+        event = new IMEvent( RecordingEvent_Type, 0 );
+        break;
 
     case INPUT_EVENT_PROGRAM:
         /* This is for PID changes */
@@ -359,7 +363,7 @@ static int InputEvent( vlc_object_t *p_this, const char *,
     }
 
     if( event )
-        QApplication::postEvent( im, static_cast<QEvent*>(event) );
+        QApplication::postEvent( im, event );
     return VLC_SUCCESS;
 }
 void InputManager::UpdatePosition()
@@ -585,6 +589,14 @@ inline void InputManager::UpdateInfo()
     emit infoChanged( input_GetItem( p_input ) );
 }
 
+void InputManager::UpdateRecord()
+{
+    if( hasInput() )
+    {
+        emit recordingStateChanged( var_GetBool( p_input, "record" ) );
+    }
+}
+
 /* User update of the slider */
 void InputManager::sliderUpdate( float new_pos )
 {
@@ -827,8 +839,10 @@ MainInputManager::MainInputManager( intf_thread_t *_p_intf )
     /* emit check if playlist has allready started playing */
     vlc_value_t val;
     var_Change( THEPL, "playlist-current", VLC_VAR_CHOICESCOUNT, &val, NULL );
+
     IMEvent *event = new IMEvent( ItemChanged_Type, val.i_int);
-    QApplication::postEvent( this, static_cast<QEvent*>(event) );
+    customEvent( event );
+    delete event;
 }
 
 MainInputManager::~MainInputManager()
@@ -850,25 +864,12 @@ MainInputManager::~MainInputManager()
 
 vout_thread_t* MainInputManager::getVout()
 {
-    vout_thread_t **pp_vout; int i_vout;
-    if( p_input && !input_Control( p_input, INPUT_GET_VOUTS, &pp_vout, &i_vout ) )
-    {
-        for( int i = 1; i < i_vout; i++ ) vlc_object_release( pp_vout[i]);
-        vout_thread_t *p_tmp = pp_vout[0];
-        free( pp_vout );
-        return p_tmp;
-    }
-    return NULL;
+    return p_input ? input_GetVout( p_input ) : NULL;
 }
 
 aout_instance_t * MainInputManager::getAout()
 {
-    aout_instance_t *p_aout;
-    if( p_input && !input_Control( p_input, INPUT_GET_AOUT, &p_aout ) )
-    {
-        return p_aout;
-    }
-    return NULL;
+    return p_input ? input_GetAout( p_input ) : NULL;
 }
 
 void MainInputManager::customEvent( QEvent *event )
@@ -955,7 +956,7 @@ static int PLItemChanged( vlc_object_t *p_this, const char *psz_var,
     MainInputManager *mim = (MainInputManager*)param;
 
     IMEvent *event = new IMEvent( ItemChanged_Type, newval.i_int );
-    QApplication::postEvent( mim, static_cast<QEvent*>(event) );
+    QApplication::postEvent( mim, event );
     return VLC_SUCCESS;
 }
 
@@ -965,7 +966,7 @@ static int VolumeChanged( vlc_object_t *p_this, const char *psz_var,
     MainInputManager *mim = (MainInputManager*)param;
 
     IMEvent *event = new IMEvent( VolumeChanged_Type, newval.i_int );
-    QApplication::postEvent( mim, static_cast<QEvent*>(event) );
+    QApplication::postEvent( mim, event );
     return VLC_SUCCESS;
 }