mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-17 12:47:30 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
52
gfx/cairo/pixman-image-transform.patch
Normal file
52
gfx/cairo/pixman-image-transform.patch
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# HG changeset patch
|
||||
# User Jeff Muizelaar <jmuizelaar@mozilla.com>
|
||||
# Date 1299543337 18000
|
||||
# Node ID 57f411f16517fa3abc31b6b081dd31420c4d9b45
|
||||
# Parent e56ecd8b3a68c158025207c5fd081d043e28f5ce
|
||||
Bug 637828. Reset the transform on the dest image. r=joe
|
||||
|
||||
We can get into a situation where the destination image has a transform
|
||||
because we use it as source. The transform set when the image is a source
|
||||
sticks around and when we use it as a destination pixman gets confused.
|
||||
|
||||
It seems like the code at fault here is really pixman. I think that pixman
|
||||
should probably not be using a transformed fetch on the destination image under
|
||||
any circumstances.
|
||||
|
||||
For example, in this case we're fetching destination pixels from a different
|
||||
part of the image than we're storing them to. I can't see any reason for
|
||||
wanting this behaviour.
|
||||
|
||||
However, reseting the transform seemed like the easiest solution.
|
||||
|
||||
diff --git a/gfx/cairo/cairo/src/cairo-image-surface.c b/gfx/cairo/cairo/src/cairo-image-surface.c
|
||||
--- a/gfx/cairo/cairo/src/cairo-image-surface.c
|
||||
+++ b/gfx/cairo/cairo/src/cairo-image-surface.c
|
||||
@@ -1138,16 +1138,27 @@ _cairo_image_surface_composite (cairo_op
|
||||
return status;
|
||||
|
||||
status = _cairo_image_surface_set_attributes (src, &src_attr,
|
||||
dst_x + width / 2.,
|
||||
dst_y + height / 2.);
|
||||
if (unlikely (status))
|
||||
goto CLEANUP_SURFACES;
|
||||
|
||||
+ /* we sometimes get destinations with transforms.
|
||||
+ * we're not equiped to deal with this */
|
||||
+ {
|
||||
+ static const pixman_transform_t id = {
|
||||
+ {{ pixman_fixed_1, 0, 0 },
|
||||
+ { 0, pixman_fixed_1, 0 },
|
||||
+ { 0, 0, pixman_fixed_1 }}
|
||||
+ };
|
||||
+ pixman_image_set_transform (dst->pixman_image, &id);
|
||||
+ }
|
||||
+
|
||||
if (mask) {
|
||||
status = _cairo_image_surface_set_attributes (mask, &mask_attr,
|
||||
dst_x + width / 2.,
|
||||
dst_y + height / 2.);
|
||||
if (unlikely (status))
|
||||
goto CLEANUP_SURFACES;
|
||||
|
||||
pixman_image_composite (_pixman_operator (op),
|
||||
Loading…
Add table
Add a link
Reference in a new issue