Eina_List *l;
E_Client_Pending_Geometry *geo;
E_Client_Demand_Geometry change = 0;
- int bw, bh;
+ int bw, bh, cntfit, bfit;
struct
{
int x, y, w, h;
if (!ec || !ec->frame) goto ret;
if (e_object_is_del(E_OBJECT(ec))) goto ret;
- bw = bh = 0;
+ bw = bh = cntfit = bfit = 0;
config.x = ec->x; config.y = ec->y; config.w = ec->w; config.h = ec->h;
//if (!e_pixmap_size_get(ec->pixmap, &bw, &bh)) goto err;
e_pixmap_size_get(ec->pixmap, &bw, &bh);
if (eina_list_count(ec->surface_sync.pending_geometry))
{
+ /* if buffer size is not match with resize request, than
+ break the loop and wait next wl buffer.
+ as a result, move or resize request would be blocked
+ during the period of client attachements if it is not a proper size buffer.
+ TODO : the code will remove out if client serial commit works ::start*/
EINA_LIST_FOREACH(ec->surface_sync.pending_geometry, l, geo)
{
+ ++cntfit;
+ if (geo->mode | E_GEOMETRY_SIZE)
+ {
+ // last index of the same size buffer
+ if ((geo->w == bw) || (geo->h == bh))
+ bfit = cntfit;
+ }
+ }
+ if (!bfit) goto err;
+ cntfit = 0;
+ /*TODO : the code will remove out if client serial commit works ::end*/
+
+
+ EINA_LIST_FOREACH(ec->surface_sync.pending_geometry, l, geo)
+ {
+ ++cntfit;
if (geo->serial <= ec->surface_sync.serial)
{
if (geo->mode & E_GEOMETRY_SIZE)
{
+ if (cntfit > bfit) break; //the code will remove out if client serial commit works
config.w = geo->w; config.h = geo->h;
}
if (geo->mode & E_GEOMETRY_POS)