Пример #1
0
/* Only called when references > 0. Need to provide a fresh copie of im. */
static int
_evas_common_rgba_image_dirty(Image_Entry *ie_dst, const Image_Entry *ie_src)
{
   RGBA_Image   *dst = (RGBA_Image *) ie_dst;
   RGBA_Image   *src = (RGBA_Image *) ie_src;

   evas_common_rgba_image_scalecache_dirty((Image_Entry *)ie_src);
   evas_common_rgba_image_scalecache_dirty(ie_dst);
   evas_cache_image_load_data(&src->cache_entry);
   if (_evas_common_rgba_image_surface_alloc(&dst->cache_entry,
                                             src->cache_entry.w, src->cache_entry.h))
     {
#ifdef EVAS_CSERVE
        if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src);
#endif        
        return 1;
     }

#ifdef EVAS_CSERVE
   if (ie_src->data1) evas_cserve_image_free((Image_Entry*) ie_src);
#endif   
   evas_common_image_colorspace_normalize(src);
   evas_common_image_colorspace_normalize(dst);
/*    evas_common_blit_rectangle(src, dst, 0, 0, src->cache_entry.w, src->cache_entry.h, 0, 0); */
/*    evas_common_cpu_end_opt(); */

   return 0;
}
Пример #2
0
static int
evas_cache_image_dfb_constructor(Engine_Image_Entry *eie, void *data)
{
   DirectFB_Engine_Image_Entry *deie = (DirectFB_Engine_Image_Entry *)eie;
   Render_Engine *re = data;
   IDirectFBSurface *s;
   RGBA_Image *im;

   im = (RGBA_Image *)eie->src;
   if (!im)
     return EVAS_LOAD_ERROR_NONE; // XXX TODO: confirm?

   evas_cache_image_load_data(&im->cache_entry);
   if (!im->image.data)
     return EVAS_LOAD_ERROR_NONE; // XXX TODO: confirm?

   s = _dfb_surface_from_data(re->spec->dfb, eie->w, eie->h, im->image.data);
   if (!s)
     return EVAS_LOAD_ERROR_GENERIC;

   deie->surface = s;
   deie->flags.engine_surface = 0;

   return EVAS_LOAD_ERROR_NONE;
}