diff -ruw vlc-snapshot-20050412_with_gui_flicker_diff\modules\gui\wxwindows\interface.cpp vlc_current\modules\gui\wxwindows\interface.cpp
--- vlc-snapshot-20050412_with_gui_flicker_diff\modules\gui\wxwindows\interface.cpp	Tue Apr 12 16:58:25 2005
+++ vlc_current\modules\gui\wxwindows\interface.cpp	Tue Apr 12 16:50:52 2005
@@ -212,6 +212,7 @@
     EVT_COMMAND(1, wxEVT_INTF, Interface::OnControlEvent)
 
     EVT_TIMER(ID_CONTROLS_TIMER, Interface::OnControlsTimer)
+    EVT_TIMER(ID_SLIDER_TIMER, Interface::OnSliderTimer)
 END_EVENT_TABLE()
 
 /*****************************************************************************
@@ -303,6 +304,7 @@
     SetupHotkeys();
 
     m_controls_timer.SetOwner(this, ID_CONTROLS_TIMER);
+    m_slider_timer.SetOwner(this, ID_SLIDER_TIMER);
 
     /* Start timer */
     timer = new Timer( p_intf, this );
@@ -677,6 +679,73 @@
     delete [] p_entries;
 }
 
+void Interface::HideSlider(bool layout)
+{
+  ShowSlider(false, layout);
+}
+
+void Interface::ShowSlider(bool show, bool layout)
+{
+  int size_to_video = config_GetInt( p_intf, "wxwin-size-to-video" );
+
+  if (show)
+  {
+    //prevent the hide timers from hiding it now
+    m_slider_timer.Stop();
+    m_controls_timer.Stop();
+
+    slider_frame->Show();
+    frame_sizer->Show( slider_frame );
+  }
+  else
+  {
+    slider_frame->Hide();
+    frame_sizer->Hide( slider_frame );
+  }
+
+  if (layout)
+  {
+    frame_sizer->Layout();
+    if (size_to_video)
+    {
+      frame_sizer->Fit( this );
+    }
+  }
+}
+
+void Interface::HideDiscFrame(bool layout)
+{
+  ShowDiscFrame(false, layout);
+}
+
+void Interface::ShowDiscFrame(bool show, bool layout)
+{
+  int size_to_video = config_GetInt( p_intf, "wxwin-size-to-video" );
+
+  if (show)
+  {
+    //prevent the hide timer from hiding it now
+    m_controls_timer.Stop();
+
+    disc_frame->Show();
+    slider_sizer->Show( disc_frame );
+  }
+  else
+  {
+    disc_frame->Hide();
+    slider_sizer->Hide( disc_frame );
+  }
+
+  if (layout)
+  {
+    slider_sizer->Layout();
+    if (size_to_video)
+    {
+      slider_sizer->Fit( slider_frame );
+    }
+  }
+}
+
 /*****************************************************************************
  * Event Handlers.
  *****************************************************************************/
@@ -686,21 +755,20 @@
   int size_to_video = config_GetInt( p_intf, "wxwin-size-to-video" );
   
   /* Hide slider and Disc Buttons */
-  disc_frame->Hide();
-  slider_sizer->Hide( disc_frame );
+  //postpone layout, we'll do it ourselves
+  HideDiscFrame(false);
+  HideSlider(false);
+
   slider_sizer->Layout();
   if (size_to_video)
   {
     slider_sizer->Fit( slider_frame );
   }
+}
 
-  slider_frame->Hide();
-  frame_sizer->Hide( slider_frame );
-  frame_sizer->Layout();
-  if (size_to_video)
+void Interface::OnSliderTimer(wxTimerEvent& WXUNUSED(event))
   {
-    frame_sizer->Fit( this );
-  }
+  HideSlider();
 }
 
 void Interface::OnMenuOpen(wxMenuEvent& event)
Only in vlc_current\modules\gui\wxwindows: interface.cpp.bak
diff -ruw vlc-snapshot-20050412_with_gui_flicker_diff\modules\gui\wxwindows\timer.cpp vlc_current\modules\gui\wxwindows\timer.cpp
--- vlc-snapshot-20050412_with_gui_flicker_diff\modules\gui\wxwindows\timer.cpp	Tue Apr 12 16:58:25 2005
+++ vlc_current\modules\gui\wxwindows\timer.cpp	Tue Apr 12 17:06:33 2005
@@ -132,8 +132,6 @@
         if( p_intf->p_sys->p_input )
         {
             p_main_interface->slider->SetValue( 0 );
-            b_slider_shown = VLC_FALSE;
-            b_disc_shown = VLC_FALSE;
 
             char *psz_now_playing = vlc_input_item_GetInfo(
                 p_intf->p_sys->p_input->input.p_item,
@@ -221,9 +219,8 @@
             var_Get( p_input, "position", &pos );
 
             var_Change( p_input, "title", VLC_VAR_CHOICESCOUNT, &val, NULL );
-            if( val.i_int > 0 && !b_disc_shown )
+            if( val.i_int > 0 && !p_main_interface->disc_menu_button->IsShown() )
             {
-                b_disc_shown = VLC_TRUE;
                 vlc_value_t val;
 
                     #define HELP_MENU N_("Menu")
@@ -262,47 +259,21 @@
                         wxU(_( HELP_NTR ) ) );
                 }
 
-                p_main_interface->disc_frame->Show();
-                p_main_interface->slider_sizer->Show(
-                    p_main_interface->disc_frame );
+                p_main_interface->ShowDiscFrame();
             }
 
