elm_scroller: use region of proxy soruce for loop

Summary:
If size of elm_sclloer content is too big, then the proxy of
elm_scroller to show loop effect does not work. Because
evas_gl_common_image_surface_new does not allow
bigger size surface than max_texture_size.

Reviewers: Hermet, jsuya, herb

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11996
This commit is contained in:
Shinwoo Kim 2020-06-19 16:07:06 +09:00 committed by Hermet Park
parent 5e4f81bb6f
commit b61f755e88
1 changed files with 7 additions and 1 deletions

View File

@ -328,6 +328,7 @@ _elm_scroller_efl_ui_widget_on_access_activate(Eo *obj, Elm_Scroller_Data *_pd E
EOLIAN static void
_elm_scroller_efl_canvas_group_group_calculate(Eo *obj, Elm_Scroller_Data *sd)
{
Evas_Coord ovw, ovh;
Evas_Coord vw = 0, vh = 0, minw = 0, minh = 0, maxw = 0, maxh = 0, w, h,
vmw, vmh;
Evas_Coord h_pagesize, v_pagesize;
@ -345,6 +346,10 @@ _elm_scroller_efl_canvas_group_group_calculate(Eo *obj, Elm_Scroller_Data *sd)
elm_interface_scrollable_content_viewport_geometry_get
(obj, NULL, NULL, &vw, &vh);
ovw = vw;
ovh = vh;
if (xw > 0.0)
{
if ((minw > 0) && (vw < minw))
@ -372,7 +377,8 @@ _elm_scroller_efl_canvas_group_group_calculate(Eo *obj, Elm_Scroller_Data *sd)
{
if (!sd->proxy_content[i]) continue;
elm_interface_scrollable_paging_get((Eo *)obj, NULL, NULL, &h_pagesize, &v_pagesize);
evas_object_image_fill_set(sd->proxy_content[i], 0, 0, vw, vh);
evas_object_image_fill_set(sd->proxy_content[i], 0, 0, ovw, ovh);
evas_object_image_load_region_set(sd->proxy_content[i], 0, 0, ovw, ovh);
evas_object_size_hint_min_set(sd->proxy_content[i],
h_pagesize, v_pagesize);
}