diff --git a/profiles/input/device.c b/profiles/input/device.c
index dc3da80..73204e0 100644
--- a/profiles/input/device.c
+++ b/profiles/input/device.c
if (idev->dc_id)
device_remove_disconnect_watch(idev->device, idev->dc_id);
- dbus_connection_unref(idev->conn);
btd_device_unref(idev->device);
g_free(idev->name);
g_free(idev->path);
static void interrupt_connect_cb(GIOChannel *chan, GError *conn_err,
gpointer user_data)
{
+ DBusConnection *conn = btd_get_dbus_connection();
struct input_device *idev = user_data;
DBusMessage *reply;
int err;
}
/* Replying to the requestor */
- g_dbus_send_reply(idev->conn, idev->pending_connect, DBUS_TYPE_INVALID);
+ g_dbus_send_reply(conn, idev->pending_connect, DBUS_TYPE_INVALID);
dbus_message_unref(idev->pending_connect);
idev->pending_connect = NULL;
failed:
error("%s", err_msg);
reply = btd_error_failed(idev->pending_connect, err_msg);
- g_dbus_send_message(idev->conn, reply);
+ g_dbus_send_message(conn, reply);
dbus_message_unref(idev->pending_connect);
idev->pending_connect = NULL;
failed:
g_io_channel_unref(idev->ctrl_io);
idev->ctrl_io = NULL;
- g_dbus_send_message(idev->conn, reply);
+ g_dbus_send_message(btd_get_dbus_connection(), reply);
dbus_message_unref(idev->pending_connect);
idev->pending_connect = NULL;
}
{ }
};
-static struct input_device *input_device_new(DBusConnection *conn,
- struct btd_device *device, const char *path,
- const uint32_t handle, gboolean disable_sdp)
+static struct input_device *input_device_new(struct btd_device *device,
+ const char *path, const uint32_t handle,
+ gboolean disable_sdp)
{
struct btd_adapter *adapter = device_get_adapter(device);
struct input_device *idev;
device_get_address(device, &idev->dst, &dst_type);
idev->device = btd_device_ref(device);
idev->path = g_strdup(path);
- idev->conn = dbus_connection_ref(conn);
idev->handle = handle;
idev->disable_sdp = disable_sdp;
if (read_device_name(src_addr, dst_addr, dst_type, name) == 0)
idev->name = g_strdup(name);
- if (g_dbus_register_interface(conn, idev->path, INPUT_DEVICE_INTERFACE,
+ if (g_dbus_register_interface(btd_get_dbus_connection(),
+ idev->path, INPUT_DEVICE_INTERFACE,
device_methods, device_signals, NULL,
idev, device_unregister) == FALSE) {
error("Failed to register interface %s on path %s",
return data && data->val.uint8;
}
-int input_device_register(DBusConnection *conn, struct btd_device *device,
+int input_device_register(struct btd_device *device,
const char *path, const char *uuid,
const sdp_record_t *rec, int timeout)
{
if (idev)
return -EEXIST;
- idev = input_device_new(conn, device, path, rec->handle,
+ idev = input_device_new(device, path, rec->handle,
is_device_sdp_disable(rec));
if (!idev)
return -EINVAL;
return -EBUSY;
}
- g_dbus_unregister_interface(idev->conn, path, INPUT_DEVICE_INTERFACE);
+ g_dbus_unregister_interface(btd_get_dbus_connection(),
+ path, INPUT_DEVICE_INTERFACE);
return 0;
}
diff --git a/profiles/input/device.h b/profiles/input/device.h
index 0632570..b26d617 100644
--- a/profiles/input/device.h
+++ b/profiles/input/device.h
struct input_device;
struct input_conn;
-int input_device_register(DBusConnection *conn, struct btd_device *device,
- const char *path, const char *uuid,
- const sdp_record_t *rec, int timeout);
+int input_device_register(struct btd_device *device, const char *path,
+ const char *uuid, const sdp_record_t *rec,
+ int timeout);
int input_device_unregister(const char *path, const char *uuid);
int input_device_set_channel(const bdaddr_t *src, const bdaddr_t *dst, int psm,
diff --git a/profiles/input/main.c b/profiles/input/main.c
index 05469a1..4ddc511 100644
--- a/profiles/input/main.c
+++ b/profiles/input/main.c
return keyfile;
}
-static DBusConnection *connection;
-
static int input_init(void)
{
GKeyFile *config;
- connection = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
- if (connection == NULL)
- return -EIO;
-
config = load_config_file(CONFIGDIR "/input.conf");
- if (input_manager_init(connection, config) < 0) {
- dbus_connection_unref(connection);
+ if (input_manager_init(config) < 0)
return -EIO;
- }
if (config)
g_key_file_free(config);
static void input_exit(void)
{
input_manager_exit();
-
- dbus_connection_unref(connection);
}
BLUETOOTH_PLUGIN_DEFINE(input, VERSION, BLUETOOTH_PLUGIN_PRIORITY_DEFAULT,
diff --git a/profiles/input/manager.c b/profiles/input/manager.c
index 13096c7..c899b4e 100644
--- a/profiles/input/manager.c
+++ b/profiles/input/manager.c
static int idle_timeout = 0;
-static DBusConnection *connection = NULL;
static GSList *adapters = NULL;
static void input_remove(struct btd_device *device, const char *uuid)
if (!rec)
return -1;
- return input_device_register(connection, device, path, HID_UUID, rec,
+ return input_device_register(device, path, HID_UUID, rec,
idle_timeout * 60);
}
.adapter_remove = hid_server_remove,
};
-int input_manager_init(DBusConnection *conn, GKeyFile *config)
+int input_manager_init(GKeyFile *config)
{
GError *err = NULL;
}
}
- connection = dbus_connection_ref(conn);
-
btd_profile_register(&input_profile);
return 0;
void input_manager_exit(void)
{
btd_profile_unregister(&input_profile);
-
- dbus_connection_unref(connection);
- connection = NULL;
}
diff --git a/profiles/input/manager.h b/profiles/input/manager.h
index 7b93c5b..3f73253 100644
--- a/profiles/input/manager.h
+++ b/profiles/input/manager.h
*
*/
-int input_manager_init(DBusConnection *conn, GKeyFile *config);
+int input_manager_init(GKeyFile *config);
void input_manager_exit(void);