summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2008-05-14 00:12:28 -0400
committerRay Strode <rstrode@redhat.com>2008-05-14 00:12:28 -0400
commita2161452355fb684911905c45b69b4c13f493b29 (patch)
tree5e3ee028eb27a1f2be73e3052e0e1ce9fac2dc5e /src
parent4c9eacf999e6c7db149c92b69b86bd98145ac20c (diff)
downloadplymouth-a2161452355fb684911905c45b69b4c13f493b29.tar.gz
plymouth-a2161452355fb684911905c45b69b4c13f493b29.tar.xz
plymouth-a2161452355fb684911905c45b69b4c13f493b29.zip
Add new function to be able to cancel event loop exit watches
Diffstat (limited to 'src')
-rw-r--r--src/libply/ply-event-loop.c27
-rw-r--r--src/libply/ply-event-loop.h3
2 files changed, 30 insertions, 0 deletions
diff --git a/src/libply/ply-event-loop.c b/src/libply/ply-event-loop.c
index 6ff1bee..d8118b6 100644
--- a/src/libply/ply-event-loop.c
+++ b/src/libply/ply-event-loop.c
@@ -833,6 +833,33 @@ ply_event_loop_watch_for_exit (ply_event_loop_t *loop,
}
void
+ply_event_loop_stop_watching_for_exit (ply_event_loop_t *loop,
+ ply_event_loop_exit_handler_t exit_handler,
+ void *user_data)
+{
+ ply_list_node_t *node;
+
+ node = ply_list_get_first_node (loop->exit_closures);
+ while (node != NULL)
+ {
+ ply_list_node_t *next_node;
+ ply_event_loop_exit_closure_t *closure;
+
+ closure = (ply_event_loop_exit_closure_t *) ply_list_node_get_data (node);
+ next_node = ply_list_get_next_node (loop->exit_closures, node);
+
+ if (closure->handler == exit_handler &&
+ closure->user_data == user_data) {
+ ply_list_remove_node (loop->exit_closures, node);
+ free (closure);
+ break;
+ }
+
+ node = next_node;
+ }
+}
+
+void
ply_event_loop_watch_for_timeout (ply_event_loop_t *loop,
double seconds,
ply_event_loop_timeout_handler_t timeout_handler,
diff --git a/src/libply/ply-event-loop.h b/src/libply/ply-event-loop.h
index 46ce294..c80e3fc 100644
--- a/src/libply/ply-event-loop.h
+++ b/src/libply/ply-event-loop.h
@@ -66,6 +66,9 @@ void ply_event_loop_stop_watching_signal (ply_event_loop_t *loop,
void ply_event_loop_watch_for_exit (ply_event_loop_t *loop,
ply_event_loop_exit_handler_t exit_handler,
void *user_data);
+void ply_event_loop_stop_watching_for_exit (ply_event_loop_t *loop,
+ ply_event_loop_exit_handler_t exit_handler,
+ void *user_data);
void ply_event_loop_watch_for_timeout (ply_event_loop_t *loop,
double seconds,
ply_event_loop_timeout_handler_t timeout_handler,