71e9885be0
Any event sources should be registered with all the event loops, including the ones that will be started in the future, and not only the current (and potentially not even existing yet) one. So make AddSourceForFD() method static. To still allow it to do different things in console and GUI applications, as it must, virtualize it via the new wxEventLoopSourcesManager class which has different implementations in the two cases, returned via wxAppTraits as usual. Notice that this required moving the implementation of this method from src/osx/core/evtloop_cf.cpp to src/osx/core/utilsexc_cf.cpp as the former file is base-only and didn't have access to wxGUIAppTraits. See #10258. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74341 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
73 lines
2.8 KiB
C++
73 lines
2.8 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/unix/apptbase.h
|
|
// Purpose: declaration of wxAppTraits for Unix systems
|
|
// Author: Vadim Zeitlin
|
|
// Modified by:
|
|
// Created: 23.06.2003
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) 2003 Vadim Zeitlin <vadim@wxwidgets.org>
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_UNIX_APPTBASE_H_
|
|
#define _WX_UNIX_APPTBASE_H_
|
|
|
|
struct wxEndProcessData;
|
|
struct wxExecuteData;
|
|
class wxFDIOManager;
|
|
class wxEventLoopSourcesManagerBase;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxAppTraits: the Unix version adds extra hooks needed by Unix code
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_BASE wxAppTraits : public wxAppTraitsBase
|
|
{
|
|
public:
|
|
// wxExecute() support methods
|
|
// ---------------------------
|
|
|
|
// wait for the process termination, return whatever wxExecute() must
|
|
// return
|
|
//
|
|
// base class implementation handles all cases except wxEXEC_SYNC without
|
|
// wxEXEC_NOEVENTS one which is implemented at the GUI level
|
|
virtual int WaitForChild(wxExecuteData& execData);
|
|
|
|
// integrate the monitoring of the given fd with the port-specific event
|
|
// loop: when this fd, which corresponds to a dummy pipe opened between the
|
|
// parent and child processes, is closed by the child, the parent is
|
|
// notified about this via a call to wxHandleProcessTermination() function
|
|
//
|
|
// the default implementation uses wxFDIODispatcher and so is suitable for
|
|
// the console applications or ports which don't have any specific event
|
|
// loop
|
|
virtual int AddProcessCallback(wxEndProcessData *data, int fd);
|
|
|
|
#if wxUSE_SOCKETS
|
|
// return a pointer to the object which should be used to integrate
|
|
// monitoring of the file descriptors to the event loop (currently this is
|
|
// used for the sockets only but should be used for arbitrary event loop
|
|
// sources in the future)
|
|
//
|
|
// this object may be different for the console and GUI applications
|
|
//
|
|
// the pointer is not deleted by the caller as normally it points to a
|
|
// static variable
|
|
virtual wxFDIOManager *GetFDIOManager();
|
|
#endif // wxUSE_SOCKETS
|
|
|
|
// Return a non-NULL pointer to the object responsible for managing the
|
|
// event loop sources in this kind of application.
|
|
virtual wxEventLoopSourcesManagerBase* GetEventLoopSourcesManager();
|
|
|
|
protected:
|
|
// a helper for the implementation of WaitForChild() in wxGUIAppTraits:
|
|
// checks the streams used for redirected IO in execData and returns true
|
|
// if there is any activity in them
|
|
bool CheckForRedirectedIO(wxExecuteData& execData);
|
|
};
|
|
|
|
#endif // _WX_UNIX_APPTBASE_H_
|
|
|