if (do_async)
{
+ Eina_Bool ret;
if (!evas_common_rgba_image_scalecache_prepare(image, surface, context, smooth,
src_x, src_y, src_w, src_h,
dst_x, dst_y, dst_w, dst_h))
else
#endif
evas_cache_image_load_data(&im->cache_entry);
- if (!im->cache_entry.flags.loaded) return EINA_FALSE;
+ if (!im->cache_entry.flags.loaded)
+ {
+ if (im->native.func.unbind)
+ im->native.func.unbind(data, image);
+ return EINA_FALSE;
+ }
}
}
- return evas_common_rgba_image_scalecache_do_cbs(image, surface,
+ ret = evas_common_rgba_image_scalecache_do_cbs(image, surface,
context, smooth,
src_x, src_y, src_w, src_h,
dst_x, dst_y, dst_w, dst_h,
_image_thr_cb_sample,
_image_thr_cb_smooth);
+ if (im->native.func.unbind)
+ im->native.func.unbind(data, image);
+ return ret;
}
#ifdef BUILD_PIPE_RENDER
else if ((cpunum > 1))
im->native.data = NULL;
im->native.func.data = NULL;
im->native.func.bind = NULL;
+ im->native.func.unbind = NULL;
im->native.func.free = NULL;
//im->image.data = NULL;
free(n);
im->native.func.free = _native_evasgl_free;
im->native.func.data = NULL;
im->native.func.bind = NULL;
+ im->native.func.unbind = NULL;
}
}
im->native.data = NULL;
im->native.func.data = NULL;
im->native.func.bind = NULL;
+ im->native.func.unbind = NULL;
im->native.func.free = NULL;
im->image.data = NULL;
im->native.data = n;
im->native.func.data = NULL;
im->native.func.bind = _native_cb_bind;
+ im->native.func.unbind = NULL;
im->native.func.free = _native_cb_free;
_evas_xcb_image_update(data, image, 0, 0, w, h);