X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d775fa82354a1f8d5db87ad1d71ab00ef7d9123c..b0c4316ebd9fd30c72f2cc72fab75772fe7c52c3:/src/common/socket.cpp diff --git a/src/common/socket.cpp b/src/common/socket.cpp index eb955def01..1acebe08f8 100644 --- a/src/common/socket.cpp +++ b/src/common/socket.cpp @@ -40,6 +40,7 @@ #include "wx/sckaddr.h" #include "wx/socket.h" +#include "wx/stopwatch.h" // DLL options compatibility check: #include "wx/build.h" @@ -132,6 +133,11 @@ bool wxSocketBase::Initialize() BTW, the main thread must not be stopped using sleep or block on a semaphore (a bad idea in any case) or socket operations will time out. + + On the Mac side, Initialize() stores a pointer to the CFRunLoop for + the main thread. Because secondary threads do not have run loops, + adding event notifications to the "Current" loop would have no + effect at all, events would never fire. */ wxASSERT_MSG( wxIsMainThread(), wxT("Call wxSocketBase::Initialize() from the main thread first!")); @@ -1148,6 +1154,8 @@ bool wxSocketServer::WaitForAccept(long seconds, long milliseconds) bool wxSocketBase::GetOption(int level, int optname, void *optval, int *optlen) { + wxASSERT_MSG( m_socket, _T("Socket not initialised") ); + if (m_socket->GetSockOpt(level, optname, optval, optlen) != GSOCK_NOERROR) { @@ -1159,6 +1167,8 @@ bool wxSocketBase::GetOption(int level, int optname, void *optval, int *optlen) bool wxSocketBase::SetOption(int level, int optname, const void *optval, int optlen) { + wxASSERT_MSG( m_socket, _T("Socket not initialised") ); + if (m_socket->SetSockOpt(level, optname, optval, optlen) != GSOCK_NOERROR) { @@ -1298,6 +1308,8 @@ wxDatagramSocket& wxDatagramSocket::SendTo( wxSockAddress& addr, const void* buf, wxUint32 nBytes ) { + wxASSERT_MSG( m_socket, _T("Socket not initialised") ); + m_socket->SetPeer(addr.GetAddress()); Write(buf, nBytes); return (*this);