X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/384b4373c7ce592248284787a97fa2909821e906..d4a23feeb2bb0f497cb2ce41bc54b8cb5d0528fe:/src/common/socket.cpp diff --git a/src/common/socket.cpp b/src/common/socket.cpp index e217cc6914..d8c728b137 100644 --- a/src/common/socket.cpp +++ b/src/common/socket.cpp @@ -31,6 +31,9 @@ #include #include +// Not enough OS behaviour defined for wxStubs +#ifndef __WXSTUBS__ + #include #include #include @@ -86,6 +89,7 @@ ///////////////////////////////////////////////////////////////////////////// // wxSocket headers ///////////////////////////////////////////////////////////////////////////// +#include "wx/module.h" #define WXSOCK_INTERNAL #include "wx/sckaddr.h" #include "wx/socket.h" @@ -114,7 +118,7 @@ #endif #ifdef __WXMOTIF__ -#define wxAPP_CONTEXT wxTheApp->appContext +#define wxAPP_CONTEXT ((XtAppContext)wxTheApp->GetAppContext()) #endif #ifdef __WINDOWS__ @@ -150,6 +154,17 @@ int PASCAL FAR __WSAFDIsSet(SOCKET fd, fd_set FAR *set) // Some patch ///// END ///////////////////////////////////////////////////////////////////////////// +// -------------------------------------------------------------- +// Module +// -------------------------------------------------------------- +class wxSocketModule: public wxModule { + DECLARE_DYNAMIC_CLASS(wxSocketModule) +public: + wxSocketModule() {} + bool OnInit(); + void OnExit(); +}; + // -------------------------------------------------------------- // ClassInfos // -------------------------------------------------------------- @@ -159,6 +174,7 @@ IMPLEMENT_CLASS(wxSocketServer, wxSocketBase) IMPLEMENT_CLASS(wxSocketClient, wxSocketBase) IMPLEMENT_CLASS(wxSocketHandler, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxSocketEvent, wxEvent) +IMPLEMENT_DYNAMIC_CLASS(wxSocketModule, wxModule) #endif class wxSockWakeUp : public wxTimer { @@ -458,11 +474,7 @@ bool wxSocketBase::GetPeer(wxSockAddress& addr_man) const if (m_fd < 0) return FALSE; -#ifdef __WINDOWS__ if (getpeername(m_fd, (struct sockaddr *)&my_addr, (int *)&len_addr) < 0) -#else - if (getpeername(m_fd, (struct sockaddr *)&my_addr, (unsigned int *)&len_addr) < 0) -#endif return FALSE; addr_man.Disassemble(&my_addr, len_addr); @@ -477,11 +489,7 @@ bool wxSocketBase::GetLocal(wxSockAddress& addr_man) const if (m_fd < 0) return FALSE; -#ifdef __WINDOWS__ if (getsockname(m_fd, (struct sockaddr *)&my_addr, (int *)&len_addr) < 0) -#else - if (getsockname(m_fd, (struct sockaddr *)&my_addr, (unsigned int *)&len_addr) < 0) -#endif return FALSE; addr_man.Disassemble(&my_addr, len_addr); @@ -1039,8 +1047,10 @@ void wxSocketBase::WantSpeedBuffer(char *buffer, size_t nbytes, if (ret < 0) { m_lcount = 0; m_error = errno; - } else + } else { m_lcount = ret; + m_error = 0; + } } void wxSocketBase::WantBuffer(char *buffer, size_t nbytes, @@ -1251,9 +1261,9 @@ bool wxSocketClient::Connect(wxSockAddress& addr_man, bool WXUNUSED(wait) ) return TRUE; } -bool wxSocketClient::WaitOnConnect(long seconds) +bool wxSocketClient::WaitOnConnect(long seconds, long microseconds) { - int ret = _Wait(seconds, 0, REQ_CONNECT | REQ_LOST); + int ret = _Wait(seconds, microseconds, REQ_CONNECT | REQ_LOST); if (ret) m_connected = TRUE; @@ -1296,6 +1306,11 @@ extern char wxPanelClassName[]; LRESULT APIENTRY _EXPORT wxSocketHandlerWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { + if(message==WM_DESTROY) + { + ::SetWindowLong(hWnd, GWL_WNDPROC, (LONG) DefWindowProc); + return DefWindowProc(hWnd, message, wParam, lParam); + } wxSocketHandler *h_sock = (wxSocketHandler *)GetWindowLong(hWnd, GWL_USERDATA); wxNode *node = h_sock->smsg_list->Find(message); wxSocketBase *sock; @@ -1545,3 +1560,16 @@ HWND wxSocketHandler::GetHWND() const } #endif + +bool wxSocketModule::OnInit() { + wxSocketHandler::master = new wxSocketHandler(); + return TRUE; +} + +void wxSocketModule::OnExit() { + delete wxSocketHandler::master; + wxSocketHandler::master = NULL; +} + +#endif + // __WXSTUBS__