Summary:
This makes a proxy object use a selective region of a source object.
So far a proxy has not worked for load_region at all.
This should be better solution than https://phab.enlightenment.org/D10604
introducing new interface.
This is useful when the source is too big to allocate a proxy surface.
This will be used by elm_scroller to solve following issue.
[Issue]
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
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D10626
Change-Id: I9a8d80eca88a5f2d1d1c1b5425294bcd4017bfa9
}
else if (oi && oi->engine_data &&
//TIZEN_ONLY(20191107): proxy uses part of source
- (obj->proxy->src_region.w == 0 || obj->proxy->src_region.h == 0))
- //
+ ((obj->proxy->src_region.w == 0 || obj->proxy->src_region.h == 0) ||
+ (!o->cur->source || o->load_opts->region.w == 0 || o->load_opts->region.h == 0)))
{
if (oi->has_filter)
pixels = evas_filter_output_buffer_get(source->object);
int level = 1;
void *ctx;
int w, h, off_x = 0, off_y = 0;
+ Eina_Rectangle lr;
#ifdef REND_DBG
level = __RD_level;
off_y = -proxy->proxy->src_region.y;
}
//
+ evas_object_image_load_region_get(eo_proxy, &lr.x, &lr.y, &lr.w, &lr.h);
+
+ if (lr.w > 0 && lr.h > 0)
+ {
+ w = lr.w;
+ h = lr.h;
+ off_x = -lr.x;
+ off_y = -lr.y;
+ }
else if (proxy->proxy->proxies || (!proxy->cur->clipper) || (!proxy->cur->has_fixed_size))
{
/* make full surface available if this proxy is being sampled from */