From: Boram Park Date: Tue, 25 Aug 2015 08:29:12 +0000 (+0900) Subject: e_comp_object: fix infinite loop during resizing a smart object. X-Git-Tag: accepted/tizen/mobile/20150826.020010~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b81feac63e56103fb3b8e9e138842cf5ddb7e200;p=platform%2Fupstream%2Fenlightenment.git e_comp_object: fix infinite loop during resizing a smart object. If wl_surface han no wl_buffer, reszing a comp smart object occurs infinite loop. In wayland, when a wl_buffer is attached to a surface, e_client_util_move_resize_without_frame will be called in _e_comp_wl_ surface_state_commit. And it makes sure that ec and ec->frame have correct size. Change-Id: I9c3540c94baa0b1f22b0732650f8cee63c3c4d59 --- diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 70b63d3..e17723d 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -942,7 +942,7 @@ _e_comp_intercept_resize(void *data, Evas_Object *obj, int w, int h) if (cw->ec->new_client || (!cw->ec->visible) || (!cw->effect_obj)) { /* do nothing until client idler loops */ - if (!cw->ec->maximized) + if (!cw->ec->maximized && (cw->ec->w != w || cw->ec->h != h)) { cw->ec->w = w, cw->ec->h = h; cw->ec->changes.size = 1; @@ -969,11 +969,13 @@ _e_comp_intercept_resize(void *data, Evas_Object *obj, int w, int h) } if ((!cw->ec->input_only) && (!e_pixmap_size_get(cw->ec->pixmap, &pw, &ph))) { +#ifndef HAVE_WAYLAND_ONLY /* client can't be resized if its pixmap isn't usable, try again */ e_pixmap_dirty(cw->ec->pixmap); e_comp_object_render_update_add(obj); cw->ec->changes.size = 1; EC_CHANGED(cw->ec); +#endif return; } prev_w = cw->w, prev_h = cw->h;