Alexandre Julliard : server: Use the monotonic time counter also on the server side.

Alexandre Julliard julliard at winehq.org
Wed Jan 30 13:43:22 CST 2013


Module: wine
Branch: master
Commit: a74dc1a1195b38e0e04798799229a3aab8a021ef
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a74dc1a1195b38e0e04798799229a3aab8a021ef

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Jan 30 12:49:33 2013 +0100

server: Use the monotonic time counter also on the server side.

---

 server/Makefile.in |    6 +++---
 server/request.c   |   17 +++++++++++++++++
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/server/Makefile.in b/server/Makefile.in
index a2f1a52..2e9bba1 100644
--- a/server/Makefile.in
+++ b/server/Makefile.in
@@ -1,5 +1,5 @@
 DEFS      = -D__WINESRC__
-EXTRALIBS = @LIBPOLL@
+EXTRALIBS = @LIBPOLL@ @LIBRT@
 
 C_SRCS = \
 	async.c \
@@ -62,10 +62,10 @@ all: $(PROGRAMS)
 @MAKE_RULES@
 
 wineserver: $(OBJS)
-	$(CC) -o $@ $(OBJS) $(LIBWINE) $(LIBPORT) $(LDFLAGS) $(LIBS) $(LDRPATH_LOCAL)
+	$(CC) -o $@ $(OBJS) $(LIBWINE) $(LIBPORT) $(LDFLAGS) $(EXTRALIBS) $(LIBS) $(LDRPATH_LOCAL)
 
 wineserver-installed: $(OBJS)
-	$(CC) -o $@ $(OBJS) $(LIBWINE) $(LIBPORT) $(LDFLAGS) $(LIBS) $(LDRPATH_INSTALL)
+	$(CC) -o $@ $(OBJS) $(LIBWINE) $(LIBPORT) $(LDFLAGS) $(EXTRALIBS) $(LIBS) $(LDRPATH_INSTALL)
 
 install install-lib:: wineserver-installed $(DESTDIR)$(bindir) install-man-pages
 	$(INSTALL_PROGRAM) wineserver-installed $(DESTDIR)$(bindir)/wineserver
diff --git a/server/request.c b/server/request.c
index 8d6a7f9..eeb3476 100644
--- a/server/request.c
+++ b/server/request.c
@@ -51,6 +51,9 @@
 #ifdef HAVE_POLL_H
 #include <poll.h>
 #endif
+#ifdef __APPLE__
+# include <mach/mach_time.h>
+#endif
 
 #include "ntstatus.h"
 #define WIN32_NO_STATUS
@@ -486,6 +489,20 @@ int send_client_fd( struct process *process, int fd, obj_handle_t handle )
 /* get current tick count to return to client */
 unsigned int get_tick_count(void)
 {
+#ifdef HAVE_CLOCK_GETTIME
+    struct timespec ts;
+#ifdef CLOCK_MONOTONIC_RAW
+    if (!clock_gettime( CLOCK_MONOTONIC_RAW, &ts ))
+        return ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
+#endif
+    if (!clock_gettime( CLOCK_MONOTONIC, &ts ))
+        return ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
+#elif defined(__APPLE__)
+    static mach_timebase_info_data_t timebase;
+
+    if (!timebase.denom) mach_timebase_info( &timebase );
+    return mach_absolute_time() * timebase.numer / timebase.denom / 1000000;
+#endif
     return (current_time - server_start_time) / 10000;
 }
 




More information about the wine-cvs mailing list