]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/utilsunx.cpp
workaround for blocking behaviour under carbon when running in classic
[wxWidgets.git] / src / unix / utilsunx.cpp
index bbec3070ae50a80b4885b88df897eafed9d23c81..2447a559fd4aa64cd3768eb362e36bdfa3d9a034 100644 (file)
@@ -15,6 +15,9 @@
 // headers
 // ----------------------------------------------------------------------------
 
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
 #include "wx/defs.h"
 #include "wx/string.h"
 
@@ -1138,14 +1141,27 @@ int wxGUIAppTraits::WaitForChild(wxExecuteData& execData)
         // process terminates
         while ( endProcData->pid != 0 )
         {
+            bool idle = true;
+
 #if wxUSE_STREAMS
             if ( execData.bufOut )
+            {
                 execData.bufOut->Update();
+                idle = false;
+            }
 
             if ( execData.bufErr )
+            {
                 execData.bufErr->Update();
+                idle = false;
+            }
 #endif // wxUSE_STREAMS
 
+            // don't consume 100% of the CPU while we're sitting this in this
+            // loop
+            if ( idle )
+                wxUsleep(1);
+
             // give GTK+ a chance to call GTK_EndProcessDetector here and
             // also repaint the GUI
             wxYield();
@@ -1163,6 +1179,9 @@ int wxGUIAppTraits::WaitForChild(wxExecuteData& execData)
     }
 }
 
+#endif // wxUSE_GUI
+#if wxUSE_BASE
+
 void wxHandleProcessTermination(wxEndProcessData *proc_data)
 {
     // notify user about termination if required
@@ -1183,5 +1202,4 @@ void wxHandleProcessTermination(wxEndProcessData *proc_data)
     }
 }
 
-#endif // wxUSE_GUI
-
+#endif // wxUSE_BASE