[Webkit-unassigned] [Bug 23526] clipToImageBuffer() for all platforms

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Feb 23 03:03:47 PST 2011


https://bugs.webkit.org/show_bug.cgi?id=23526





--- Comment #29 from Benjamin Otte <otte at gnome.org>  2011-02-23 03:03:47 PST ---

> Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:1185
> +    cairo_surface_t* currentTarget = cairo_get_target(cr);

This should be cairo_get_group_target(cr);
cairo_get_target() will always reference the original surface that was passed to cairo_create(), not the one that's currently painted to.

>> Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:1193
>> +    cairo_fill(currentContentsContext.get());
> 
> I think this can be done with a cairo subsurface, all this block could be just:
> RefPtr<cairo_surface_t> currentContents(adoptRef(cairo_surface_create_for_rectangle(cairo_get_target(cr),
>                                                                                         rect.x(), rect.y(),
>                                                                                         rect.width(), rect.height())));

If that block was meant to get around the problem with self-copies, then no, this cannot be done with subsurfaces, because subsurfaces are just a bit of shim that still proxies all calls to the original surface.

> Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:1199
> +    cairo_set_source_surface(cr, currentContents.get(), rect.x(), rect.y());

You could just do cairo_set_source_surface(cr, currentTarget, rect.x(), rect.y()); here and avoid the whole currentContents surface, unless I'M not understanding why you do the currentContents thing.

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



More information about the webkit-unassigned mailing list