Commit 31453164 authored by Lionel Landwerlin's avatar Lionel Landwerlin
Browse files

imwayland: destroy objects only if it matches our manager object

Should fix one of the crash from #129.
parent a0f27346
...@@ -35,6 +35,7 @@ struct _GtkIMContextWaylandGlobal ...@@ -35,6 +35,7 @@ struct _GtkIMContextWaylandGlobal
{ {
struct wl_display *display; struct wl_display *display;
struct wl_registry *registry; struct wl_registry *registry;
uint32_t text_input_manager_wl_id;
struct gtk_text_input_manager *text_input_manager; struct gtk_text_input_manager *text_input_manager;
struct gtk_text_input *text_input; struct gtk_text_input *text_input;
uint32_t enter_serial; uint32_t enter_serial;
...@@ -205,8 +206,9 @@ registry_handle_global (void *data, ...@@ -205,8 +206,9 @@ registry_handle_global (void *data,
if (strcmp (interface, "gtk_text_input_manager") == 0) if (strcmp (interface, "gtk_text_input_manager") == 0)
{ {
global->text_input_manager_wl_id = id;
global->text_input_manager = global->text_input_manager =
wl_registry_bind (global->registry, id, wl_registry_bind (global->registry, global->text_input_manager_wl_id,
&gtk_text_input_manager_interface, 1); &gtk_text_input_manager_interface, 1);
global->text_input = global->text_input =
gtk_text_input_manager_get_text_input (global->text_input_manager, gtk_text_input_manager_get_text_input (global->text_input_manager,
...@@ -223,11 +225,11 @@ registry_handle_global_remove (void *data, ...@@ -223,11 +225,11 @@ registry_handle_global_remove (void *data,
{ {
GtkIMContextWaylandGlobal *global = data; GtkIMContextWaylandGlobal *global = data;
gtk_text_input_destroy (global->text_input); if (id != global->text_input_manager_wl_id)
global->text_input = NULL; return;
gtk_text_input_manager_destroy (global->text_input_manager); g_clear_pointer(&global->text_input, gtk_text_input_destroy);
global->text_input_manager = NULL; g_clear_pointer(&global->text_input_manager, gtk_text_input_manager_destroy);
} }
static const struct wl_registry_listener registry_listener = { static const struct wl_registry_listener registry_listener = {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment