]> git.saurik.com Git - wxWidgets.git/commitdiff
Applied the two patches from Kevin for gsocket
authorRobert Roebling <robert@roebling.de>
Tue, 20 Apr 2004 18:54:39 +0000 (18:54 +0000)
committerRobert Roebling <robert@roebling.de>
Tue, 20 Apr 2004 18:54:39 +0000 (18:54 +0000)
  and wxGetTUCTime.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26882 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/stopwatch.cpp
src/unix/gsocket.c

index 1a6fcd064b6467cac59156d907a4004500b24b86..2db111c612f9c9615761a6b31d3b6185d078a534 100644 (file)
@@ -193,51 +193,9 @@ long wxGetLocalTime()
 // Get UTC time as seconds since 00:00:00, Jan 1st 1970
 long wxGetUTCTime()
 {
-    struct tm tm;
-    struct tm *ptm;
-    time_t t0, t1;
-
-    // This cannot be made static because mktime can overwrite it
-    //
-    memset(&tm, 0, sizeof(tm));
-    tm.tm_year  = 70;
-    tm.tm_mon   = 0;
-    tm.tm_mday  = 5;        // not Jan 1st 1970 due to mktime 'feature'
-    tm.tm_hour  = 0;
-    tm.tm_min   = 0;
-    tm.tm_sec   = 0;
-    tm.tm_isdst = -1;       // let mktime guess
-
-    // Note that mktime assumes that the struct tm contains local time.
-    //
-    t1 = time(&t1);         // now
-    t0 = mktime(&tm);       // origin in localtime
-
-    if (( t0 != (time_t)-1 ) && ( t1 != (time_t)-1 ))
-    {
-        // To get t0 as GMT we convert to a struct tm with gmtime,
-        // and then back again.
-        //
-        ptm = gmtime(&t0);
-
-        if (ptm)
-        {
-            memcpy(&tm, ptm, sizeof(tm));
-            t0 = mktime(&tm);
-
-            if (t0 != (time_t)-1 )
-                return (long)difftime(t1, t0) + (60 * 60 * 24 * 4);
-            wxLogSysError(_("mktime() failed"));
-        }
-        else
-        {
-            wxLogSysError(_("gmtime() failed"));
-        }
-    }
-
-    wxLogError(_("Failed to get the UTC system time."));
-
-    return -1;
+    long timenow = 0;
+    time(&timenow);
+    return timenow;
 }
 
 #if wxUSE_LONGLONG
index 3852eebd135f6902ef29edf07b2ccaf2afe084da..dd8bfc5a92e504309e5d95f2c5c5b26cf61df6b5 100644 (file)
@@ -800,27 +800,26 @@ int GSocket_Read(GSocket *socket, char *buffer, int size)
 
   assert(socket != NULL);
 
-  /* When using CFSocket we MUST NOT reenable events until we finish reading */
-#ifndef __DARWIN__
-  /* Reenable INPUT events */
-  _GSocket_Enable(socket, GSOCK_INPUT);
-#endif
-
   if (socket->m_fd == INVALID_SOCKET || socket->m_server)
   {
     socket->m_error = GSOCK_INVSOCK;
     return -1;
   }
 
+  /* Disable events during query of socket status */
+  _GSocket_Disable(socket, GSOCK_INPUT);
+    
   /* If the socket is blocking, wait for data (with a timeout) */
   if (_GSocket_Input_Timeout(socket) == GSOCK_TIMEDOUT)
-    return -1;
-
-  /* Read the data */
-  if (socket->m_stream)
-    ret = _GSocket_Recv_Stream(socket, buffer, size);
-  else
-    ret = _GSocket_Recv_Dgram(socket, buffer, size);
+    /* We no longer return here immediately, otherwise socket events would not be re-enabled! */
+    ret = -1;
+  else {
+    /* Read the data */
+    if (socket->m_stream)
+      ret = _GSocket_Recv_Stream(socket, buffer, size);
+    else
+      ret = _GSocket_Recv_Dgram(socket, buffer, size);
+  }
     
   if (ret == -1)
   {
@@ -830,11 +829,9 @@ int GSocket_Read(GSocket *socket, char *buffer, int size)
       socket->m_error = GSOCK_IOERR;
   }
   
-#ifdef __DARWIN__
-  /* Reenable INPUT events */
+  /* Enable events again now that we are done processing */
   _GSocket_Enable(socket, GSOCK_INPUT);
-#endif
-
+  
   return ret;
 }