From c17091b79773e9c458f03a897b26c2257d7366a7 Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Mon, 22 Sep 2014 18:05:19 +0200 Subject: terminal: signal object removal during sysview_context_stop() Now that we no longer propagate callback return values, we can safely call into user-callbacks during sysview_context_stop(). This way, users can rely on all objects to be removed via callbacks (except if they failed during object creation). This avoids duplicating any object hashtables on the users' side and reduces memory consumption. --- src/libsystemd-terminal/evcat.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/libsystemd-terminal/evcat.c') diff --git a/src/libsystemd-terminal/evcat.c b/src/libsystemd-terminal/evcat.c index b3f08e60bf..62556f6a2b 100644 --- a/src/libsystemd-terminal/evcat.c +++ b/src/libsystemd-terminal/evcat.c @@ -330,7 +330,8 @@ static int evcat_sysview_fn(sysview_context *c, void *userdata, sysview_event *e case SYSVIEW_EVENT_SESSION_REMOVE: idev_session_disable(e->idev_session); e->idev_session = idev_session_free(e->idev_session); - sd_event_exit(e->event, 0); + if (sd_event_get_exit_code(e->event, &r) == -ENODATA) + sd_event_exit(e->event, 0); break; case SYSVIEW_EVENT_SESSION_ATTACH: d = ev->session_attach.device; -- cgit v1.2.3-54-g00ecf