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 d143c169cc.
This commit is contained in:
Huang-Huang Bao 2021-03-17 07:45:04 +08:00
parent 5913eb098c
commit 4200ca98d6
No known key found for this signature in database
GPG key ID: 33C3271387A13D1B

View file

@ -351,6 +351,8 @@ static void device_destroy(void *data)
pw_log_debug("device %p destroy", device); pw_log_debug("device %p destroy", device);
spa_hook_remove(&device->listener);
if (device->appeared) { if (device->appeared) {
device->appeared = false; device->appeared = false;
spa_hook_remove(&device->device_listener); 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); spa_list_remove(&device->link);
pw_unload_spa_handle(device->handle); pw_unload_spa_handle(device->handle);
pw_properties_free(device->props); pw_properties_free(device->props);
@ -532,7 +533,7 @@ static void session_destroy(void *data)
struct impl *impl = data; struct impl *impl = data;
struct device *device; struct device *device;
spa_list_consume(device, &impl->device_list, link) 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->session_listener);
spa_hook_remove(&impl->listener); spa_hook_remove(&impl->listener);