events: allow to remove disabled timers and handles

Trying to remove a disabled timer or handle will cause
virt_viewer_events_remove_{handle,timeout}() to return an error
rather than removing it.

Based on commit 79699d73e6e1b7218e3bd8349d176752f86128b9 from
libvirt-glib.
Original author: Christophe Fergeau <cfergeau@redhat.com>

Related to: rhbz#1243228
This commit is contained in:
Fabiano Fidêncio 2015-07-22 04:05:45 +02:00
parent 3281c47e8b
commit 4ec75ee70c

View File

@ -233,12 +233,11 @@ virt_viewer_events_remove_handle(int watch)
g_debug("Remove handle %d %d", watch, data->fd);
if (!data->source)
goto cleanup;
g_source_remove(data->source);
data->source = 0;
data->events = 0;
if (data->source != 0) {
g_source_remove(data->source);
data->source = 0;
data->events = 0;
}
/* since the actual watch deletion is done asynchronously, a update_handle call may
* reschedule the watch before it's fully deleted, that's why we need to mark it as
@ -409,11 +408,10 @@ virt_viewer_events_remove_timeout(int timer)
g_debug("Remove timeout %p %d", data, timer);
if (!data->source)
goto cleanup;
g_source_remove(data->source);
data->source = 0;
if (data->source != 0) {
g_source_remove(data->source);
data->source = 0;
}
/* since the actual timeout deletion is done asynchronously, a update_timeout call may
* reschedule the timeout before it's fully deleted, that's why we need to mark it as