X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5109ae5d178fb4025c6b92bb2f840c07dae99a82..1978421a6d8b81c1f8a961da4b8ddf544fec7b1b:/src/os2/app.cpp?ds=sidebyside diff --git a/src/os2/app.cpp b/src/os2/app.cpp index 8af1146ac7..84687d9924 100644 --- a/src/os2/app.cpp +++ b/src/os2/app.cpp @@ -166,15 +166,13 @@ void wxApp::HandleSockets() int i; struct GsocketCallbackInfo *CallbackInfo = (struct GsocketCallbackInfo *)m_sockCallbackInfo; - int r = 0; timeout.tv_sec = 0; timeout.tv_usec = 0; if ( select(m_maxSocketNr, &readfds, &writefds, 0, &timeout) > 0) { - for (i = m_lastUsedHandle + 1; i != m_lastUsedHandle; i++) + for (i = m_lastUsedHandle + 1; i != m_lastUsedHandle; + (i < m_maxSocketNr - 1) ? i++ : (i = 0)) { - if (i == m_maxSocketNr) - i = 0; if (FD_ISSET(i, &readfds)) { int r; @@ -187,7 +185,6 @@ void wxApp::HandleSockets() { CallbackInfo[r].proc(CallbackInfo[r].gsock); pendingEvent = TRUE; - wxYield(); } } if (FD_ISSET(i, &writefds)) @@ -201,14 +198,13 @@ void wxApp::HandleSockets() { CallbackInfo[r].proc(CallbackInfo[r].gsock); pendingEvent = TRUE; - wxYield(); } } } m_lastUsedHandle = i; } if (pendingEvent) - wxYield(); + ProcessPendingEvents(); } } // --------------------------------------------------------------------------- @@ -646,13 +642,13 @@ int wxApp::MainLoop() while (!Pending() && ProcessIdle()) { HandleSockets(); - wxUsleep(10000); + wxUsleep(10); } HandleSockets(); if (Pending()) DoMessage(); else - wxUsleep(10000); + wxUsleep(10); } return (int)svCurrentMsg.mp1; @@ -777,25 +773,8 @@ void wxApp::OnIdle( return; gbInOnIdle = TRUE; - - // - // If there are pending events, we must process them: pending events - // are either events to the threads other than main or events posted - // with wxPostEvent() functions - // - ProcessPendingEvents(); - - // - // 'Garbage' collection of windows deleted with Close(). - // - DeletePendingObjects(); - -#if wxUSE_LOG - // - // Flush the logged messages if any - // - wxLog::FlushActive(); -#endif // wxUSE_LOG + + wxAppBase::OnIdle(event); #if wxUSE_DC_CACHEING // automated DC cache management: clear the cached DCs and bitmap @@ -807,21 +786,6 @@ void wxApp::OnIdle( wxDC::ClearCache(); #endif // wxUSE_DC_CACHEING - // Now done in ProcessIdle() -#if 0 - // - // Send OnIdle events to all windows - // - if (SendIdleEvents()) - { - // - // SendIdleEvents() returns TRUE if at least one window requested more - // idle events - // - rEvent.RequestMore(TRUE); - } -#endif - gbInOnIdle = FALSE; } // end of wxApp::OnIdle @@ -901,6 +865,7 @@ bool wxApp::Yield(bool onlyIfNeeded) if (wxTheApp) wxTheApp->ProcessPendingEvents(); + HandleSockets(); // // Let the logs be flashed again //