+
+Ethumb *
+ethumb_dup(const Ethumb *e)
+{
+ Ecore_Evas *ee;
+ Ecore_Evas *sub_ee;
+ Evas *ev;
+ Evas *sub_ev;
+ Evas_Object *o;
+ Evas_Object *img;
+ Ethumb *r;
+
+ r = malloc(sizeof (Ethumb));
+ if (!r) return NULL;
+
+ memcpy(r, e, sizeof (Ethumb));
+
+ r->thumb_dir = eina_stringshare_ref(e->thumb_dir);
+ r->category = eina_stringshare_ref(e->category);
+ r->src_path = eina_stringshare_ref(e->src_path);
+ r->src_key = eina_stringshare_ref(e->src_key);
+ r->thumb_path = eina_stringshare_ref(e->thumb_path);
+ r->thumb_key = eina_stringshare_ref(e->thumb_key);
+
+ ee = ecore_evas_buffer_new(1, 1);
+ ev = ecore_evas_get(ee);
+ if (!ev)
+ {
+ ERR("could not create ecore evas buffer");
+ free(r);
+ return NULL;
+ }
+
+ evas_image_cache_set(ev, 0);
+ evas_font_cache_set(ev, 0);
+
+ o = ecore_evas_object_image_new(ee);
+ if (!o)
+ {
+ ERR("could not create sub ecore evas buffer");
+ ecore_evas_free(ee);
+ free(r);
+ return NULL;
+ }
+
+ sub_ee = ecore_evas_object_ecore_evas_get(o);
+ sub_ev = ecore_evas_object_evas_get(o);
+
+ evas_image_cache_set(sub_ev, 0);
+ evas_font_cache_set(sub_ev, 0);
+
+ img = evas_object_image_add(sub_ev);
+ if (!img)
+ {
+ ERR("could not create source objects.");
+ ecore_evas_free(ee);
+ free(r);
+ return NULL;
+ }
+
+ r->ee = ee;
+ r->sub_ee = sub_ee;
+ r->e = ev;
+ r->sub_e = sub_ev;
+ r->o = o;
+ r->img = img;
+
+ r->frame = NULL;
+ r->finished_idler = NULL;
+ r->finished_cb = NULL;
+ r->cb_data = NULL;
+ r->cb_data_free = NULL;
+ r->cb_result = 0;
+
+ return r;
+}
+
+#define CHECK_DELTA(Param) \
+ if (e1->Param != e2->Param) \
+ return EINA_TRUE;
+
+Eina_Bool
+ethumb_cmp(const Ethumb *e1, const Ethumb *e2)
+{
+ CHECK_DELTA(thumb_dir);
+ CHECK_DELTA(category);
+ CHECK_DELTA(tw);
+ CHECK_DELTA(th);
+ CHECK_DELTA(format);
+ CHECK_DELTA(aspect);
+ CHECK_DELTA(orientation);
+ CHECK_DELTA(crop_x);
+ CHECK_DELTA(crop_y);
+ CHECK_DELTA(quality);
+ CHECK_DELTA(compress);
+ CHECK_DELTA(rw);
+ CHECK_DELTA(rh);
+ CHECK_DELTA(video.start);
+ CHECK_DELTA(video.time);
+ CHECK_DELTA(video.interval);
+ CHECK_DELTA(video.ntimes);
+ CHECK_DELTA(video.fps);
+ CHECK_DELTA(document.page);
+
+ return EINA_FALSE;
+}