From 0321fd690e6c231d14843785a0308e4e51e2c1e6 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 24 Jul 2015 16:33:06 -0400 Subject: [PATCH] do not send duplicate configures for wayland clients during maximize this seems to not have caused any real issues, but it made debugging more of a pain and is unnecessary connection noise --- src/bin/e_comp_wl.c | 15 ++++++++++++++- src/bin/e_comp_wl.h | 1 + src/modules/wl_desktop_shell/e_mod_main.c | 1 - 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index 77c292856..78765643a 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -627,7 +627,7 @@ _e_comp_wl_evas_cb_resize(void *data, Evas_Object *obj EINA_UNUSED, void *event e_comp->wl_comp_data->resize.edges, x, y); } - else + else if ((!ec->fullscreen) && (!ec->maximized) && (!ec->comp_data->maximize_pre)) ec->comp_data->shell.configure_send(ec->comp_data->shell.surface, e_comp->wl_comp_data->resize.edges, ec->client.w, ec->client.h); @@ -644,6 +644,15 @@ _e_comp_wl_evas_cb_state_update(void *data, Evas_Object *obj EINA_UNUSED, void * if (ec->comp_data->shell.configure_send) ec->comp_data->shell.configure_send(ec->comp_data->shell.surface, 0, ec->client.w, ec->client.h); + ec->comp_data->maximize_pre = 0; +} + +static void +_e_comp_wl_evas_cb_maximize_pre(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + E_Client *ec = data; + + ec->comp_data->maximize_pre = 1; } static void @@ -775,6 +784,10 @@ _e_comp_wl_client_evas_init(E_Client *ec) _e_comp_wl_evas_cb_state_update, ec); evas_object_smart_callback_add(ec->frame, "unmaximize_done", _e_comp_wl_evas_cb_state_update, ec); + evas_object_smart_callback_add(ec->frame, "maximize_pre", + _e_comp_wl_evas_cb_maximize_pre, ec); + evas_object_smart_callback_add(ec->frame, "unmaximize_pre", + _e_comp_wl_evas_cb_maximize_pre, ec); evas_object_smart_callback_add(ec->frame, "fullscreen", _e_comp_wl_evas_cb_state_update, ec); evas_object_smart_callback_add(ec->frame, "unfullscreen", diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index c3aa60e0a..32a8cba7b 100644 --- a/src/bin/e_comp_wl.h +++ b/src/bin/e_comp_wl.h @@ -286,6 +286,7 @@ struct _E_Comp_Wl_Client_Data Eina_Bool first_damage : 1; Eina_Bool set_win_type : 1; Eina_Bool frame_update : 1; + Eina_Bool maximize_pre : 1; }; struct _E_Comp_Wl_Output diff --git a/src/modules/wl_desktop_shell/e_mod_main.c b/src/modules/wl_desktop_shell/e_mod_main.c index c12443914..ce0d14ef9 100644 --- a/src/modules/wl_desktop_shell/e_mod_main.c +++ b/src/modules/wl_desktop_shell/e_mod_main.c @@ -846,7 +846,6 @@ _e_xdg_shell_surface_cb_maximized_set(struct wl_client *client EINA_UNUSED, stru { e_client_maximize(ec, ((e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_BOTH)); - _e_xdg_shell_surface_configure_send(resource, 0, ec->w, ec->h); } }