This is to simplify and fix filters. This is an internal function.
void *(*image_new_from_data) (void *data, int w, int h, DATA32 *image_data, int alpha, Evas_Colorspace cspace);
void *(*image_new_from_copied_data) (void *data, int w, int h, DATA32 *image_data, int alpha, Evas_Colorspace cspace);
void (*image_free) (void *data, void *image);
+ void *(*image_ref) (void *data, void *image);
void (*image_size_get) (void *data, void *image, int *w, int *h);
void *(*image_size_set) (void *data, void *image, int w, int h);
void (*image_stride_get) (void *data, void *image, int *stride);
evas_gl_common_image_free(image);
}
+static void *
+eng_image_ref(void *data EINA_UNUSED, void *image)
+{
+ Evas_GL_Image *im = image;
+ if (!im) return NULL;
+ im->references++;
+ return im;
+}
+
static void
eng_image_size_get(void *data EINA_UNUSED, void *image, int *w, int *h)
{
ORD(image_new_from_data);
ORD(image_new_from_copied_data);
ORD(image_free);
+ ORD(image_ref);
ORD(image_size_get);
ORD(image_size_set);
ORD(image_dirty_region);
evas_cache_image_drop(image);
}
+static void *
+eng_image_ref(void *data EINA_UNUSED, void *image)
+{
+ if (!image) return NULL;
+#ifdef EVAS_CSERVE2
+ if (evas_cserve2_use_get() && evas_cache2_image_cached(image))
+ {
+ evas_cache2_image_ref(image);
+ return image;
+ }
+#endif
+ evas_cache_image_ref(image);
+ return image;
+}
+
static void
eng_image_size_get(void *data EINA_UNUSED, void *image, int *w, int *h)
{
eng_image_new_from_data,
eng_image_new_from_copied_data,
eng_image_free,
+ eng_image_ref,
eng_image_size_get,
eng_image_size_set,
NULL, // eng_image_stride_get