#include "wx/gsocket.h"
#include "wx/apptrait.h"
+#include "wx/link.h"
+
+wxFORCE_LINK_THIS_MODULE(gsockmsw)
extern "C" WXDLLIMPEXP_BASE HINSTANCE wxGetInstance();
#define INSTANCE wxGetInstance()
{
/* Remove the socket from the list */
EnterCriticalSection(&critical);
- if ( socket->IsOk() )
- {
- const int msgnum = socket->m_msgnumber;
+ const int msgnum = socket->m_msgnumber;
+ if ( msgnum )
+ {
// we need to remove any pending messages for this socket to avoid having
// them sent to a new socket which could reuse the same message number as
// soon as we destroy this one
socketList[msgnum - WM_USER] = NULL;
}
+ //else: the socket has never been created successfully
LeaveCriticalSection(&critical);
}
* destroyed) and for safety, check that the m_fd field
* is what we expect it to be.
*/
- if ((socket != NULL) && (socket->m_fd == wParam))
+ if ((socket != NULL) && ((WPARAM)socket->m_fd == wParam))
{
switch WSAGETSELECTEVENT(lParam)
{
if (event != -1)
{
- cback = socket->m_cbacks[event];
- data = socket->m_data[event];
-
if (event == GSOCK_LOST)
socket->m_detected = GSOCK_LOST_FLAG;
else
}
}
- /* OK, we can now leave the critical section because we have
- * already obtained the callback address (we make no further
- * accesses to socket->whatever). However, the app should
- * be prepared to handle events from a socket that has just
- * been closed!
- */
LeaveCriticalSection(&critical);
- if (cback != NULL)
- (cback)(socket, event, data);
+ if ( socket )
+ socket->NotifyOnStateChange(event);
return (LRESULT) 0;
}
static GSocketMSWManager s_manager;
wxAppTraits::SetDefaultSocketManager(&s_manager);
}
-} gsm_managerSetter;
+} gs_managerSetter;
#endif // wxUSE_SOCKETS