From: Junkyeong Kim Date: Wed, 8 Mar 2023 01:54:42 +0000 (+0900) Subject: Revert "e_comp_wl: Change input region set method" X-Git-Tag: accepted/tizen/unified/20230316.045741~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=59ca811ca3b884a05617ac10d5ff65a66c7ef663;p=platform%2Fupstream%2Fenlightenment.git Revert "e_comp_wl: Change input region set method" This reverts commit e73ae666dfcef2058ea9e150ed60428bb1c8aa04. Change-Id: Iee34018bc783422a6267c77b82f4ad393ea4c2ef --- diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index d555f91..53418e3 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -2938,20 +2938,54 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state) (!eina_tiler_empty(state->input)) && ec->first_mapped) { - Eina_Rectangle *rect; - Eina_Iterator *itr; + Eina_Tiler *src, *tmp; + int sw, sh; - e_comp_object_input_objs_del(ec->frame); - itr = eina_tiler_iterator_new(state->input); - EINA_ITERATOR_FOREACH(itr, rect) + if (state->bw > 0) sw = state->bw; + else sw = ec->w; + + if (state->bh > 0) sh = state->bh; + else sh = ec->h; + + tmp = eina_tiler_new(sw, sh); + eina_tiler_tile_size_set(tmp, 1, 1); + + eina_tiler_rect_add(tmp, + &(Eina_Rectangle){0, 0, sw, sh}); + + if ((src = eina_tiler_intersection(state->input, tmp))) { - Eina_Rectangle r; + Eina_Rectangle *rect, *rect_input; + Eina_Iterator *itr, *itr_input; - EINA_RECTANGLE_SET(&r, rect->x, rect->y, rect->w, rect->h); - ELOGF("COMP", "Set Input Area x:%d, y:%d, w:%d, h:%d", ec, r.x, r.y, r.w, r.h); - e_comp_object_input_area_set(ec->frame, r.x, r.y, r.w, r.h); + e_comp_object_input_objs_del(ec->frame); + itr = eina_tiler_iterator_new(src); + EINA_ITERATOR_FOREACH(itr, rect) + { + itr_input = eina_tiler_iterator_new(state->input); + EINA_ITERATOR_FOREACH(itr_input, rect_input) + { + if ((rect->x == rect_input->x) && (rect->y == rect_input->y)) + { + if (rect->w > rect_input->w) rect->w = rect_input->w; + if (rect->h > rect_input->h) rect->h = rect_input->h; + } + } + ELOGF("COMP", "Set Input Area x:%d, y:%d, w:%d, h:%d", + ec, rect->x, rect->y, rect->w, rect->h); + e_comp_object_input_area_set(ec->frame, + rect->x, rect->y, + rect->w, rect->h); + eina_iterator_free(itr_input); + } + + eina_iterator_free(itr); + eina_tiler_free(src); } - eina_iterator_free(itr); + else + e_comp_object_input_area_set(ec->frame, 0, 0, ec->w, ec->h); + + eina_tiler_free(tmp); /* clear input tiler */ eina_tiler_clear(state->input);