DBus: add a reference to the connection

Fixed bug #6712
This commit is contained in:
Sylvain Becker 2022-12-14 17:41:35 +01:00 committed by Sylvain
parent 40698ee33c
commit 52176e25e1
No known key found for this signature in database
GPG Key ID: 5F87E02E5BC0939E
3 changed files with 5 additions and 0 deletions

View File

@ -54,6 +54,7 @@ LoadDBUSSyms(void)
SDL_DBUS_SYM(connection_send); SDL_DBUS_SYM(connection_send);
SDL_DBUS_SYM(connection_send_with_reply_and_block); SDL_DBUS_SYM(connection_send_with_reply_and_block);
SDL_DBUS_SYM(connection_close); SDL_DBUS_SYM(connection_close);
SDL_DBUS_SYM(connection_ref);
SDL_DBUS_SYM(connection_unref); SDL_DBUS_SYM(connection_unref);
SDL_DBUS_SYM(connection_flush); SDL_DBUS_SYM(connection_flush);
SDL_DBUS_SYM(connection_read_write); SDL_DBUS_SYM(connection_read_write);

View File

@ -46,6 +46,7 @@ typedef struct SDL_DBusContext {
dbus_bool_t (*connection_send)(DBusConnection *, DBusMessage *, dbus_uint32_t *); dbus_bool_t (*connection_send)(DBusConnection *, DBusMessage *, dbus_uint32_t *);
DBusMessage *(*connection_send_with_reply_and_block)(DBusConnection *, DBusMessage *, int, DBusError *); DBusMessage *(*connection_send_with_reply_and_block)(DBusConnection *, DBusMessage *, int, DBusError *);
void (*connection_close)(DBusConnection *); void (*connection_close)(DBusConnection *);
void (*connection_ref)(DBusConnection *);
void (*connection_unref)(DBusConnection *); void (*connection_unref)(DBusConnection *);
void (*connection_flush)(DBusConnection *); void (*connection_flush)(DBusConnection *);
dbus_bool_t (*connection_read_write)(DBusConnection *, int); dbus_bool_t (*connection_read_write)(DBusConnection *, int);

View File

@ -477,6 +477,9 @@ IBus_SetupConnection(SDL_DBusContext *dbus, const char* addr)
result = SDL_DBus_CallMethodOnConnection(ibus_conn, ibus_service, IBUS_PATH, ibus_interface, "CreateInputContext", result = SDL_DBus_CallMethodOnConnection(ibus_conn, ibus_service, IBUS_PATH, ibus_interface, "CreateInputContext",
DBUS_TYPE_STRING, &client_name, DBUS_TYPE_INVALID, DBUS_TYPE_STRING, &client_name, DBUS_TYPE_INVALID,
DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID); DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID);
} else {
/* re-using dbus->session_conn */
dbus->connection_ref(ibus_conn);
} }
if (result) { if (result) {