]> git.saurik.com Git - wxWidgets.git/commitdiff
fix drawing from Update() being overwritten, fixes wxBusyInfo not drawing properly...
authorPaul Cornett <paulcor@bullseye.com>
Sun, 1 Feb 2009 06:20:54 +0000 (06:20 +0000)
committerPaul Cornett <paulcor@bullseye.com>
Sun, 1 Feb 2009 06:20:54 +0000 (06:20 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58583 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/busyinfo.cpp
src/gtk/window.cpp

index 26c875b43a67b70749519392ba4f0cbcbfe4a8e1..ca53631e333129b4e961168562176cb2ee387b6d 100644 (file)
@@ -124,14 +124,6 @@ wxBusyInfo::wxBusyInfo(const wxString& message, wxWindow *parent)
     m_InfoFrame->Show(true);
     m_InfoFrame->Refresh();
     m_InfoFrame->Update();
-
-#ifdef __WXGTK20__
-    // FIXME: this is pretty bad, as any call to Yield(), but without it, the
-    //         static text is never shown and neither gdk_display_flush() nor
-    //         gdk_display_sync() nor gdk_window_process_updates() helps
-    wxMilliSleep(100);
-    wxYield();
-#endif
 }
 
 wxBusyInfo::~wxBusyInfo()
index 830bfe04318411bc41b4de931919a32dd3bd412b..e0d7ae039d99ca722b4a2421e1a0b10952082ed7 100644 (file)
@@ -3570,13 +3570,16 @@ void wxWindowGTK::Refresh(bool WXUNUSED(eraseBackground),
 
 void wxWindowGTK::Update()
 {
-    GtkUpdate();
-
-    // when we call Update() we really want to update the window immediately on
-    // screen, even if it means flushing the entire queue and hence slowing down
-    // everything -- but it should still be done, it's just that Update() should
-    // be called very rarely
-    gdk_flush();
+    if (m_widget)
+    {
+        GdkDisplay* display = gtk_widget_get_display(m_widget);
+        // Flush everything out to the server, and wait for it to finish.
+        // This ensures nothing will overwrite the drawing we are about to do.
+        gdk_display_sync(display);
+        GtkUpdate();
+        // Flush again, but no need to wait for it to finish
+        gdk_display_flush(display);
+    }
 }
 
 void wxWindowGTK::GtkUpdate()