Fix usage of nanosleep(). (#163039, Bastien Nocera)
authorMatthias Clasen <mclasen@redhat.com>
Mon, 21 Feb 2005 03:50:50 +0000 (03:50 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Mon, 21 Feb 2005 03:50:50 +0000 (03:50 +0000)
2005-02-20  Matthias Clasen  <mclasen@redhat.com>

* glib/gtimer.c (g_usleep): Fix usage of
nanosleep().  (#163039, Bastien Nocera)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-8
glib/gtimer.c

index 74da465..cb64020 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-20  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/gtimer.c (g_usleep): Fix usage of 
+       nanosleep().  (#163039, Bastien Nocera)
+
 2005-02-16  Adi Attar  <aattar@cvs.gnome.org>
 
        * configure.in: Added "xh" to ALL_LINGUAS.
index 74da465..cb64020 100644 (file)
@@ -1,3 +1,8 @@
+2005-02-20  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/gtimer.c (g_usleep): Fix usage of 
+       nanosleep().  (#163039, Bastien Nocera)
+
 2005-02-16  Adi Attar  <aattar@cvs.gnome.org>
 
        * configure.in: Added "xh" to ALL_LINGUAS.
index 74da465..cb64020 100644 (file)
@@ -1,3 +1,8 @@
+2005-02-20  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/gtimer.c (g_usleep): Fix usage of 
+       nanosleep().  (#163039, Bastien Nocera)
+
 2005-02-16  Adi Attar  <aattar@cvs.gnome.org>
 
        * configure.in: Added "xh" to ALL_LINGUAS.
index 74da465..cb64020 100644 (file)
@@ -1,3 +1,8 @@
+2005-02-20  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/gtimer.c (g_usleep): Fix usage of 
+       nanosleep().  (#163039, Bastien Nocera)
+
 2005-02-16  Adi Attar  <aattar@cvs.gnome.org>
 
        * configure.in: Added "xh" to ALL_LINGUAS.
index 6a05198..0a660f7 100644 (file)
@@ -240,8 +240,18 @@ g_usleep (gulong microseconds)
   struct timespec request, remaining;
   request.tv_sec = microseconds / G_USEC_PER_SEC;
   request.tv_nsec = 1000 * (microseconds % G_USEC_PER_SEC);
-  while (nanosleep (&request, &remaining) == EINTR)
-    request = remaining;
+  while (1)
+    {
+      if (nanosleep (&request, &remaining) == -1)
+       {
+          if (errno == EINTR)
+           request = remaining;
+         else 
+           break;
+       } 
+      else 
+       break;
+    }
 # else /* !HAVE_NANOSLEEP */
   if (g_thread_supported ())
     {