From: "Eduardo Lima (Etrunko)" <eduardo.l...@intel.com> Just the same as it is done in shell.c, if the input method process exits for any reason, we relaunch it automatically, as it is not possible to launch a standalone application outside of the weston process.
Signed-off-by: Eduardo Lima (Etrunko) <eduardo.l...@intel.com> --- src/text-backend.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/text-backend.c b/src/text-backend.c index d7ce31c..52c0814 100644 --- a/src/text-backend.c +++ b/src/text-backend.c @@ -23,6 +23,7 @@ #include <stdlib.h> #include <string.h> +#include <time.h> #include "compositor.h" #include "text-server-protocol.h" @@ -91,6 +92,9 @@ struct text_backend { struct wl_resource *binding; struct weston_process process; struct wl_client *client; + + unsigned deathcount; + uint32_t deathstamp; } input_method; struct wl_listener seat_created_listener; @@ -819,14 +823,33 @@ input_method_init_seat(struct weston_seat *seat) seat->input_method->focus_listener_initialized = 1; } +static void launch_input_method(struct text_backend *text_backend); + static void handle_input_method_sigchld(struct weston_process *process, int status) { + uint32_t time; struct text_backend *text_backend = container_of(process, struct text_backend, input_method.process); text_backend->input_method.process.pid = 0; text_backend->input_method.client = NULL; + + /* if input_method dies more than 5 times in 10 seconds, give up */ + time = weston_compositor_get_time(); + if (time - text_backend->input_method.deathstamp > 10000) { + text_backend->input_method.deathstamp = time; + text_backend->input_method.deathcount = 0; + } + + text_backend->input_method.deathcount++; + if (text_backend->input_method.deathcount > 5) { + weston_log("weston-desktop-shell died, giving up.\n"); + return; + } + + weston_log("input_method died, respawning...\n"); + launch_input_method(text_backend); } static void -- 1.8.1.4 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel