[Swfdec] [Bug 18626] New: Regression in swfdec_renderer_transform()

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Wed Nov 19 13:35:09 PST 2008


http://bugs.freedesktop.org/show_bug.cgi?id=18626

           Summary: Regression in swfdec_renderer_transform()
           Product: swfdec
           Version: git
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: critical
          Priority: medium
         Component: library
        AssignedTo: swfdec at lists.freedesktop.org
        ReportedBy: chris at chris-wilson.co.uk
         QAContact: swfdec at lists.freedesktop.org


commit 90dab77f5639ee9d3d75eb739557350aa432e353 changed the target surface
format from always ARGB32 to depend upon whether the source surface has an
alpha channel. This fails to take into account the result of the color
transformation which may require the alpha channel.

The simple fix would be:
diff --git a/swfdec/swfdec_renderer.c b/swfdec/swfdec_renderer.c
index 787e592..dcf74dd 100644
--- a/swfdec/swfdec_renderer.c
+++ b/swfdec/swfdec_renderer.c
@@ -424,11 +424,10 @@ swfdec_renderer_transform (SwfdecRenderer *renderer,
cairo_surface_t *surface,

   /* FIXME: This function should likely be a vfunc. 
    * Or better: it should compile to a shader */
+  target = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, rect->width,
rect->height);
   if (cairo_surface_get_content (surface) & CAIRO_CONTENT_ALPHA) {
-    target = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, rect->width,
rect->height);
     mask = 0;
   } else {
-    target = cairo_image_surface_create (CAIRO_FORMAT_RGB24, rect->width,
rect->height);
     mask = SWFDEC_COLOR_COMBINE (0, 0, 0, 0xFF);
   }
   cairo_surface_set_device_offset (target, -rect->x, -rect->y);


-- 
Configure bugmail: http://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the Swfdec mailing list