+public:
+ wxMotifEventLoopSource(XtInputId inputId,
+ wxEventLoopSourceHandler *handler,
+ int flags)
+ : wxEventLoopSource(handler, flags),
+ m_inputId(inputId)
+ {
+ }
+
+ virtual ~wxMotifEventLoopSource()
+ {
+ XtRemoveInput(m_inputId);
+ }
+
+private:
+ const XtInputId m_inputId;
+
+ wxDECLARE_NO_COPY_CLASS(wxMotifEventLoopSource);
+};
+
+class wxMotifEventLoopSourcesManager : public wxEventLoopSourcesManagerBase
+{
+public:
+ wxEventLoopSource *
+ AddSourceForFD(int fd, wxEventLoopSourceHandler* handler, int flags)
+ {
+ wxCHECK_MSG( wxTheApp, NULL, "Must create wxTheApp first" );
+
+ // The XtInputXXXMask values cannot be combined (hence "Mask" is a
+ // complete misnomer), and supporting those would make the code more
+ // complicated and we don't need them for now.
+ wxCHECK_MSG( !(flags & (wxEVENT_SOURCE_OUTPUT |
+ wxEVENT_SOURCE_EXCEPTION)),
+ NULL,
+ "Monitoring FDs for output/errors not supported" );
+
+ wxCHECK_MSG( flags & wxEVENT_SOURCE_INPUT,
+ NULL,
+ "Should be monitoring for input" );
+
+ XtInputId inputId = XtAppAddInput
+ (
+ (XtAppContext) wxTheApp->GetAppContext(),