+ /* We don't care about:
+ - chapter
+ - programs
+ - audio-delay
+ - spu-delay
+ - bookmark
+ - position, time, length, because they are included in intf-change
+ */
+ /* src/input/input.c:1629 */
+ var_AddCallback( p_input, "state", ItemStateChanged, this );
+ /* src/input/es-out.c:552 */
+ var_AddCallback( p_input, "spu-es", ChangeSPU, this );
+ /* emit UpdateStatus so that main_interface updates controls
+ * if there is new videotracks (mpeg-ts)*/
+ var_AddCallback( p_input, "video-es", ItemStateChanged, this );
+ /* src/input/es-out.c: */
+ var_AddCallback( p_input, "teletext-es", ChangeTeletext, this );
+ /* src/input/input.c:1765 */
+ var_AddCallback( p_input, "rate-change", ItemRateChanged, this );
+ /* src/input/input.c:2003 */
+ var_AddCallback( p_input, "title", ItemTitleChanged, this );
+ /* src/input/input.c:734 for timers update*/
+ var_AddCallback( p_input, "intf-change", InterfaceChanged, this );
+ /* src/input/input.c:710 for statistics update*/
+ var_AddCallback( p_input, "stats-change", StatisticsUpdated, this );
+ /* src/input/input.c for vout creation/destruction */
+ var_AddCallback( p_input, "intf-change-vout", InterfaceVoutChanged, this );
+}
+
+/* Delete the callbacks on Input. Self explanatory */
+void InputManager::delCallbacks()
+{
+ var_DelCallback( p_input, "spu-es", ChangeSPU, this );
+ var_DelCallback( p_input, "video-es", ItemStateChanged, this );
+ var_DelCallback( p_input, "teletext-es", ChangeTeletext, this );
+ var_DelCallback( p_input, "state", ItemStateChanged, this );
+ var_DelCallback( p_input, "rate-change", ItemRateChanged, this );
+ var_DelCallback( p_input, "title", ItemTitleChanged, this );
+ var_DelCallback( p_input, "intf-change", InterfaceChanged, this );
+ var_DelCallback( p_input, "stats-change", StatisticsUpdated, this );
+ var_DelCallback( p_input, "intf-change-vout", InterfaceVoutChanged, this );
+}
+
+/* Convert the event from the callbacks in actions */
+void InputManager::customEvent( QEvent *event )
+{
+ int i_type = event->type();
+ IMEvent *ple = static_cast<IMEvent *>(event);
+
+ if ( i_type != PositionUpdate_Type &&
+ i_type != ItemChanged_Type &&
+ i_type != ItemRateChanged_Type &&
+ i_type != ItemTitleChanged_Type &&
+ i_type != ItemSpuChanged_Type &&
+ i_type != ItemTeletextChanged_Type &&
+ i_type != ItemStateChanged_Type &&
+ i_type != StatisticsUpdate_Type &&
+ i_type != InterfaceVoutUpdate_Type )