-                if( pos.f_float > 0.0 )
-                {
-                    /* Done like this, as it's the only way to know if the */
-                    /* slider has to be displayed */
 
-                if( !b_slider_shown )
-                {
-                  b_slider_shown = 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();
-                  if (size_to_video)
+            if( pos.f_float > 0.0 )
                   {
-                    p_main_interface->frame_sizer->Fit( p_main_interface );
-                }
-            }
+                /* Show the slider if it's position is significant */
+                p_main_interface->ShowSlider();
             }
             else
             {
-                if( b_slider_shown )
-                {
-                  p_main_interface->slider_frame->Hide();
-                  p_main_interface->frame_sizer->Hide(
-                      p_main_interface->slider_frame );
-
-                  p_main_interface->frame_sizer->Layout();
-                  if (size_to_video)
-                  {
-                    p_main_interface->frame_sizer->Fit( p_main_interface );
-                  }
-                }
+                p_main_interface->m_slider_timer.Start(1000, wxTIMER_ONE_SHOT);
             }
 
-            if( p_intf->p_sys->b_playing && b_slider_shown )
+            if( p_intf->p_sys->b_playing && p_main_interface->slider_frame->IsShown() )
             {
                 /* Update the slider if the user isn't dragging it. */
                 if( p_intf->p_sys->b_slider_free )
@@ -337,16 +308,12 @@
             }
 #if 0
         vlc_mutex_lock( &p_input->stream.stream_lock );
-            if( p_intf->p_sys->p_input->stream.b_seekable && !b_slider_shown )
+            if( p_intf->p_sys->p_input->stream.b_seekable &&
+                !p_main_interface->slider_frame->IsShown() )
             {
                 /* Done like this because b_seekable is set slightly after
                  * the new input object is available. */
-                b_slider_shown = 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 );
+                p_main_interface->ShowSlider();
             }
             if( p_input->stream.b_seekable && p_intf->p_sys->b_playing )
             {
Only in vlc_current\modules\gui\wxwindows: timer.cpp.bak
diff -ruw vlc-snapshot-20050412_with_gui_flicker_diff\modules\gui\wxwindows\wxwindows.h vlc_current\modules\gui\wxwindows\wxwindows.h
--- vlc-snapshot-20050412_with_gui_flicker_diff\modules\gui\wxwindows\wxwindows.h	Tue Apr 12 16:58:25 2005
+++ vlc_current\modules\gui\wxwindows\wxwindows.h	Tue Apr 12 16:49:43 2005
@@ -89,6 +89,7 @@
 
 enum{
   ID_CONTROLS_TIMER,
+  ID_SLIDER_TIMER,
 };
 
 class DialogsProvider;
@@ -184,13 +185,14 @@
     virtual void Notify();
 
 private:
+    //use wxWindow::IsShown instead
+    //vlc_bool_t b_slider_shown;
+    //vlc_bool_t b_disc_shown;
     intf_thread_t *p_intf;
     Interface *p_main_interface;
     vlc_bool_t b_init;
     int i_old_playing_status;
     int i_old_rate;
-    vlc_bool_t b_slider_shown;
-    vlc_bool_t b_disc_shown;
 };
 
 
@@ -333,11 +335,17 @@
     wxBoxSizer  *frame_sizer;
     wxStatusBar *statusbar;
 
+    void HideSlider(bool layout = true);
+    void ShowSlider(bool show = true, bool layout = true);
+
     wxSlider    *slider;
     wxWindow    *slider_frame;
     wxBoxSizer  *slider_sizer;
     wxPanel     *extra_frame;
 
+    void HideDiscFrame(bool layout = true);
+    void ShowDiscFrame(bool show = true, bool layout = true);
+
     wxPanel         *disc_frame;
     wxBoxSizer      *disc_sizer;
     wxBitmapButton  *disc_menu_button;
@@ -356,6 +364,7 @@
 #endif
 
     wxTimer m_controls_timer;
+    wxTimer m_slider_timer;
 
 private:
     void SetupHotkeys();
@@ -367,6 +376,7 @@
 
     /* Event handlers (these functions should _not_ be virtual) */
     void OnControlsTimer(wxTimerEvent& WXUNUSED(event));
+    void OnSliderTimer(wxTimerEvent& WXUNUSED(event));
 
     void OnExit( wxCommandEvent& event );
     void OnAbout( wxCommandEvent& event );
Only in vlc_current\modules\gui\wxwindows: wxwindows.h.bak
