[libvirt] [PATCH][libvirt-glib] glib-events: Allow zero timeouts for timer

In libvirt, it's perfectly possible and widely used to have disabled timers (timeout=-1) and fire them up 'randomly' with timeout=0. However, with current mapping into glib mainloop it's not possible and causing troubles. --- libvirt-glib/libvirt-glib-event.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/libvirt-glib/libvirt-glib-event.c b/libvirt-glib/libvirt-glib-event.c index 94f4de8..c3eb3c8 100644 --- a/libvirt-glib/libvirt-glib-event.c +++ b/libvirt-glib/libvirt-glib-event.c @@ -384,7 +384,7 @@ gvir_event_timeout_update(int timer, if (interval >= 0) { if (data->source) - goto cleanup; + g_source_remove(data->source); data->interval = interval; data->source = g_timeout_add(data->interval, -- 1.7.8.5

On Tue, May 22, 2012 at 05:37:25PM +0200, Michal Privoznik wrote:
In libvirt, it's perfectly possible and widely used to have disabled timers (timeout=-1) and fire them up 'randomly' with timeout=0. However, with current mapping into glib mainloop it's not possible and causing troubles.
The code is more logical this way, when updating a timeout, we want to remove the currently pending timeout callback, and reschedule a new one with the updated value. Thanks a lot for tracking this down! Looks good to me, but better if someone else ACKs it since I suggested this change ;) Christophe
participants (2)
-
Christophe Fergeau
-
Michal Privoznik