author | Petr Sumbera <petr.sumbera@oracle.com> |
Mon, 05 Sep 2016 05:00:46 -0700 | |
branch | s11u3-sru |
changeset 7035 | 4c2f26e9d5ab |
child 7364 | 1ac24a377555 |
permissions | -rw-r--r-- |
7035
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
1 |
This enables tracking of ARGB values for image masks, since some machines do |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
2 |
not use ARGB values. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
3 |
See Mozilla bug #716462 - Performance regression with xBGR visual and no |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
4 |
RENDER extension. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
5 |
We would like to try to get this upstream in the future. |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
6 |
|
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
7 |
diff --git a/gfx/cairo/cairo/src/cairo-xlib-surface.c b/gfx/cairo/cairo/src/cairo-xlib-surface.c |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
8 |
--- a/gfx/cairo/cairo/src/cairo-xlib-surface.c |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
9 |
+++ b/gfx/cairo/cairo/src/cairo-xlib-surface.c |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
10 |
@@ -2325,6 +2325,7 @@ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
11 |
cairo_region_t *clip_region) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
12 |
{ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
13 |
cairo_image_surface_t *image; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
14 |
+ cairo_format_masks_t image_masks; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
15 |
cairo_rectangle_int_t extents; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
16 |
cairo_status_t status; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
17 |
int tx, ty; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
18 |
@@ -2341,6 +2342,16 @@ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
19 |
(image->base.content & CAIRO_CONTENT_ALPHA) == 0))) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
20 |
return CAIRO_INT_STATUS_UNSUPPORTED; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
21 |
|
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
22 |
+ if (image->base.backend->type == CAIRO_SURFACE_TYPE_IMAGE) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
23 |
+ if (_pixman_format_to_masks (image->pixman_format, &image_masks)) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
24 |
+ if (! ((image_masks.alpha_mask == surface->a_mask || surface->a_mask == 0) && |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
25 |
+ (image_masks.red_mask == surface->r_mask || surface->r_mask == 0) && |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
26 |
+ (image_masks.green_mask == surface->g_mask || surface->g_mask == 0) && |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
27 |
+ (image_masks.blue_mask == surface->b_mask || surface->b_mask == 0))) |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
28 |
+ return CAIRO_INT_STATUS_UNSUPPORTED; |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
29 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
30 |
+ } |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
31 |
+ |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
32 |
if (image->base.backend->type != CAIRO_SURFACE_TYPE_IMAGE) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
33 |
if (image->base.backend->type == CAIRO_INTERNAL_SURFACE_TYPE_SNAPSHOT) { |
4c2f26e9d5ab
24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
34 |
image = (cairo_image_surface_t *) ((cairo_surface_snapshot_t *) image)->target; |