mozilla-bmo1504834-part4.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Sun, 27 Dec 2020 10:49:49 +0100
branchfirefox84
changeset 1152 4cfe46c9a944
parent 1123 7fa561e5d7c7
permissions -rw-r--r--
Firefox 84.0

# HG changeset patch
# Parent  883d2c7fec80b9714ccfefa461a02f5b09e3ee09
Problem description: Tab-titles that are too long to fit into a tab get faded out.
                     On big endian this is broken and instead of fading out, the
                     tab gets white and the font transparent, leading to an unreadable
                     tab-title
Solution: This is not a real solution, but a hack. The real solution would have been
          to byte-swap the correct buffer, but I could not find it.
          So the next best thing is to deactivate the fading-effect. Now all tab-titles
          are readable, albeit not as pretty to look at as they could be.
Side-effects: I have not yet found an unwanted side-effect.

diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp
--- a/gfx/2d/DrawTargetSkia.cpp
+++ b/gfx/2d/DrawTargetSkia.cpp
@@ -1856,16 +1856,24 @@ void DrawTargetSkia::PushLayerWithBlend(
   }
 
   SkCanvas::SaveLayerRec saveRec(
       aBounds.IsEmpty() ? nullptr : &bounds, &paint, nullptr, clipImage.get(),
       &clipMatrix,
       SkCanvas::kPreserveLCDText_SaveLayerFlag |
           (aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0));
 
+#if MOZ_BIG_ENDIAN()
+  // Pushing a layer where an aMask is defined produces wrong output.
+  // We _should_ endian swap the data, but I couldn't find a workable way to do so
+  // Therefore I deactivate those layers in the meantime.
+  // The result is: Tab-titles that are longer than the available space should be faded out.
+  //                The fading doesn't work, so we deactivate the fading-effect here.
+  if (!aMask)
+#endif
   mCanvas->saveLayer(saveRec);
 
   SetPermitSubpixelAA(aOpaque);
 
 #ifdef MOZ_WIDGET_COCOA
   CGContextRelease(mCG);
   mCG = nullptr;
 #endif