eventLoop = NULL;
}
+ // reset them before starting to wait
+ m_eventsgot = 0;
+
// Wait in an active polling loop: notice that the loop is executed at
// least once, even if timeout is 0 (i.e. polling).
bool gotEvent = false;
for ( ;; )
{
- // We always stop waiting when the connection is lost as it doesn't
- // make sense to continue further, even if wxSOCKET_LOST_FLAG is not
- // specified in flags to wait for.
- const wxSocketEventFlags
- result = m_impl->Select(flags | wxSOCKET_LOST_FLAG);
+ wxSocketEventFlags events;
+ if ( eventLoop )
+ {
+ // This function is only called if wxSOCKET_BLOCK flag was not used
+ // and so we should dispatch the events if there is an event loop
+ // capable of doing it.
+ if ( eventLoop->Pending() )
+ eventLoop->Dispatch();
+
+ events = m_eventsgot;
+ }
+ else
+ {
+ // We always stop waiting when the connection is lost as it doesn't
+ // make sense to continue further, even if wxSOCKET_LOST_FLAG is
+ // not specified in flags to wait for.
+ events = m_impl->Select(flags | wxSOCKET_LOST_FLAG);
+ }
// Incoming connection (server) or connection established (client)?
- if ( result & wxSOCKET_CONNECTION_FLAG )
+ if ( events & wxSOCKET_CONNECTION_FLAG )
{
m_connected = true;
m_establishing = false;
}
// Data available or output buffer ready?
- if ( (result & wxSOCKET_INPUT_FLAG) || (result & wxSOCKET_OUTPUT_FLAG) )
+ if ( (events & wxSOCKET_INPUT_FLAG) || (events & wxSOCKET_OUTPUT_FLAG) )
{
gotEvent = true;
break;
}
// Connection lost
- if ( result & wxSOCKET_LOST_FLAG )
+ if ( events & wxSOCKET_LOST_FLAG )
{
m_connected = false;
m_establishing = false;
if ( timeNow >= timeEnd )
break;
- if ( eventLoop )
- {
- // This function is only called if wxSOCKET_BLOCK flag was not used
- // and so we should dispatch the events if there is an event loop
- // capable of doing it.
- if ( eventLoop->Pending() )
- eventLoop->Dispatch();
- }
#if wxUSE_THREADS
- else // no event loop or waiting in another thread
+ // no event loop or waiting in another thread
+ if ( !eventLoop )
{
// We're busy waiting but at least give up the rest of our current
// time slice.