From a9dfcaadffbae3214d0e157b6ddbfc9dcdd5c00a Mon Sep 17 00:00:00 2001 From: Pierre d'Herbemont Date: Mon, 14 Sep 2009 18:31:10 +0200 Subject: [PATCH] Don't leak the event manager. --- src/playlist/services_discovery.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/playlist/services_discovery.c b/src/playlist/services_discovery.c index aaa46688b6..57d8928501 100644 --- a/src/playlist/services_discovery.c +++ b/src/playlist/services_discovery.c @@ -33,6 +33,8 @@ #include "../libvlc.h" +static void services_discovery_Destructor ( vlc_object_t *p_obj ); + /* * Services discovery * Basically you just listen to Service discovery event through the @@ -71,6 +73,7 @@ services_discovery_t *vlc_sd_Create( vlc_object_t *p_super ) vlc_event_manager_register_event_type( &p_sd->event_manager, vlc_ServicesDiscoveryEnded ); + vlc_object_set_destructor( p_sd, services_discovery_Destructor ); vlc_object_attach( p_sd, p_super ); return p_sd; @@ -113,6 +116,16 @@ void vlc_sd_Stop ( services_discovery_t * p_sd ) p_sd->p_module = NULL; } +/*********************************************************************** + * Destructor + ***********************************************************************/ +static void services_discovery_Destructor ( vlc_object_t *p_obj ) +{ + services_discovery_t * p_sd = (services_discovery_t *)p_obj; + assert(!p_sd->p_module); /* Forgot to call Stop */ + vlc_event_manager_fini( &p_sd->event_manager ); +} + /*********************************************************************** * GetLocalizedName ***********************************************************************/ -- 2.39.2