]> git.sesse.net Git - vlc/commitdiff
QT4: connect signal from inputmanager metaChanged to playlist-model so it updates...
authorIlkka Ollakka <ileoo@videolan.org>
Sun, 15 Feb 2009 11:51:06 +0000 (13:51 +0200)
committerIlkka Ollakka <ileoo@videolan.org>
Sun, 15 Feb 2009 11:57:19 +0000 (13:57 +0200)
input: send inputEvent when length if input changes

This one should fix #2435

modules/gui/qt4/components/playlist/playlist_model.cpp
modules/gui/qt4/components/playlist/playlist_model.hpp
src/input/event.c

index 4cb8c2cabedebbe7917b49fcb00061d57e69dc7a..eb1d55c0dc1001e20bdafec00d4ac4ef254ca456 100644 (file)
@@ -528,6 +528,14 @@ void PLModel::customEvent( QEvent *event )
         rebuild();
 }
 
+void PLModel::updateMeta ( input_item_t *p_item )
+{
+    if( p_item )
+    {
+        ProcessInputItemUpdate( p_item->i_id );
+    }
+}
+
 /**** Events processing ****/
 void PLModel::ProcessInputItemUpdate( int i_input_id )
 {
@@ -623,6 +631,9 @@ void PLModel::rebuild( playlist_item_t *p_root )
     /* And signal the view */
     emit layoutChanged();
     addCallbacks();
+    /* Connect item update for metachanges */
+    CONNECT( THEMIM->getIM(), metaChanged( input_item_t *),
+             this, updateMeta( input_item_t *) );
 }
 
 /* This function must be entered WITH the playlist lock */
index 2dcaccbce5485f87367c20d02784dd52219f3668..1057e2f674ed996fa85dda00802ade61f9d74f7a 100644 (file)
@@ -178,6 +178,7 @@ private slots:
     void popupSave();
     void popupExplore();
     void viewchanged( int );
+    void updateMeta( input_item_t * );
 };
 
 #endif
index 922447831d5d71969de56effc44158359ea7c227..9fde71365d22e54405926388531b11928e06eee5 100644 (file)
@@ -69,9 +69,12 @@ void input_SendEventTimes( input_thread_t *p_input,
     val.i_time = i_time;
     var_Change( p_input, "time", VLC_VAR_SETVALUE, &val, NULL );
 
-       /* FIXME ugly + what about meta change event ? */
+    /* FIXME ugly */
     if( var_GetTime( p_input, "length" ) != i_length )
+    {
         input_item_SetDuration( p_input->p->p_item, i_length );
+        input_SendEventMeta( p_input );
+    }
     val.i_time = i_length;
     var_Change( p_input, "length", VLC_VAR_SETVALUE, &val, NULL );