X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/eaf4bde6e6585874c4d21a355231813fe08040f6..bfabc7f47cf9f57e51c6f4c7173c58df52c365e7:/src/msw/utilsexc.cpp diff --git a/src/msw/utilsexc.cpp b/src/msw/utilsexc.cpp index e9f7ae28b5..cd4f5b86b2 100644 --- a/src/msw/utilsexc.cpp +++ b/src/msw/utilsexc.cpp @@ -82,6 +82,15 @@ #include "wx/msw/private/hiddenwin.h" +// FIXME-VC6: These are not defined in VC6 SDK headers. +#ifndef BELOW_NORMAL_PRIORITY_CLASS + #define BELOW_NORMAL_PRIORITY_CLASS 0x4000 +#endif + +#ifndef ABOVE_NORMAL_PRIORITY_CLASS + #define ABOVE_NORMAL_PRIORITY_CLASS 0x8000 +#endif + // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- @@ -192,46 +201,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxExecuteModule, wxModule) #if wxUSE_STREAMS && !defined(__WXWINCE__) -// ---------------------------------------------------------------------------- -// wxPipeStreams -// ---------------------------------------------------------------------------- - -class wxPipeInputStream: public wxInputStream -{ -public: - wxPipeInputStream(HANDLE hInput); - virtual ~wxPipeInputStream(); - - // returns true if the pipe is still opened - bool IsOpened() const { return m_hInput != INVALID_HANDLE_VALUE; } - - // returns true if there is any data to be read from the pipe - virtual bool CanRead() const; - -protected: - size_t OnSysRead(void *buffer, size_t len); - -protected: - HANDLE m_hInput; - - wxDECLARE_NO_COPY_CLASS(wxPipeInputStream); -}; - -class wxPipeOutputStream: public wxOutputStream -{ -public: - wxPipeOutputStream(HANDLE hOutput); - virtual ~wxPipeOutputStream() { Close(); } - bool Close(); - -protected: - size_t OnSysWrite(const void *buffer, size_t len); - -protected: - HANDLE m_hOutput; - - wxDECLARE_NO_COPY_CLASS(wxPipeOutputStream); -}; +#include "wx/private/pipestream.h" // define this to let wxexec.cpp know that we know what we're doing #define _WX_USED_BY_WXEXECUTE_ @@ -853,23 +823,26 @@ long wxExecute(const wxString& cmd, int flags, wxProcess *handler, } // Translate wxWidgets priority to Windows conventions. - unsigned prio = handler->GetPriority(); - if ( prio <= 20 ) - dwFlags |= IDLE_PRIORITY_CLASS; - else if ( prio <= 40 ) - dwFlags |= BELOW_NORMAL_PRIORITY_CLASS; - else if ( prio <= 60 ) - dwFlags |= NORMAL_PRIORITY_CLASS; - else if ( prio <= 80 ) - dwFlags |= ABOVE_NORMAL_PRIORITY_CLASS; - else if ( prio <= 99 ) - dwFlags |= HIGH_PRIORITY_CLASS; - else if ( prio <= 100 ) - dwFlags |= REALTIME_PRIORITY_CLASS; - else + if ( handler ) { - wxFAIL_MSG(wxT("invalid value of thread priority parameter")); - dwFlags |= THREAD_PRIORITY_NORMAL; + unsigned prio = handler->GetPriority(); + if ( prio <= 20 ) + dwFlags |= IDLE_PRIORITY_CLASS; + else if ( prio <= 40 ) + dwFlags |= BELOW_NORMAL_PRIORITY_CLASS; + else if ( prio <= 60 ) + dwFlags |= NORMAL_PRIORITY_CLASS; + else if ( prio <= 80 ) + dwFlags |= ABOVE_NORMAL_PRIORITY_CLASS; + else if ( prio <= 99 ) + dwFlags |= HIGH_PRIORITY_CLASS; + else if ( prio <= 100 ) + dwFlags |= REALTIME_PRIORITY_CLASS; + else + { + wxFAIL_MSG(wxT("invalid value of thread priority parameter")); + dwFlags |= NORMAL_PRIORITY_CLASS; + } } bool ok = ::CreateProcess