summaryrefslogtreecommitdiffstats
path: root/src/modules/module-console-kit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/module-console-kit.c')
-rw-r--r--src/modules/module-console-kit.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/modules/module-console-kit.c b/src/modules/module-console-kit.c
index e1933c28..4f3ed8dd 100644
--- a/src/modules/module-console-kit.c
+++ b/src/modules/module-console-kit.c
@@ -63,6 +63,7 @@ struct session {
};
struct userdata {
+ pa_module *module;
pa_core *core;
pa_dbus_connection *connection;
pa_hashmap *sessions;
@@ -73,7 +74,7 @@ static void add_session(struct userdata *u, const char *id) {
DBusMessage *m = NULL, *reply = NULL;
uint32_t uid;
struct session *session;
- char *t;
+ pa_client_new_data data;
dbus_error_init (&error);
@@ -109,11 +110,19 @@ static void add_session(struct userdata *u, const char *id) {
session = pa_xnew(struct session, 1);
session->id = pa_xstrdup(id);
- t = pa_sprintf_malloc("ConsoleKit Session %s", id);
- session->client = pa_client_new(u->core, __FILE__, t);
- pa_xfree(t);
-
- pa_proplist_sets(session->client->proplist, "console-kit.session", id);
+ pa_client_new_data_init(&data);
+ data.module = u->module;
+ data.driver = __FILE__;
+ pa_proplist_setf(data.proplist, PA_PROP_APPLICATION_NAME, "ConsoleKit Session %s", id);
+ pa_proplist_sets(data.proplist, "console-kit.session", id);
+ session->client = pa_client_new(u->core, &data);
+ pa_client_new_data_done(&data);
+
+ if (!session->client) {
+ pa_xfree(session->id);
+ pa_xfree(session);
+ goto fail;
+ }
pa_hashmap_put(u->sessions, session->id, session);
@@ -295,6 +304,7 @@ int pa__init(pa_module*m) {
m->userdata = u = pa_xnew(struct userdata, 1);
u->core = m->core;
+ u->module = m;
u->connection = connection;
u->sessions = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);