]> git.saurik.com Git - wxWidgets.git/commitdiff
use struct timeval and not a long to store socket timeout under Unix too
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 23 Nov 2008 13:39:12 +0000 (13:39 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 23 Nov 2008 13:39:12 +0000 (13:39 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56940 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gsocket.h
src/common/socket.cpp
src/unix/gsocket.cpp

index e7d362e24720051d926e4a424c3b1304316782a1..cb34121e1731a7fe91e9bd037b3eca69a4088076 100644 (file)
@@ -37,6 +37,8 @@ class WXDLLIMPEXP_FWD_NET wxSocketBase;
 #include <stdlib.h>
 #endif
 
+#include <time.h>       // for timeval
+
 enum GAddressType
 {
   GSOCK_NOFAMILY = 0,
@@ -215,11 +217,7 @@ public:
     bool m_broadcast;
     bool m_dobind;
 
-#ifdef __WINDOWS__
     struct timeval m_timeout;
-#else
-    unsigned long m_timeout;
-#endif
 
     GSocketEventFlags m_detected;
 
index 6826063517a1e61a425dded4ebf63c2c10cf3c8f..a1e3be8456dcbdea27514589f88cb5139abd0593 100644 (file)
@@ -231,12 +231,8 @@ void GSocketBase::Shutdown()
  */
 void GSocketBase::SetTimeout(unsigned long millis)
 {
-#ifdef __WXMSW__
     m_timeout.tv_sec  = (millis / 1000);
     m_timeout.tv_usec = (millis % 1000) * 1000;
-#else
-    m_timeout = millis;
-#endif
 }
 
 void GSocketBase::NotifyOnStateChange(GSocketEvent event)
index 77a818bf6daded65c58ee32e9ac02eb46ff2c2e3..95d59e581b9fbe13304db7305ca5dacd1a3f58be 100644 (file)
@@ -1161,13 +1161,11 @@ void GSocket::Disable(GSocketEvent event)
  */
 GSocketError GSocket::Input_Timeout()
 {
-  struct timeval tv;
   fd_set readfds;
   int ret;
 
-  /* Linux select() will overwrite the struct on return */
-  tv.tv_sec  = (m_timeout / 1000);
-  tv.tv_usec = (m_timeout % 1000) * 1000;
+  // Linux select() will overwrite the struct on return so make a copy
+  struct timeval tv = m_timeout;
 
   if (!m_non_blocking)
   {
@@ -1202,13 +1200,11 @@ GSocketError GSocket::Input_Timeout()
  */
 GSocketError GSocket::Output_Timeout()
 {
-  struct timeval tv;
   fd_set writefds;
   int ret;
 
-  /* Linux select() will overwrite the struct on return */
-  tv.tv_sec  = (m_timeout / 1000);
-  tv.tv_usec = (m_timeout % 1000) * 1000;
+  // Linux select() will overwrite the struct on return so make a copy
+  struct timeval tv = m_timeout;
 
   GSocket_Debug( ("m_non_blocking has: %d\n", (int)m_non_blocking) );