summaryrefslogtreecommitdiff
path: root/www/librewolf/files/patch-bug1269654_comment5
diff options
context:
space:
mode:
Diffstat (limited to 'www/librewolf/files/patch-bug1269654_comment5')
-rw-r--r--www/librewolf/files/patch-bug1269654_comment543
1 files changed, 43 insertions, 0 deletions
diff --git a/www/librewolf/files/patch-bug1269654_comment5 b/www/librewolf/files/patch-bug1269654_comment5
new file mode 100644
index 000000000000..0aa2d639d352
--- /dev/null
+++ b/www/librewolf/files/patch-bug1269654_comment5
@@ -0,0 +1,43 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=1269654#c5
+https://bug1269654.bmoattachments.org/attachment.cgi?id=8749234
+handle big-endian formats in Cairo format conversions
+
+# HG changeset patch
+# User Lee Salzman <lsalzman@mozilla.com>
+# Date 1462463631 14400
+# Thu May 05 11:53:51 2016 -0400
+# Node ID 8da374804a09977c8f89af5e6e0cb37cb074595d
+# Parent 29662e28a9c93ac67ee0b8ddfb65a9f29bbf73f5
+handle big-endian formats in Cairo format conversions
+
+--- gfx/2d/HelpersCairo.h.orig 2019-12-02 17:51:16.633474000 +0100
++++ gfx/2d/HelpersCairo.h 2019-12-02 17:52:44.939998000 +0100
+@@ -147,7 +147,14 @@ static inline cairo_format_t GfxFormatToCairoFormat(Su
+ case SurfaceFormat::R5G6B5_UINT16:
+ return CAIRO_FORMAT_RGB16_565;
+ default:
+- gfxCriticalError() << "Unknown image format " << (int)format;
++ // _UINT32 formats don't match B8G8R8[AX]8 on big-endian platforms,
++ // and Moz2d uses B8G8R8[AX]8 as if it was _UINT32.
++ // See bug 1269654
++ if (format == SurfaceFormat::B8G8R8X8) {
++ return CAIRO_FORMAT_RGB24;
++ } else if (format != SurfaceFormat::B8G8R8A8) {
++ gfxCriticalError() << "Unknown image format " << (int)format;
++ }
+ return CAIRO_FORMAT_ARGB32;
+ }
+ }
+@@ -177,7 +184,11 @@ static inline cairo_content_t GfxFormatToCairoContent(
+ case SurfaceFormat::A8:
+ return CAIRO_CONTENT_ALPHA;
+ default:
+- gfxCriticalError() << "Unknown image content format " << (int)format;
++ if (format == SurfaceFormat::B8G8R8X8) {
++ return CAIRO_CONTENT_COLOR;
++ } else if (format != SurfaceFormat::B8G8R8A8) {
++ gfxCriticalError() << "Unknown image content format " << (int)format;
++ }
+ return CAIRO_CONTENT_COLOR_ALPHA;
+ }
+ }