summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2018-05-21 16:31:32 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2018-05-21 16:33:38 +0300
commit34e9716fb28c4128d7cfee24a910a47abeb2aa98 (patch)
tree3a8d076f329649e09a2c2e52be3893e4ee511696
parentd93ee5f7009bbd81631bd7f8493486051a732a23 (diff)
events: Add a cleanup function
Add events to the watch list allocates memory. Add a cleanup function to free all memory at cleanup time without having to remove all events explicitly one by one. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--events.c11
-rw-r--r--events.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/events.c b/events.c
index dba054a..90d81c3 100644
--- a/events.c
+++ b/events.c
@@ -181,3 +181,14 @@ void events_init(struct events *events)
events->maxfd = 0;
list_init(&events->events);
}
+
+void events_cleanup(struct events *events)
+{
+ while (!list_empty(&events->events)) {
+ struct event_fd *event;
+
+ event = list_first_entry(&events->events, typeof(*event), list);
+ list_remove(&event->list);
+ free(event);
+ }
+}
diff --git a/events.h b/events.h
index ef8dccc..b0b8fa8 100644
--- a/events.h
+++ b/events.h
@@ -44,5 +44,6 @@ bool events_loop(struct events *events);
void events_stop(struct events *events);
void events_init(struct events *events);
+void events_cleanup(struct events *events);
#endif