static GDBusConnection *gdbus_conn;
static GDBusProxy *profile_gproxy;
-static guint owner_sig_id;
+static guint interface_added_sig_id;
+static guint interface_removed_sig_id;
static guint bluez_device_sig_id;
static guint name_owner_sig_id;
__bt_hid_agent_register();
}
- owner_sig_id = g_dbus_connection_signal_subscribe(conn,
- NULL, BT_MANAGER_INTERFACE, NULL, NULL, NULL, 0,
+ interface_added_sig_id = g_dbus_connection_signal_subscribe(conn,
+ NULL, BT_MANAGER_INTERFACE, BT_INTERFACES_ADDED, NULL, NULL, 0,
+ __bt_hid_agent_filter_cb, NULL, NULL);
+
+ interface_removed_sig_id = g_dbus_connection_signal_subscribe(conn,
+ NULL, BT_MANAGER_INTERFACE, BT_INTERFACES_REMOVED, NULL, NULL, 0,
__bt_hid_agent_filter_cb, NULL, NULL);
bluez_device_sig_id = g_dbus_connection_signal_subscribe(conn,
}
if (gdbus_conn) {
- if (owner_sig_id > 0)
+ if (interface_added_sig_id > 0)
+ g_dbus_connection_signal_unsubscribe(gdbus_conn,
+ interface_added_sig_id);
+
+ if (interface_removed_sig_id > 0)
g_dbus_connection_signal_unsubscribe(gdbus_conn,
- owner_sig_id);
+ interface_removed_sig_id);
if (bluez_device_sig_id > 0)
g_dbus_connection_signal_unsubscribe(gdbus_conn,
g_dbus_connection_signal_unsubscribe(gdbus_conn,
name_owner_sig_id);
- owner_sig_id = 0;
+ interface_added_sig_id = 0;
+ interface_removed_sig_id = 0;
bluez_device_sig_id = 0;
name_owner_sig_id = 0;