[gtk+] quartz: add evil casting to make sure time wraps correctly on 32bit machines



commit 78506bd604099161819ffdd0fdef98967f8980de
Author: Michael Natterer <mitch gimp org>
Date:   Thu Aug 23 09:28:13 2012 +0200

    quartz: add evil casting to make sure time wraps correctly on 32bit machines
    
    get_time_from_ns_event(): apply patch from Michael Hutchinson which
    makes sure the returned guint32 wraps correctly on 32 bit machines
    when the uptime exceeds 2^32 ms.

 gdk/quartz/gdkevents-quartz.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)
---
diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c
index 4921fcd..0c4c240 100644
--- a/gdk/quartz/gdkevents-quartz.c
+++ b/gdk/quartz/gdkevents-quartz.c
@@ -172,8 +172,11 @@ static guint32
 get_time_from_ns_event (NSEvent *event)
 {
   double time = [event timestamp];
-  
-  return time * 1000.0;
+
+  /* cast via double->uint64 conversion to make sure that it is
+   * wrapped on 32-bit machines when it overflows
+   */
+  return (guint32) (guint64) (time * 1000.0);
 }
 
 static int



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]