From 4200ca98d6cdfefd55d157a8e6dcf0cd3611e439 Mon Sep 17 00:00:00 2001 From: Huang-Huang Bao Date: Wed, 17 Mar 2021 07:45:04 +0800 Subject: [PATCH] media-session: don't destroy bluez sm_object in session destroy handler, let object been destroyed in session_shutdown. Avoid double free on object proxy, although it has been handled by d143c169ccb5c41d96b16fd6497d7482d030de8e. --- src/examples/media-session/bluez-monitor.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/examples/media-session/bluez-monitor.c b/src/examples/media-session/bluez-monitor.c index 7d7989519..6d324bda3 100644 --- a/src/examples/media-session/bluez-monitor.c +++ b/src/examples/media-session/bluez-monitor.c @@ -351,6 +351,8 @@ static void device_destroy(void *data) pw_log_debug("device %p destroy", device); + spa_hook_remove(&device->listener); + if (device->appeared) { device->appeared = false; spa_hook_remove(&device->device_listener); @@ -492,9 +494,8 @@ static void bluez5_update_device(struct impl *impl, struct device *device, } } -static void bluez5_device_free(struct impl *impl, struct device *device) +static void bluez5_device_free(struct device *device) { - bluez5_remove_device(impl, device); spa_list_remove(&device->link); pw_unload_spa_handle(device->handle); pw_properties_free(device->props); @@ -532,7 +533,7 @@ static void session_destroy(void *data) struct impl *impl = data; struct device *device; spa_list_consume(device, &impl->device_list, link) - bluez5_device_free(impl, device); + bluez5_device_free(device); spa_hook_remove(&impl->session_listener); spa_hook_remove(&impl->listener);