gecko-dev/gfx/cairo/fbcompose-bandaid.patch

37 lines
1.1 KiB
Diff

diff -r 37dcf8c8ef5e gfx/cairo/libpixman/src/fbcompose.c
--- a/gfx/cairo/libpixman/src/fbcompose.c Fri Jun 08 17:16:14 2007 -0700
+++ b/gfx/cairo/libpixman/src/fbcompose.c Fri Jun 08 17:18:31 2007 -0700
@@ -28,6 +28,7 @@
#include "pixman-xserver-compat.h"
#include "fbpict.h"
+#include "fbmmx.h"
#ifdef RENDER
@@ -4093,6 +4094,24 @@ fbCompositeRect (const FbComposeData *da
if (!compose)
return;
+ /* XXX: The non-MMX version of some of the fbCompose functions
+ * overwrite the source or mask data (ones that use
+ * fbCombineMaskC, fbCombineMaskAlphaC, or fbCombineMaskValueC
+ * as helpers). This causes problems with the optimization in
+ * this function that only fetches the source or mask once if
+ * possible. If we're on a non-MMX machine, disable this
+ * optimization as a bandaid fix.
+ *
+ * https://bugs.freedesktop.org/show_bug.cgi?id=5777
+ */
+#ifdef USE_MMX
+ if (!fbHaveMMX())
+#endif
+ {
+ srcClass = SourcePictClassUnknown;
+ maskClass = SourcePictClassUnknown;
+ }
+
for (i = 0; i < data->height; ++i) {
/* fill first half of scanline with source */
if (fetchSrc)