diff options
| author | Ray Strode <rstrode@redhat.com> | 2008-05-14 00:12:28 -0400 |
|---|---|---|
| committer | Ray Strode <rstrode@redhat.com> | 2008-05-14 00:12:28 -0400 |
| commit | a2161452355fb684911905c45b69b4c13f493b29 (patch) | |
| tree | 5e3ee028eb27a1f2be73e3052e0e1ce9fac2dc5e /src | |
| parent | 4c9eacf999e6c7db149c92b69b86bd98145ac20c (diff) | |
| download | plymouth-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.c | 27 | ||||
| -rw-r--r-- | src/libply/ply-event-loop.h | 3 |
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, |
