summaryrefslogtreecommitdiff
path: root/extra/xorg-server/randr-compare-all-the-bytes-in-rrpostpendingproperties.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extra/xorg-server/randr-compare-all-the-bytes-in-rrpostpendingproperties.patch')
-rw-r--r--extra/xorg-server/randr-compare-all-the-bytes-in-rrpostpendingproperties.patch36
1 files changed, 36 insertions, 0 deletions
diff --git a/extra/xorg-server/randr-compare-all-the-bytes-in-rrpostpendingproperties.patch b/extra/xorg-server/randr-compare-all-the-bytes-in-rrpostpendingproperties.patch
new file mode 100644
index 000000000..36d28ded0
--- /dev/null
+++ b/extra/xorg-server/randr-compare-all-the-bytes-in-rrpostpendingproperties.patch
@@ -0,0 +1,36 @@
+From fa425363e3927e86d57f42c4b6e4995d26d6bd0c Mon Sep 17 00:00:00 2001
+From: Aaron Plattner <aplattner@nvidia.com>
+Date: Fri, 29 Jul 2011 23:12:06 +0000
+Subject: randr: Compare all the bytes in RRPostPendingProperties
+
+RRPostPendingProperties tries to compare the pending and current
+property values to decide whether they're actually changing. However,
+it does this using a memcmp that passes in pending_value->size as the
+number of bytes. This is actually the number of elements, where each
+element is (pending_value->format / 8) bytes long. This causes the
+pending value to not be propagated if the first pending_value->size
+bytes are the same and only the end of it is changing.
+
+Fix this by computing the total number of bytes to compare in the
+memcmp.
+
+Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
+Reviewed-by: Keith Packard <keithp@keithp.com>
+Signed-off-by: Keith Packard <keithp@keithp.com>
+(cherry picked from commit 08dfff92e8d0c2b1726634392c147f6634d1706d)
+---
+diff --git a/randr/rrproperty.c b/randr/rrproperty.c
+index ba04c16..61e7bb4 100644
+--- a/randr/rrproperty.c
++++ b/randr/rrproperty.c
+@@ -283,7 +283,7 @@ RRPostPendingProperties (RROutputPtr output)
+ pending_value->format == current_value->format &&
+ pending_value->size == current_value->size &&
+ !memcmp (pending_value->data, current_value->data,
+- pending_value->size))
++ pending_value->size * (pending_value->format / 8)))
+ continue;
+
+ if (RRChangeOutputProperty (output, property->propertyName,
+--
+cgit v0.8.3-6-g21f6