#include "wx/os2/private.h"
-#if defined(__VISAGECPP__) && __IBMCPP__ < 400
-#include <machine\endian.h>
-#include <ioctl.h>
-#include <select.h>
-#include <unistd.h>
-#else
+#ifdef __EMX__
+
#include <sys\ioctl.h>
#include <sys\select.h>
+
+#else
+
+#include <nerrno.h>
+#include <ioctl.h>
+#include <select.h>
+
+#endif // ndef for __EMX__
+
#ifndef __EMX__
+
#define select(a,b,c,d,e) bsdselect(a,b,c,d,e)
int _System bsdselect(int,
struct fd_set *,
struct fd_set *,
struct fd_set *,
struct timeval *);
-#endif
+
#endif
#if wxUSE_THREADS
#define wxSockReadMask 0x01
#define wxSockWriteMask 0x02
+#ifdef __EMX__
extern "C"
int wxAppAddSocketHandler(int handle, int mask,
- void (*callback)(void*), void * gsock)
+ void (*callback)(void*), void * gsock)
{
return wxTheApp->AddSocketHandler(handle, mask, callback, gsock);
}
-
extern "C"
void wxAppRemoveSocketHandler(int handle)
{
wxTheApp->RemoveSocketHandler(handle);
}
+#else
+// Linkage mode problems using callbacks with extern C in a .cpp module
+int wxAppAddSocketHandler(int handle, int mask,
+ void (*callback)(void*), void * gsock)
+{
+ return wxTheApp->AddSocketHandler(handle, mask, callback, gsock);
+}
+void wxAppRemoveSocketHandler(int handle)
+{
+ wxTheApp->RemoveSocketHandler(handle);
+}
+#endif
void wxApp::HandleSockets()
{
- bool pendingEvent = false;
+ bool pendingEvent = FALSE;
// Check whether it's time for Gsocket operation
if (m_maxSocketHandles > 0 && m_maxSocketNr > 0)
if (r < m_maxSocketHandles)
{
CallbackInfo[r].proc(CallbackInfo[r].gsock);
- pendingEvent = true;
+ pendingEvent = TRUE;
wxYield();
}
}
if (r < m_maxSocketHandles)
{
CallbackInfo[r].proc(CallbackInfo[r].gsock);
- pendingEvent = true;
+ pendingEvent = TRUE;
wxYield();
}
}
}
#endif // wxUSE_THREADS
+ //
// Process the message
- if (!ProcessMessage((WXMSG *)&svCurrentMsg))
- {
- ::WinDispatchMsg(vHabmain, (PQMSG)&svCurrentMsg);
- }
+ //
+ DoMessage((WXMSG *)&svCurrentMsg);
}
return TRUE;
} // end of wxApp::DoMessage
+void wxApp::DoMessage(
+ WXMSG* pMsg
+)
+{
+ if (!ProcessMessage((WXMSG *)&svCurrentMsg))
+ {
+ ::WinDispatchMsg(vHabmain, (PQMSG)&svCurrentMsg);
+ }
+} // end of wxApp::DoMessage
+
//////////////////////////////////////////////////////////////////////////////
//
// Keep trying to process messages until WM_QUIT
wxLog::FlushActive();
#endif // wxUSE_LOG
+#if wxUSE_DC_CACHEING
+ // automated DC cache management: clear the cached DCs and bitmap
+ // if it's likely that the app has finished with them, that is, we
+ // get an idle event and we're not dragging anything.
+ if (!::WinGetKeyState(MK_LBUTTON) &&
+ !::WinGetKeyState(MK_MBUTTON) &&
+ !::WinGetKeyState(MK_RBUTTON))
+ wxDC::ClearCache();
+#endif // wxUSE_DC_CACHEING
+
//
// Send OnIdle events to all windows
//
{
if (gs_inYield)
return FALSE;
-
+
return wxYield();
}