Fix bluez node destroy

We create a ClientNode but monitor the resulting Node.
Destroy the object when removing a node.
This commit is contained in:
Wim Taymans 2020-07-03 16:26:52 +02:00
parent 8ad769b943
commit c28ca320d1
2 changed files with 5 additions and 0 deletions

View file

@ -201,6 +201,7 @@ static void bluez5_remove_node(struct device *device, struct node *node)
{ {
pw_log_debug("remove node %u", node->id); pw_log_debug("remove node %u", node->id);
spa_list_remove(&node->link); spa_list_remove(&node->link);
sm_object_destroy(&node->snode->obj);
pw_impl_node_destroy(node->adapter); pw_impl_node_destroy(node->adapter);
pw_properties_free(node->props); pw_properties_free(node->props);
free(node); free(node);

View file

@ -44,6 +44,7 @@
#include "pipewire/pipewire.h" #include "pipewire/pipewire.h"
#include "pipewire/private.h" #include "pipewire/private.h"
#include "extensions/session-manager.h" #include "extensions/session-manager.h"
#include "extensions/client-node.h"
#include <dbus/dbus.h> #include <dbus/dbus.h>
@ -1066,6 +1067,9 @@ create_object(struct impl *impl, struct pw_proxy *proxy, struct pw_proxy *handle
type = pw_proxy_get_type(handle, NULL); type = pw_proxy_get_type(handle, NULL);
if (strcmp(type, PW_TYPE_INTERFACE_ClientNode) == 0)
type = PW_TYPE_INTERFACE_Node;
info = get_object_info(impl, type); info = get_object_info(impl, type);
if (info == NULL) { if (info == NULL) {
pw_log_error(NAME" %p: unknown object type %s", impl, type); pw_log_error(NAME" %p: unknown object type %s", impl, type);