Do not hand on startup if the ibus daemon is hung
This commit is contained in:
parent
3c772c3576
commit
98ede457a0
6
glfw/dbus_glfw.c
vendored
6
glfw/dbus_glfw.c
vendored
@ -130,7 +130,7 @@ toggle_dbus_timeout(DBusTimeout *timeout, void *data) {
|
|||||||
|
|
||||||
|
|
||||||
DBusConnection*
|
DBusConnection*
|
||||||
glfw_dbus_connect_to(const char *path, const char* err_msg, const char *name) {
|
glfw_dbus_connect_to(const char *path, const char* err_msg, const char *name, GLFWbool register_on_bus) {
|
||||||
DBusError err;
|
DBusError err;
|
||||||
dbus_error_init(&err);
|
dbus_error_init(&err);
|
||||||
DBusConnection *ans = dbus_connection_open_private(path, &err);
|
DBusConnection *ans = dbus_connection_open_private(path, &err);
|
||||||
@ -139,13 +139,13 @@ glfw_dbus_connect_to(const char *path, const char* err_msg, const char *name) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
dbus_connection_set_exit_on_disconnect(ans, FALSE);
|
dbus_connection_set_exit_on_disconnect(ans, FALSE);
|
||||||
dbus_connection_flush(ans);
|
|
||||||
dbus_error_free(&err);
|
dbus_error_free(&err);
|
||||||
|
if (register_on_bus) {
|
||||||
if (!dbus_bus_register(ans, &err)) {
|
if (!dbus_bus_register(ans, &err)) {
|
||||||
report_error(&err, err_msg);
|
report_error(&err, err_msg);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
dbus_connection_flush(ans);
|
}
|
||||||
if (!dbus_connection_set_watch_functions(ans, add_dbus_watch, remove_dbus_watch, toggle_dbus_watch, (void*)name, NULL)) {
|
if (!dbus_connection_set_watch_functions(ans, add_dbus_watch, remove_dbus_watch, toggle_dbus_watch, (void*)name, NULL)) {
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "Failed to set DBUS watches on connection to: %s", path);
|
_glfwInputError(GLFW_PLATFORM_ERROR, "Failed to set DBUS watches on connection to: %s", path);
|
||||||
dbus_connection_close(ans);
|
dbus_connection_close(ans);
|
||||||
|
|||||||
2
glfw/dbus_glfw.h
vendored
2
glfw/dbus_glfw.h
vendored
@ -39,7 +39,7 @@ typedef struct {
|
|||||||
|
|
||||||
GLFWbool glfw_dbus_init(_GLFWDBUSData *dbus, EventLoopData *eld);
|
GLFWbool glfw_dbus_init(_GLFWDBUSData *dbus, EventLoopData *eld);
|
||||||
void glfw_dbus_terminate(_GLFWDBUSData *dbus);
|
void glfw_dbus_terminate(_GLFWDBUSData *dbus);
|
||||||
DBusConnection* glfw_dbus_connect_to(const char *path, const char* err_msg, const char* name);
|
DBusConnection* glfw_dbus_connect_to(const char *path, const char* err_msg, const char* name, GLFWbool register_on_bus);
|
||||||
void glfw_dbus_close_connection(DBusConnection *conn);
|
void glfw_dbus_close_connection(DBusConnection *conn);
|
||||||
GLFWbool
|
GLFWbool
|
||||||
glfw_dbus_call_method_no_reply(DBusConnection *conn, const char *node, const char *path, const char *interface, const char *method, ...);
|
glfw_dbus_call_method_no_reply(DBusConnection *conn, const char *node, const char *path, const char *interface, const char *method, ...);
|
||||||
|
|||||||
3
glfw/ibus_glfw.c
vendored
3
glfw/ibus_glfw.c
vendored
@ -262,7 +262,7 @@ setup_connection(_GLFWIBUSData *ibus) {
|
|||||||
ibus->conn = NULL;
|
ibus->conn = NULL;
|
||||||
}
|
}
|
||||||
debug("Connecting to IBUS daemon @ %s for IME input management\n", ibus->address);
|
debug("Connecting to IBUS daemon @ %s for IME input management\n", ibus->address);
|
||||||
ibus->conn = glfw_dbus_connect_to(ibus->address, "Failed to connect to the IBUS daemon, with error", "ibus");
|
ibus->conn = glfw_dbus_connect_to(ibus->address, "Failed to connect to the IBUS daemon, with error", "ibus", GLFW_FALSE);
|
||||||
if (!ibus->conn) return GLFW_FALSE;
|
if (!ibus->conn) return GLFW_FALSE;
|
||||||
free((void*)ibus->input_ctx_path); ibus->input_ctx_path = NULL;
|
free((void*)ibus->input_ctx_path); ibus->input_ctx_path = NULL;
|
||||||
if (!glfw_dbus_call_method_with_reply(
|
if (!glfw_dbus_call_method_with_reply(
|
||||||
@ -270,7 +270,6 @@ setup_connection(_GLFWIBUSData *ibus) {
|
|||||||
DBUS_TYPE_STRING, &client_name, DBUS_TYPE_INVALID)) {
|
DBUS_TYPE_STRING, &client_name, DBUS_TYPE_INVALID)) {
|
||||||
return GLFW_FALSE;
|
return GLFW_FALSE;
|
||||||
}
|
}
|
||||||
dbus_connection_flush(ibus->conn);
|
|
||||||
return GLFW_TRUE;
|
return GLFW_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user