]> git.sesse.net Git - vlc/commitdiff
Update the "Stream and Media Info" dialog
authorClément Stenac <zorglub@videolan.org>
Sat, 28 Aug 2004 19:29:32 +0000 (19:29 +0000)
committerClément Stenac <zorglub@videolan.org>
Sat, 28 Aug 2004 19:29:32 +0000 (19:29 +0000)
modules/gui/wxwindows/fileinfo.cpp
modules/gui/wxwindows/wxwindows.h

index b8609bee77354f32af754cd95d81661644f00117..09f2d5c3227380d540e66c72b3f4d1f487caa351 100644 (file)
  * Event Table.
  *****************************************************************************/
 
+static int ItemChanged( vlc_object_t *, const char *,
+                        vlc_value_t, vlc_value_t, void * );
+
+
 /* IDs for the controls and the menu commands */
 enum
 {
@@ -55,6 +59,8 @@ FileInfo::FileInfo( intf_thread_t *_p_intf, wxWindow *p_parent ):
     wxFrame( p_parent, -1, wxU(_("Stream and media info")), wxDefaultPosition,
              wxDefaultSize, wxDEFAULT_FRAME_STYLE )
 {
+    playlist_t *p_playlist;
+
     /* Initializations */
     p_intf = _p_intf;
     SetIcon( *p_intf->p_sys->p_icon );
@@ -80,6 +86,16 @@ FileInfo::FileInfo( intf_thread_t *_p_intf, wxWindow *p_parent ):
     main_sizer->Layout();
     SetSizerAndFit( main_sizer );
 
+    p_playlist = (playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
+                                                FIND_ANYWHERE );
+
+    if( p_playlist )
+    {
+        var_AddCallback( p_playlist, "item-change", ItemChanged, this );
+        vlc_object_release( p_playlist );
+    }
+
+    b_need_update = VLC_TRUE;
     UpdateFileInfo();
 }
 
@@ -107,7 +123,8 @@ void FileInfo::UpdateFileInfo()
             fileinfo_tree->AddRoot( wxL2U(p_input->input.p_item->psz_name) );
         fileinfo_root_label = wxL2U(p_input->input.p_item->psz_name);
     }
-    else if( fileinfo_root_label == wxL2U(p_input->input.p_item->psz_name) )
+    else if( fileinfo_root_label == wxL2U(p_input->input.p_item->psz_name) &&
+             b_need_update == VLC_FALSE )
     {
         return;
     }
@@ -134,6 +151,8 @@ void FileInfo::UpdateFileInfo()
     }
     vlc_mutex_unlock( &p_input->input.p_item->lock );
 
+    b_need_update = VLC_FALSE;
+
     return;
 }
 
@@ -145,3 +164,11 @@ void FileInfo::OnClose( wxCommandEvent& event )
 {
     Hide();
 }
+
+static int ItemChanged( vlc_object_t *p_this, const char *psz_var, 
+                        vlc_value_t oldval, vlc_value_t newval, void *param )
+{
+    FileInfo *p_fileinfo = (FileInfo *)param;
+    p_fileinfo->b_need_update = VLC_TRUE;
+    return VLC_SUCCESS;
+}
index 0a15df770450c3eba3aa6001149e3d6762723a5a..d5ce2e67f04938c3226fe4df22d5b4cc83b0bcf4 100644 (file)
@@ -913,6 +913,8 @@ public:
     virtual ~FileInfo();
     void UpdateFileInfo();
 
+    vlc_bool_t b_need_update;
+
 private:
     void OnClose( wxCommandEvent& event );
 
@@ -923,6 +925,7 @@ private:
     wxTreeItemId fileinfo_root;
     wxString fileinfo_root_label;
 
+
 };
 
 #if wxUSE_DRAG_AND_DROP