{
PEPPER_INFO("\n");
- free(data);
+ pepper_tdm_output_t *output = data;
+
+ pepper_event_listener_remove(output->hwc_destroy_listener);
+
+ free(output->hwc);
}
static int
PEPPER_CHECK(hwc->base, goto error, "pepper_output_initialize_hwc() failed\n");
// add destory handler for pepper_hwc object
- pepper_object_add_event_listener((pepper_object_t *)hwc->base,
- PEPPER_EVENT_OBJECT_DESTROY,
- 0,
- __tdm_hwc_destroy, hwc);
+ output->hwc_destroy_listener = pepper_object_add_event_listener((pepper_object_t *)hwc->base,
+ PEPPER_EVENT_OBJECT_DESTROY,
+ 0,
+ __tdm_hwc_destroy, output);
output->hwc = hwc;