#define e_xdg_surface_role_biggest_struct E_Xdg_Toplevel
#define E_XDG_SURFACE_V6_TYPE (int)0xE0b06000
+const int WAIT_ACK_COUNT_MAX = 16;
+
typedef enum _E_Xdg_Surface_Role E_Xdg_Surface_Role;
typedef struct _E_Xdg_Size E_Xdg_Size;
typedef struct _E_Xdg_Shell E_Xdg_Shell;
_e_xdg_surface_util_role_string_get(exsurf), configure->serial);
if (wait_ack)
- exsurf->configure_list = eina_list_append(exsurf->configure_list, configure);
+ {
+ if (eina_list_count(exsurf->configure_list) > WAIT_ACK_COUNT_MAX)
+ {
+ E_Xdg_Surface_Configure *oldest_configure = NULL;
+ oldest_configure = eina_list_nth(exsurf->configure_list, 0);
+ if (oldest_configure)
+ {
+ ELOGF("XDG6", "Don't receive Configure Ack. Remove oldest configure:%p, serial:%d",
+ exsurf->ec, oldest_configure, oldest_configure->serial);
+ exsurf->configure_list = eina_list_remove(exsurf->configure_list, oldest_configure);
+ E_FREE(oldest_configure);
+ }
+ }
+ exsurf->configure_list = eina_list_append(exsurf->configure_list, configure);
+ }
else
E_FREE(configure);