From ccf8bf20ca0c39045a8dafe610910b5b3f8a13df Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 15 Jul 2013 15:14:53 +0000 Subject: [PATCH] Fix new wxExecute() code compilation with wxUSE_CONSOLE_EVENTLOOP==0. Nothing is going to work without the console apps/base traits support for the event loop but at least make it compile. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74531 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/unix/apptbase.h | 2 ++ src/common/evtloopcmn.cpp | 4 ++++ src/unix/utilsunx.cpp | 14 ++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/include/wx/unix/apptbase.h b/include/wx/unix/apptbase.h index 1d50851258..82abe55254 100644 --- a/include/wx/unix/apptbase.h +++ b/include/wx/unix/apptbase.h @@ -49,9 +49,11 @@ public: virtual wxFDIOManager *GetFDIOManager(); #endif // wxUSE_SOCKETS +#if wxUSE_CONSOLE_EVENTLOOP // Return a non-NULL pointer to the object responsible for managing the // event loop sources in this kind of application. virtual wxEventLoopSourcesManagerBase* GetEventLoopSourcesManager(); +#endif // wxUSE_CONSOLE_EVENTLOOP protected: // Wait for the process termination by running the given event loop until diff --git a/src/common/evtloopcmn.cpp b/src/common/evtloopcmn.cpp index bcc3472e8f..2408d6e26b 100644 --- a/src/common/evtloopcmn.cpp +++ b/src/common/evtloopcmn.cpp @@ -124,12 +124,16 @@ wxEventLoopBase::AddSourceForFD(int fd, wxEventLoopSourceHandler *handler, int flags) { +#if wxUSE_CONSOLE_EVENTLOOP // Delegate to the event loop sources manager defined by it. wxEventLoopSourcesManagerBase* const manager = wxApp::GetValidTraits().GetEventLoopSourcesManager(); wxCHECK_MSG( manager, NULL, wxS("Must have wxEventLoopSourcesManager") ); return manager->AddSourceForFD(fd, handler, flags); +#else // !wxUSE_CONSOLE_EVENTLOOP + return NULL; +#endif // wxUSE_CONSOLE_EVENTLOOP/!wxUSE_CONSOLE_EVENTLOOP } #endif // wxUSE_EVENTLOOP_SOURCE diff --git a/src/unix/utilsunx.cpp b/src/unix/utilsunx.cpp index d757498cc3..1a8c0b6ad3 100644 --- a/src/unix/utilsunx.cpp +++ b/src/unix/utilsunx.cpp @@ -48,6 +48,7 @@ #include "wx/private/selectdispatcher.h" #include "wx/private/fdiodispatcher.h" #include "wx/unix/execute.h" +#include "wx/unix/pipe.h" #include "wx/unix/private.h" #include "wx/evtloop.h" @@ -499,6 +500,8 @@ int BlockUntilChildExit(wxExecuteData& execData) wxCHECK_MSG( wxTheApp, -1, wxS("Can't block until child exit without wxTheApp") ); +#if wxUSE_SELECT_DISPATCHER + // Even if we don't want to dispatch events, we still need to handle // child IO notifications and process termination concurrently, i.e. // we can't simply block waiting for the child to terminate as we would @@ -553,6 +556,11 @@ int BlockUntilChildExit(wxExecuteData& execData) } return execData.exitcode; +#else // !wxUSE_SELECT_DISPATCHER + wxFAIL_MSG( wxS("Can't block until child exit without wxSelectDispatcher") ); + + return -1; +#endif // wxUSE_SELECT_DISPATCHER/!wxUSE_SELECT_DISPATCHER } } // anonymous namespace @@ -1407,8 +1415,14 @@ bool wxHandleFatalExceptions(bool doit) int wxAppTraits::WaitForChild(wxExecuteData& execData) { +#if wxUSE_CONSOLE_EVENTLOOP wxConsoleEventLoop loop; return RunLoopUntilChildExit(execData, loop); +#else // !wxUSE_CONSOLE_EVENTLOOP + wxFAIL_MSG( wxS("Can't wait for child process without wxConsoleEventLoop") ); + + return -1; +#endif // wxUSE_CONSOLE_EVENTLOOP/!wxUSE_CONSOLE_EVENTLOOP } // This function is common code for both console and GUI applications and used -- 2.45.2