Dec 18 12:51:39 1998 Owen Taylor <otaylor@redhat.com>
authorOwen Taylor <otaylor@src.gnome.org>
Fri, 18 Dec 1998 17:52:18 +0000 (17:52 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Fri, 18 Dec 1998 17:52:18 +0000 (17:52 +0000)
* gmain.c: Fix errors in computation of timeout
expiration times > 1sec.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
glib/gmain.c
gmain.c

index 4f3324d..89e13cb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Dec 18 12:51:39 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gmain.c: Fix errors in computation of timeout
+       expiration times > 1sec.
+
 1998-12-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * configure.in (have_threads): Changed the last pthread_cond_init
index 4f3324d..89e13cb 100644 (file)
@@ -1,3 +1,8 @@
+Fri Dec 18 12:51:39 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gmain.c: Fix errors in computation of timeout
+       expiration times > 1sec.
+
 1998-12-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * configure.in (have_threads): Changed the last pthread_cond_init
index 4f3324d..89e13cb 100644 (file)
@@ -1,3 +1,8 @@
+Fri Dec 18 12:51:39 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gmain.c: Fix errors in computation of timeout
+       expiration times > 1sec.
+
 1998-12-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * configure.in (have_threads): Changed the last pthread_cond_init
index 4f3324d..89e13cb 100644 (file)
@@ -1,3 +1,8 @@
+Fri Dec 18 12:51:39 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gmain.c: Fix errors in computation of timeout
+       expiration times > 1sec.
+
 1998-12-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * configure.in (have_threads): Changed the last pthread_cond_init
index 4f3324d..89e13cb 100644 (file)
@@ -1,3 +1,8 @@
+Fri Dec 18 12:51:39 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gmain.c: Fix errors in computation of timeout
+       expiration times > 1sec.
+
 1998-12-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * configure.in (have_threads): Changed the last pthread_cond_init
index 4f3324d..89e13cb 100644 (file)
@@ -1,3 +1,8 @@
+Fri Dec 18 12:51:39 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gmain.c: Fix errors in computation of timeout
+       expiration times > 1sec.
+
 1998-12-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * configure.in (have_threads): Changed the last pthread_cond_init
index 4f3324d..89e13cb 100644 (file)
@@ -1,3 +1,8 @@
+Fri Dec 18 12:51:39 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gmain.c: Fix errors in computation of timeout
+       expiration times > 1sec.
+
 1998-12-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * configure.in (have_threads): Changed the last pthread_cond_init
index 4f3324d..89e13cb 100644 (file)
@@ -1,3 +1,8 @@
+Fri Dec 18 12:51:39 1998  Owen Taylor  <otaylor@redhat.com>
+
+       * gmain.c: Fix errors in computation of timeout
+       expiration times > 1sec.
+
 1998-12-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * configure.in (have_threads): Changed the last pthread_cond_init
index 5fa9691..274c835 100644 (file)
@@ -832,8 +832,11 @@ g_timeout_dispatch (gpointer source_data,
 
   if (data->callback(user_data))
     {
-      data->expiration.tv_sec = current_time->tv_sec;
-      data->expiration.tv_usec = current_time->tv_usec + data->interval * 1000;
+      guint seconds = data->interval / 1000;
+      guint msecs = data->interval - seconds * 1000;
+
+      data->expiration.tv_sec = current_time->tv_sec + seconds;
+      data->expiration.tv_usec = current_time->tv_usec + msecs * 1000;
       if (data->expiration.tv_usec >= 1000000)
        {
          data->expiration.tv_usec -= 1000000;
@@ -852,13 +855,19 @@ g_timeout_add_full (gint           priority,
                    gpointer       data,
                    GDestroyNotify notify)
 {
+  guint seconds;
+  guint msecs;
   GTimeoutData *timeout_data = g_new (GTimeoutData, 1);
 
   timeout_data->interval = interval;
   timeout_data->callback = function;
   g_get_current_time (&timeout_data->expiration);
 
-  timeout_data->expiration.tv_usec += timeout_data->interval * 1000;
+  seconds = timeout_data->interval / 1000;
+  msecs = timeout_data->interval - seconds * 1000;
+
+  timeout_data->expiration.tv_sec += seconds;
+  timeout_data->expiration.tv_usec += msecs * 1000;
   if (timeout_data->expiration.tv_usec >= 1000000)
     {
       timeout_data->expiration.tv_usec -= 1000000;
diff --git a/gmain.c b/gmain.c
index 5fa9691..274c835 100644 (file)
--- a/gmain.c
+++ b/gmain.c
@@ -832,8 +832,11 @@ g_timeout_dispatch (gpointer source_data,
 
   if (data->callback(user_data))
     {
-      data->expiration.tv_sec = current_time->tv_sec;
-      data->expiration.tv_usec = current_time->tv_usec + data->interval * 1000;
+      guint seconds = data->interval / 1000;
+      guint msecs = data->interval - seconds * 1000;
+
+      data->expiration.tv_sec = current_time->tv_sec + seconds;
+      data->expiration.tv_usec = current_time->tv_usec + msecs * 1000;
       if (data->expiration.tv_usec >= 1000000)
        {
          data->expiration.tv_usec -= 1000000;
@@ -852,13 +855,19 @@ g_timeout_add_full (gint           priority,
                    gpointer       data,
                    GDestroyNotify notify)
 {
+  guint seconds;
+  guint msecs;
   GTimeoutData *timeout_data = g_new (GTimeoutData, 1);
 
   timeout_data->interval = interval;
   timeout_data->callback = function;
   g_get_current_time (&timeout_data->expiration);
 
-  timeout_data->expiration.tv_usec += timeout_data->interval * 1000;
+  seconds = timeout_data->interval / 1000;
+  msecs = timeout_data->interval - seconds * 1000;
+
+  timeout_data->expiration.tv_sec += seconds;
+  timeout_data->expiration.tv_usec += msecs * 1000;
   if (timeout_data->expiration.tv_usec >= 1000000)
     {
       timeout_data->expiration.tv_usec -= 1000000;