if (properties_proxy == NULL)
WARN("create properties proxy error");
- object->properties_proxy = properties_proxy;
+ object->properties_proxy = g_object_ref(properties_proxy);
object->path_name = g_strdup(path);
return object;
return;
proxy_node->interface_name = iface_name;
- proxy_node->interface = interface;
- proxy_node->proxy = proxy;
+ proxy_node->interface = g_object_ref(interface);
+ proxy_node->proxy = g_object_ref(proxy);
}
static void comms_service_bluetooth_added(struct _comms_object *object,
if (g_strcmp0(iface_name, COMMS_MANAGER_INTERFACE))
return;
- manager->interface = interface;
- manager->proxy = proxy;
+ manager->interface = g_object_ref(interface);
+ manager->proxy = g_object_ref(proxy);
g_signal_connect(proxy, "g-properties-changed",
G_CALLBACK(manager_properties_changed), NULL);
WARN("Unkonw object type");
return;
}
-
- g_object_unref(object);
}
static void object_added(GDBusObjectManager *manger, GDBusObject *object,
int comms_lib_init(void)
{
+ GDBusObjectManager *manager;
GList *obj_list;
DBG("");
if (object_manager != NULL)
return 0;
- object_manager = g_dbus_object_manager_client_new_for_bus_sync(
+ manager = g_dbus_object_manager_client_new_for_bus_sync(
G_BUS_TYPE_SYSTEM,
0, COMMS_SERVICE_NAME,
OBJECT_MANAGER_OBJ_PATH,
NULL, NULL, NULL,
NULL, NULL);
- if (object_manager == NULL) {
+ if (manager == NULL) {
ERROR("create object manager error");
/* TODO: define error type */
return -1;
}
+ object_manager = g_object_ref(manager);
+
g_signal_connect(object_manager, "object-added",
G_CALLBACK(object_added), NULL);
g_signal_connect(object_manager, "object-removed",
g_list_foreach(obj_list, parse_object, NULL);
+ g_list_free(obj_list);
+
return 0;
}