summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2011-02-15 04:55:02 -0500
committerSøren Sandmann Pedersen <ssp@redhat.com>2011-02-18 06:21:37 -0500
commit7feb710e60cdab5c448a396537a8de16e72091e2 (patch)
tree1282e670289829897c4a43e11ffb00633de8dc4f
parent3598ec26ecf761488e2ac1536553eaf3bb361e72 (diff)
Avoid marking images dirty when properties are reset
When an image property is set to the same value that it already is, there is no reason to mark the image dirty and incur a recomputation of the flags.
-rw-r--r--pixman/pixman-image.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
index e91d87ca..55fc17ac 100644
--- a/pixman/pixman-image.c
+++ b/pixman/pixman-image.c
@@ -511,6 +511,12 @@ pixman_image_set_transform (pixman_image_t * image,
goto out;
}
+ if (common->transform &&
+ memcmp (common->transform, transform, sizeof (pixman_transform_t) == 0))
+ {
+ return TRUE;
+ }
+
if (common->transform == NULL)
common->transform = malloc (sizeof (pixman_transform_t));
@@ -535,6 +541,9 @@ PIXMAN_EXPORT void
pixman_image_set_repeat (pixman_image_t *image,
pixman_repeat_t repeat)
{
+ if (image->common.repeat == repeat)
+ return;
+
image->common.repeat = repeat;
image_property_changed (image);
@@ -579,6 +588,9 @@ PIXMAN_EXPORT void
pixman_image_set_source_clipping (pixman_image_t *image,
pixman_bool_t clip_sources)
{
+ if (image->common.clip_sources == clip_sources)
+ return;
+
image->common.clip_sources = clip_sources;
image_property_changed (image);
@@ -594,6 +606,9 @@ pixman_image_set_indexed (pixman_image_t * image,
{
bits_image_t *bits = (bits_image_t *)image;
+ if (bits->indexed == indexed)
+ return;
+
bits->indexed = indexed;
image_property_changed (image);
@@ -656,6 +671,9 @@ PIXMAN_EXPORT void
pixman_image_set_component_alpha (pixman_image_t *image,
pixman_bool_t component_alpha)
{
+ if (image->common.component_alpha == component_alpha)
+ return;
+
image->common.component_alpha = component_alpha;
image_property_changed (image);