summaryrefslogtreecommitdiff
path: root/recipes/cairo/files
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2010-06-02 19:39:42 +0200
committerKoen Kooi <koen@openembedded.org>2010-06-02 19:42:58 +0200
commiteb1cfd85ca2aa47f33b18aed69497ee61c09333b (patch)
treeb95bda141adb0bfa393fafc3f312b09ca65383d0 /recipes/cairo/files
parenta9f8abee2d7926ba2518f96ad58ac53634a64e8b (diff)
cairo 1.8.10: even faster version of patch
Diffstat (limited to 'recipes/cairo/files')
-rw-r--r--recipes/cairo/files/0001-Rely-less-on-DP-FPU-for-common-matrix-test-funcs.patch37
1 files changed, 27 insertions, 10 deletions
diff --git a/recipes/cairo/files/0001-Rely-less-on-DP-FPU-for-common-matrix-test-funcs.patch b/recipes/cairo/files/0001-Rely-less-on-DP-FPU-for-common-matrix-test-funcs.patch
index c54da08b29..c82b3d9373 100644
--- a/recipes/cairo/files/0001-Rely-less-on-DP-FPU-for-common-matrix-test-funcs.patch
+++ b/recipes/cairo/files/0001-Rely-less-on-DP-FPU-for-common-matrix-test-funcs.patch
@@ -8,7 +8,7 @@ Subject: [PATCH] Rely less on DP FPU for common matrix funcs.
1 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/cairo-matrix.c b/src/cairo-matrix.c
-index de1c6ed..3aec9e5 100644
+index de1c6ed..7519852 100644
--- a/src/cairo-matrix.c
+++ b/src/cairo-matrix.c
@@ -43,6 +43,13 @@
@@ -25,7 +25,7 @@ index de1c6ed..3aec9e5 100644
static void
_cairo_matrix_scalar_multiply (cairo_matrix_t *matrix, double scalar);
-@@ -58,10 +65,7 @@ _cairo_matrix_compute_adjoint (cairo_matrix_t *matrix);
+@@ -58,10 +65,8 @@ _cairo_matrix_compute_adjoint (cairo_matrix_t *matrix);
void
cairo_matrix_init_identity (cairo_matrix_t *matrix)
{
@@ -33,11 +33,12 @@ index de1c6ed..3aec9e5 100644
- 1, 0,
- 0, 1,
- 0, 0);
-+ *matrix = _cairo_matrix_identity;
++ matrix->xx = matrix->yy = 1;
++ matrix->xy = matrix->yx = matrix->x0 = matrix->y0 = 0;
}
slim_hidden_def(cairo_matrix_init_identity);
-@@ -86,7 +90,6 @@ slim_hidden_def(cairo_matrix_init_identity);
+@@ -86,7 +91,6 @@ slim_hidden_def(cairo_matrix_init_identity);
void
cairo_matrix_init (cairo_matrix_t *matrix,
double xx, double yx,
@@ -45,14 +46,33 @@ index de1c6ed..3aec9e5 100644
double xy, double yy,
double x0, double y0)
{
-@@ -653,16 +656,13 @@ _cairo_matrix_compute_basis_scale_factors (const cairo_matrix_t *matrix,
+@@ -650,19 +654,32 @@ _cairo_matrix_compute_basis_scale_factors (const cairo_matrix_t *matrix,
+ return CAIRO_STATUS_SUCCESS;
+ }
+
++static inline cairo_bool_t
++_cairo_compare_matrix (const cairo_matrix_t *a, const cairo_matrix_t *b, const int n)
++{
++ uint64_t *ia = (uint64_t*) a;
++ uint64_t *ib = (uint64_t*) b;
++ uint64_t x = 0;
++ int i;
++
++ assert(sizeof(double) == sizeof(uint64_t));
++
++ for(i=0; i < n; i++)
++ x |= ia[i] ^ ib[i];
++
++ return !x;
++}
++
cairo_bool_t
_cairo_matrix_is_identity (const cairo_matrix_t *matrix)
{
- return (matrix->xx == 1.0 && matrix->yx == 0.0 &&
- matrix->xy == 0.0 && matrix->yy == 1.0 &&
- matrix->x0 == 0.0 && matrix->y0 == 0.0);
-+ return !memcmp(matrix, &_cairo_matrix_identity, sizeof(cairo_matrix_t));
++ return _cairo_compare_matrix(matrix, &_cairo_matrix_identity, 6);
}
cairo_bool_t
@@ -60,10 +80,7 @@ index de1c6ed..3aec9e5 100644
{
- return (matrix->xx == 1.0 && matrix->yx == 0.0 &&
- matrix->xy == 0.0 && matrix->yy == 1.0);
-+ return !memcmp(matrix, &_cairo_matrix_identity, sizeof(double)*4);
++ return _cairo_compare_matrix(matrix, &_cairo_matrix_identity, 4);
}
cairo_bool_t
---
-1.5.6.1
-