X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2739d4f0528b324700973169b67750107568bf12..eabe6af8d99699e96d7ebcac0f2319aebeb4c533:/src/unix/utilsunx.cpp?ds=sidebyside diff --git a/src/unix/utilsunx.cpp b/src/unix/utilsunx.cpp index b6c1fe4bf7..2447a559fd 100644 --- a/src/unix/utilsunx.cpp +++ b/src/unix/utilsunx.cpp @@ -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" @@ -574,6 +577,9 @@ long wxExecute(wxChar **argv, { ARGS_CLEANUP; + // save it for WaitForChild() use + execData.pid = pid; + // prepare for IO redirection #if wxUSE_STREAMS @@ -1135,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(); @@ -1160,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 @@ -1180,5 +1202,4 @@ void wxHandleProcessTermination(wxEndProcessData *proc_data) } } -#endif // wxUSE_GUI - +#endif // wxUSE_BASE