]> git.sesse.net Git - vlc/commitdiff
* fixed race condition with b_seekable.
authorGildas Bazin <gbazin@videolan.org>
Mon, 17 May 2004 12:02:43 +0000 (12:02 +0000)
committerGildas Bazin <gbazin@videolan.org>
Mon, 17 May 2004 12:02:43 +0000 (12:02 +0000)
modules/gui/wxwindows/timer.cpp
modules/gui/wxwindows/wxwindows.h

index 91f1334fef4eb88c67cdea7d161036ecf5a6710f..906e35a9ab499f52628fb0d6b62f8f5025206882 100644 (file)
@@ -90,8 +90,6 @@ Timer::~Timer()
  *****************************************************************************/
 void Timer::Notify()
 {
-    vlc_bool_t b_pace_control;
-
     vlc_mutex_lock( &p_intf->change_lock );
 
     /* Update the input */
@@ -101,27 +99,17 @@ void Timer::Notify()
             (input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT,
                                                FIND_ANYWHERE );
 
-        /* Show slider */
+        /* Refresh interface */
         if( p_intf->p_sys->p_input )
         {
-            if( p_intf->p_sys->p_input->stream.b_seekable )
-            {
-                p_main_interface->slider->SetValue( 0 );
-                p_main_interface->slider_frame->Show();
-                p_main_interface->frame_sizer->Show(
-                    p_main_interface->slider_frame );
-                p_main_interface->frame_sizer->Layout();
-                p_main_interface->frame_sizer->Fit( p_main_interface );
-            }
+            p_main_interface->slider->SetValue( 0 );
+            b_old_seekable = VLC_FALSE;
 
             p_main_interface->statusbar->SetStatusText(
                 wxU(p_intf->p_sys->p_input->psz_source), 2 );
 
             p_main_interface->TogglePlayButton( PLAYING_S );
             i_old_playing_status = PLAYING_S;
-
-            /* control buttons for free pace streams */
-            b_pace_control = p_intf->p_sys->p_input->stream.b_pace_control;
         }
     }
     else if( p_intf->p_sys->p_input->b_dead )
@@ -144,7 +132,6 @@ void Timer::Notify()
     }
 
 
-
     if( p_intf->p_sys->p_input )
     {
         input_thread_t *p_input = p_intf->p_sys->p_input;
@@ -157,6 +144,17 @@ void Timer::Notify()
             p_intf->p_sys->b_playing = 1;
 
             /* Manage the slider */
+            if( p_intf->p_sys->p_input->stream.b_seekable && !b_old_seekable )
+            {
+                /* Done like this because b_seekable is set slightly after
+                 * the new input object is available. */
+                b_old_seekable = VLC_TRUE;
+                p_main_interface->slider_frame->Show();
+                p_main_interface->frame_sizer->Show(
+                    p_main_interface->slider_frame );
+                p_main_interface->frame_sizer->Layout();
+                p_main_interface->frame_sizer->Fit( p_main_interface );
+            }
             if( p_input->stream.b_seekable && p_intf->p_sys->b_playing )
             {
                 /* Update the slider if the user isn't dragging it. */
index 2084d491bec3a695b2e919acd5e71f3996fa45de..a9ff131c338cd98bf64896a9ff80e6c68abf3a45 100644 (file)
@@ -180,6 +180,7 @@ private:
     Interface *p_main_interface;
     int i_old_playing_status;
     int i_old_rate;
+    vlc_bool_t b_old_seekable;
 };
 
 /* Main Interface */