From cb9f361112a46ee65eb54b21762546cad23a635a Mon Sep 17 00:00:00 2001 From: ajacoutot Date: Tue, 4 Oct 2011 05:35:26 +0000 Subject: [PATCH] Fix an infinite loop in GnomeWallClock, from upstream. --- x11/gnome/desktop/Makefile | 3 +- ...h-libgnome-desktop_gnome-datetime-source_c | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 x11/gnome/desktop/patches/patch-libgnome-desktop_gnome-datetime-source_c diff --git a/x11/gnome/desktop/Makefile b/x11/gnome/desktop/Makefile index 0a63301d688..818e46ad307 100644 --- a/x11/gnome/desktop/Makefile +++ b/x11/gnome/desktop/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.80 2011/09/28 09:47:46 jasper Exp $ +# $OpenBSD: Makefile,v 1.81 2011/10/04 05:35:26 ajacoutot Exp $ SHARED_ONLY= Yes @@ -6,6 +6,7 @@ COMMENT= components for the GNOME desktop GNOME_PROJECT= gnome-desktop GNOME_VERSION= 3.2.0 +REVISION= 0 SHARED_LIBS += gnome-desktop-3 1.0 # 2.1 diff --git a/x11/gnome/desktop/patches/patch-libgnome-desktop_gnome-datetime-source_c b/x11/gnome/desktop/patches/patch-libgnome-desktop_gnome-datetime-source_c new file mode 100644 index 00000000000..7c152a40f34 --- /dev/null +++ b/x11/gnome/desktop/patches/patch-libgnome-desktop_gnome-datetime-source_c @@ -0,0 +1,35 @@ +$OpenBSD: patch-libgnome-desktop_gnome-datetime-source_c,v 1.1 2011/10/04 05:35:26 ajacoutot Exp $ + +From 7033804a455ccd39997632c164b5fae3e4fedac4 Mon Sep 17 00:00:00 2001 +From: Colin Walters +Date: Mon, 03 Oct 2011 20:35:20 +0000 +Subject: GnomeWallClock: Fix non-Linux fallback code + +--- libgnome-desktop/gnome-datetime-source.c.orig Mon Sep 5 08:54:41 2011 ++++ libgnome-desktop/gnome-datetime-source.c Tue Oct 4 07:29:59 2011 +@@ -57,8 +57,10 @@ static gboolean + g_datetime_source_is_expired (GDateTimeSource *datetime_source) + { + gint64 real_now; ++ gint64 monotonic_now; + + real_now = g_get_real_time (); ++ monotonic_now = g_source_get_time ((GSource*)datetime_source); + + if (datetime_source->initially_expired) + return TRUE; +@@ -66,10 +68,11 @@ g_datetime_source_is_expired (GDateTimeSource *datetim + if (datetime_source->real_expiration <= real_now) + return TRUE; + +- /* We can't really detect without system support when things change; +- * so just trigger every second. ++ /* We can't really detect without system support when things ++ * change; so just trigger every second (i.e. our wakeup ++ * expiration) + */ +- if (datetime_source->cancel_on_set) ++ if (datetime_source->cancel_on_set && monotonic_now >= datetime_source->wakeup_expiration) + return TRUE; + + return FALSE;