From ce4a431e4d302463c2917e9a2bd5a9206940e5cd Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Mon, 14 May 2012 06:56:22 +0000 Subject: [PATCH] Fix pixman rendering support if you set alpha flag AFTER setting image size for custom image data. SVN revision: 70987 --- legacy/evas/ChangeLog | 6 ++++++ legacy/evas/src/lib/engines/common/evas_image_main.c | 10 ++++++++++ .../src/modules/engines/software_generic/evas_engine.c | 3 +-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/legacy/evas/ChangeLog b/legacy/evas/ChangeLog index f6ddb7a831..c9ced49f10 100644 --- a/legacy/evas/ChangeLog +++ b/legacy/evas/ChangeLog @@ -731,3 +731,9 @@ * Add CServe2 and image cache2 that makes use of it. Several changes in the buffer and software engines to use the right cache if CServe2 is requested for the application. + +2012-05-14 Carsten Haitzler (The Rasterman) + + * Fix pixman rendering support if you set alpha flag AFTER + setting image size for custom image data. + diff --git a/legacy/evas/src/lib/engines/common/evas_image_main.c b/legacy/evas/src/lib/engines/common/evas_image_main.c index f8053a8a96..b6735dc220 100644 --- a/legacy/evas/src/lib/engines/common/evas_image_main.c +++ b/legacy/evas/src/lib/engines/common/evas_image_main.c @@ -777,6 +777,16 @@ evas_common_image_colorspace_dirty(RGBA_Image *im) { im->cs.dirty = 1; evas_common_rgba_image_scalecache_dirty(&im->cache_entry); +#ifdef HAVE_PIXMAN +# ifdef PIXMAN_IMAGE + if (im->pixman.im) + { + pixman_image_unref(im->pixman.im); + im->pixman.im = NULL; + } + _evas_common_rgba_image_post_surface((Image_Entry *)im); +# endif +#endif } EAPI void diff --git a/legacy/evas/src/modules/engines/software_generic/evas_engine.c b/legacy/evas/src/modules/engines/software_generic/evas_engine.c index 3c7eb8da66..a123cd52bb 100644 --- a/legacy/evas/src/modules/engines/software_generic/evas_engine.c +++ b/legacy/evas/src/modules/engines/software_generic/evas_engine.c @@ -566,9 +566,8 @@ eng_image_alpha_set(void *data __UNUSED__, void *image, int has_alpha) return im; } im = (RGBA_Image *) evas_cache_image_alone(&im->cache_entry); - evas_common_image_colorspace_dirty(im); - im->cache_entry.flags.alpha = has_alpha ? 1 : 0; + evas_common_image_colorspace_dirty(im); return im; }