+/* Add the callbacks on Input. Self explanatory */
+inline void InputManager::addCallbacks()
+{
+ var_AddCallback( p_input, "intf-event", InputEvent, this );
+}
+
+/* Delete the callbacks on Input. Self explanatory */
+inline void InputManager::delCallbacks()
+{
+ var_DelCallback( p_input, "intf-event", InputEvent, this );
+}
+
+/* Static callbacks for IM */
+static int ItemChanged( vlc_object_t *p_this, const char *psz_var,
+ vlc_value_t oldval, vlc_value_t newval, void *param )
+{
+ InputManager *im = (InputManager*)param;
+
+ IMEvent *event = new IMEvent( ItemChanged_Type, newval.i_int );
+ QApplication::postEvent( im, event );
+ return VLC_SUCCESS;
+}
+
+static int InputEvent( vlc_object_t *p_this, const char *,
+ vlc_value_t, vlc_value_t newval, void *param )
+{
+ InputManager *im = (InputManager*)param;
+ IMEvent *event;
+
+ switch( newval.i_int )
+ {
+ case INPUT_EVENT_STATE:
+ event = new IMEvent( ItemStateChanged_Type, 0 );
+ break;
+ case INPUT_EVENT_RATE:
+ event = new IMEvent( ItemRateChanged_Type, 0 );
+ break;
+ case INPUT_EVENT_TIMES:
+ event = new IMEvent( PositionUpdate_Type, 0 );
+ break;
+
+ case INPUT_EVENT_TITLE:
+ case INPUT_EVENT_CHAPTER:
+ event = new IMEvent( ItemTitleChanged_Type, 0 );
+ break;
+
+ case INPUT_EVENT_ES:
+ event = new IMEvent( ItemEsChanged_Type, 0 );
+ break;
+ case INPUT_EVENT_TELETEXT:
+ event = new IMEvent( ItemTeletextChanged_Type, 0 );
+ break;
+
+ case INPUT_EVENT_STATISTICS:
+ event = new IMEvent( StatisticsUpdate_Type, 0 );
+ break;
+
+ case INPUT_EVENT_VOUT:
+ event = new IMEvent( InterfaceVoutUpdate_Type, 0 );
+ break;
+ case INPUT_EVENT_AOUT:
+ event = new IMEvent( InterfaceAoutUpdate_Type, 0 );
+ break;
+
+ case INPUT_EVENT_ITEM_META: /* Codec MetaData + Art */
+ event = new IMEvent( MetaChanged_Type, 0 );
+ break;
+ case INPUT_EVENT_ITEM_INFO: /* Codec Info */
+ event = new IMEvent( InfoChanged_Type, 0 );
+ break;
+ case INPUT_EVENT_ITEM_NAME:
+ event = new IMEvent( NameChanged_Type, 0 );
+ break;
+
+ case INPUT_EVENT_AUDIO_DELAY:
+ case INPUT_EVENT_SUBTITLE_DELAY:
+ event = new IMEvent( SynchroChanged_Type, 0 );
+ break;
+
+ case INPUT_EVENT_CACHE:
+ event = new IMEvent( CachingEvent_Type, 0 );
+ break;
+
+ case INPUT_EVENT_BOOKMARK:
+ event = new IMEvent( BookmarksChanged_Type, 0 );
+ break;
+
+ case INPUT_EVENT_RECORD:
+ event = new IMEvent( RecordingEvent_Type, 0 );
+ break;
+
+ case INPUT_EVENT_PROGRAM:
+ /* This is for PID changes */
+ event = new IMEvent( ProgramChanged_Type, 0 );
+ break;
+
+ case INPUT_EVENT_SIGNAL:
+ /* This is for capture-card signals */
+ /* event = new IMEvent( SignalChanged_Type, 0 );
+ break; */
+ default:
+ event = NULL;
+ break;
+ }
+
+ if( event )
+ QApplication::postEvent( im, event );
+ return VLC_SUCCESS;
+}
+
+static int VbiEvent( vlc_object_t *, const char *,
+ vlc_value_t, vlc_value_t, void *param )
+{
+ InputManager *im = (InputManager*)param;
+ IMEvent *event = new IMEvent( ItemTeletextChanged_Type, 0 );
+
+ QApplication::postEvent( im, event );
+ return VLC_SUCCESS;
+}
+