Hello.
I attached the modified patch about calc_job problem.
When I tested gengrid, sometimes gengrid renderd two times in different
shape in a moment.
So I checked gengrid code, I found cause in calc_job function.
calc_job added to ecore job after elm_gengrid_item_size_set and
elm_gengrid_item_append(,prepend,insert_before,insert_after) and etc.
Sometimes pan_smart's cvw and cvh is 0 at this time.
I think, No need to calc_job when pan_smart's cvw and cvh is 0.
Please check about this patch.
Thanks.
Index: src/lib/elm_gengrid.c
===================================================================
--- src/lib/elm_gengrid.c (revision 57314)
+++ src/lib/elm_gengrid.c (working copy)
@@ -1281,36 +1281,39 @@ _calc_job(void *data)
int count;
evas_object_geometry_get(wd->pan_smart, NULL, NULL, &cvw, &cvh);
- if ((wd->horizontal) && (wd->item_height > 0))
- nmax = cvh / wd->item_height;
- else if (wd->item_width > 0)
- nmax = cvw / wd->item_width;
+ if (cvw != 0 || cvh != 0)
+ {
+ if ((wd->horizontal) && (wd->item_height > 0))
+ nmax = cvh / wd->item_height;
+ else if (wd->item_width > 0)
+ nmax = cvw / wd->item_width;
- if (nmax < 1)
- nmax = 1;
+ if (nmax < 1)
+ nmax = 1;
- count = wd->count;
- if (wd->horizontal)
- {
- minw = ceil(count / (float)nmax) * wd->item_width;
- minh = nmax * wd->item_height;
- }
- else
- {
- minw = nmax * wd->item_width;
- minh = ceil(count / (float)nmax) * wd->item_height;
- }
+ count = wd->count;
+ if (wd->horizontal)
+ {
+ minw = ceil(count / (float)nmax) * wd->item_width;
+ minh = nmax * wd->item_height;
+ }
+ else
+ {
+ minw = nmax * wd->item_width;
+ minh = ceil(count / (float)nmax) * wd->item_height;
+ }
- if ((minw != wd->minw) || (minh != wd->minh))
- {
- wd->minh = minh;
- wd->minw = minw;
- evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
+ if ((minw != wd->minw) || (minh != wd->minh))
+ {
+ wd->minh = minh;
+ wd->minw = minw;
+ evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
+ }
+
+ wd->nmax = nmax;
+ wd->calc_job = NULL;
+ evas_object_smart_changed(wd->pan_smart);
}
-
- wd->nmax = nmax;
- wd->calc_job = NULL;
- evas_object_smart_changed(wd->pan_smart);
}
static void
------------------------------------------------------------------------------
Free Software Download: Index, Search & Analyze Logs and other IT data in
Real-Time with Splunk. Collect, index and harness all the fast moving IT data
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business
insights. http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel