[X2Go-Commits] [pale-moon] 99/102: Revert "Port several Skia upstream fixes."

git-admin at x2go.org git-admin at x2go.org
Mon Feb 25 23:25:58 CET 2019


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch upstream/28.4.0
in repository pale-moon.

commit f29d7ff617d206f793c24603a2ba9aa7505bb888
Author: wolfbeast <mcwerewolf at wolfbeast.com>
Date:   Sun Feb 17 14:54:12 2019 +0100

    Revert "Port several Skia upstream fixes."
    
    This reverts commit 260b06c1c96285459947231a93f08e413be89dd0.
    
    This fixes #976
---
 gfx/skia/skia/include/core/SkPath.h    |  2 +-
 gfx/skia/skia/include/core/SkPathRef.h |  2 --
 gfx/skia/skia/src/core/SkPath.cpp      | 23 +++----------
 gfx/skia/skia/src/core/SkPathPriv.h    |  5 ---
 gfx/skia/skia/src/core/SkScan_Path.cpp | 61 +++++++++++++++++-----------------
 mobile/android/app/mobile.js           |  4 +--
 modules/libpref/init/all.js            |  2 ++
 7 files changed, 39 insertions(+), 60 deletions(-)

diff --git a/gfx/skia/skia/include/core/SkPath.h b/gfx/skia/skia/include/core/SkPath.h
index bde07c4..d1af4f3 100644
--- a/gfx/skia/skia/include/core/SkPath.h
+++ b/gfx/skia/skia/include/core/SkPath.h
@@ -373,7 +373,7 @@ public:
         @param extraPtCount The number of extra points the path should
                             preallocate for.
     */
-    void incReserve(int extraPtCount);
+    void incReserve(unsigned extraPtCount);
 
     /** Set the beginning of the next contour to the point (x,y).
 
diff --git a/gfx/skia/skia/include/core/SkPathRef.h b/gfx/skia/skia/include/core/SkPathRef.h
index d497e7e..0c5cc1a 100644
--- a/gfx/skia/skia/include/core/SkPathRef.h
+++ b/gfx/skia/skia/include/core/SkPathRef.h
@@ -547,8 +547,6 @@ private:
 
     friend class PathRefTest_Private;
     friend class ForceIsRRect_Private; // unit test isRRect
-    friend class SkPath;
-    friend class SkPathPriv;
 };
 
 #endif
diff --git a/gfx/skia/skia/src/core/SkPath.cpp b/gfx/skia/skia/src/core/SkPath.cpp
index db160d9..8f93c9c 100644
--- a/gfx/skia/skia/src/core/SkPath.cpp
+++ b/gfx/skia/skia/src/core/SkPath.cpp
@@ -716,11 +716,9 @@ void SkPath::setConvexity(Convexity c) {
         fFirstDirection = SkPathPriv::kUnknown_FirstDirection;  \
     } while (0)
 
-void SkPath::incReserve(int inc) {
+void SkPath::incReserve(U16CPU inc) {
     SkDEBUGCODE(this->validate();)
-    if (inc > 0) {
-        SkPathRef::Editor(&fPathRef, inc, inc);
-    }
+    SkPathRef::Editor(&fPathRef, inc, inc);
     SkDEBUGCODE(this->validate();)
 }
 
@@ -1693,13 +1691,6 @@ static void subdivide_cubic_to(SkPath* path, const SkPoint pts[4],
 }
 
 void SkPath::transform(const SkMatrix& matrix, SkPath* dst) const {
-    if (matrix.isIdentity()) {
-        if (dst != nullptr && dst != this) {
-            *dst = *this;
-        }
-        return;
-    }
-
     SkDEBUGCODE(this->validate();)
     if (dst == nullptr) {
         dst = (SkPath*)this;
@@ -1747,20 +1738,13 @@ void SkPath::transform(const SkMatrix& matrix, SkPath* dst) const {
         matrix.mapPoints(ed.points(), ed.pathRef()->countPoints());
         dst->fFirstDirection = SkPathPriv::kUnknown_FirstDirection;
     } else {
-        Convexity convexity = Convexity(fConvexity);
-        
         SkPathRef::CreateTransformedCopy(&dst->fPathRef, *fPathRef.get(), matrix);
 
         if (this != dst) {
             dst->fFillType = fFillType;
+            dst->fConvexity = fConvexity;
             dst->fIsVolatile = fIsVolatile;
         }
-        
-        if (matrix.isScaleTranslate() && SkPathPriv::IsAxisAligned(*this)) {
-            dst->fConvexity = convexity;
-        } else {
-            dst->fConvexity = kUnknown_Convexity;
-        }
 
         if (SkPathPriv::kUnknown_FirstDirection == fFirstDirection) {
             dst->fFirstDirection = SkPathPriv::kUnknown_FirstDirection;
@@ -1774,6 +1758,7 @@ void SkPath::transform(const SkMatrix& matrix, SkPath* dst) const {
             } else if (det2x2 > 0) {
                 dst->fFirstDirection = fFirstDirection.load();
             } else {
+                dst->fConvexity = kUnknown_Convexity;
                 dst->fFirstDirection = SkPathPriv::kUnknown_FirstDirection;
             }
         }
diff --git a/gfx/skia/skia/src/core/SkPathPriv.h b/gfx/skia/skia/src/core/SkPathPriv.h
index cfcdc4c..029cb75 100644
--- a/gfx/skia/skia/src/core/SkPathPriv.h
+++ b/gfx/skia/skia/src/core/SkPathPriv.h
@@ -121,11 +121,6 @@ public:
     static const SkScalar* ConicWeightData(const SkPath& path) {
         return path.fPathRef->conicWeights();
     }
-
-    static bool IsAxisAligned(const SkPath& path) {
-        SkRect tmp;
-        return (path.fPathRef->fIsRRect | path.fPathRef->fIsOval) || path.isRect(&tmp);
-    }
 };
 
 #endif
diff --git a/gfx/skia/skia/src/core/SkScan_Path.cpp b/gfx/skia/skia/src/core/SkScan_Path.cpp
index 5e00e3a..d15d2d5 100644
--- a/gfx/skia/skia/src/core/SkScan_Path.cpp
+++ b/gfx/skia/skia/src/core/SkScan_Path.cpp
@@ -241,17 +241,9 @@ static bool update_edge(SkEdge* edge, int last_y) {
     return false;
 }
 
-// Unexpected conditions for which we need to return
-#define ASSERT_RETURN(cond)     \
-    do {                        \
-        if (!(cond)) {          \
-            SkASSERT(false);    \
-            return;             \
-        }                       \
-    } while (0)
-
-// Needs Y to only change once (looser than convex in X)
-static void walk_simple_edges(SkEdge* prevHead, SkBlitter* blitter, int start_y, int stop_y) {
+static void walk_convex_edges(SkEdge* prevHead, SkPath::FillType,
+                              SkBlitter* blitter, int start_y, int stop_y,
+                              PrePostProc proc) {
     validate_sort(prevHead->fNext);
 
     SkEdge* leftE = prevHead->fNext;
@@ -266,28 +258,30 @@ static void walk_simple_edges(SkEdge* prevHead, SkBlitter* blitter, int start_y,
     // not lining up, so we take the max.
     int local_top = SkMax32(leftE->fFirstY, riteE->fFirstY);
 #endif
-    ASSERT_RETURN(local_top >= start_y);
+    SkASSERT(local_top >= start_y);
 
-    while (local_top < stop_y) {
+    for (;;) {
         SkASSERT(leftE->fFirstY <= stop_y);
         SkASSERT(riteE->fFirstY <= stop_y);
 
+        if (leftE->fX > riteE->fX || (leftE->fX == riteE->fX &&
+                                      leftE->fDX > riteE->fDX)) {
+            SkTSwap(leftE, riteE);
+        }
+
         int local_bot = SkMin32(leftE->fLastY, riteE->fLastY);
         local_bot = SkMin32(local_bot, stop_y - 1);
-        ASSERT_RETURN(local_top <= local_bot);
+        SkASSERT(local_top <= local_bot);
 
         SkFixed left = leftE->fX;
         SkFixed dLeft = leftE->fDX;
         SkFixed rite = riteE->fX;
         SkFixed dRite = riteE->fDX;
         int count = local_bot - local_top;
-        ASSERT_RETURN(count >= 0);
+        SkASSERT(count >= 0);
         if (0 == (dLeft | dRite)) {
             int L = SkFixedRoundToInt(left);
             int R = SkFixedRoundToInt(rite);
-            if (L > R) {
-                SkTSwap(L, R);
-            }
             if (L < R) {
                 count += 1;
                 blitter->blitRect(L, local_top, R - L, count);
@@ -297,9 +291,6 @@ static void walk_simple_edges(SkEdge* prevHead, SkBlitter* blitter, int start_y,
             do {
                 int L = SkFixedRoundToInt(left);
                 int R = SkFixedRoundToInt(rite);
-                if (L > R) {
-                    SkTSwap(L, R);
-                }
                 if (L < R) {
                     blitter->blitH(L, local_top, R - L);
                 }
@@ -312,21 +303,28 @@ static void walk_simple_edges(SkEdge* prevHead, SkBlitter* blitter, int start_y,
         leftE->fX = left;
         riteE->fX = rite;
 
-        if (!update_edge(leftE, local_bot)) {
+        if (update_edge(leftE, local_bot)) {
             if (currE->fFirstY >= stop_y) {
-                return; // we're done
+                break;
             }
             leftE = currE;
             currE = currE->fNext;
-            ASSERT_RETURN(leftE->fFirstY == local_top);
         }
-        if (!update_edge(riteE, local_bot)) {
+        if (update_edge(riteE, local_bot)) {
             if (currE->fFirstY >= stop_y) {
-                return; // we're done
+                break;
             }
             riteE = currE;
             currE = currE->fNext;
-            ASSERT_RETURN(riteE->fFirstY == local_top);
+        }
+
+        SkASSERT(leftE);
+        SkASSERT(riteE);
+
+        // check our bottom clip
+        SkASSERT(local_top == local_bot + 1);
+        if (local_top >= stop_y) {
+            break;
         }
     }
 }
@@ -502,9 +500,9 @@ void sk_fill_path(const SkPath& path, const SkIRect* clipRect, SkBlitter* blitte
         proc = PrePostInverseBlitterProc;
     }
 
-    // count >= 2 is required as the convex walker does not handle missing right edges
-    if (path.isConvex() && (nullptr == proc) && count >= 2) {
-        walk_simple_edges(&headEdge, blitter, start_y, stop_y);
+    if (path.isConvex() && (nullptr == proc)) {
+        SkASSERT(count >= 2);   // convex walker does not handle missing right edges
+        walk_convex_edges(&headEdge, path.getFillType(), blitter, start_y, stop_y, nullptr);
     } else {
         int rightEdge;
         if (clipRect) {
@@ -768,7 +766,8 @@ static void sk_fill_triangle(const SkPoint pts[], const SkIRect* clipRect,
     if (clipRect && start_y < clipRect->fTop) {
         start_y = clipRect->fTop;
     }
-    walk_simple_edges(&headEdge, blitter, start_y, stop_y);
+    walk_convex_edges(&headEdge, SkPath::kEvenOdd_FillType, blitter, start_y, stop_y, nullptr);
+//    walk_edges(&headEdge, SkPath::kEvenOdd_FillType, blitter, start_y, stop_y, nullptr);
 }
 
 void SkScan::FillTriangle(const SkPoint pts[], const SkRasterClip& clip,
diff --git a/mobile/android/app/mobile.js b/mobile/android/app/mobile.js
index a28cba4..ef4764d 100644
--- a/mobile/android/app/mobile.js
+++ b/mobile/android/app/mobile.js
@@ -780,9 +780,9 @@ pref("dom.phonenumber.substringmatching.BR", 8);
 pref("dom.phonenumber.substringmatching.CO", 10);
 pref("dom.phonenumber.substringmatching.VE", 7);
 
-// Support, but deprecate, hardware-accelerated Skia canvas
+// Enable hardware-accelerated Skia canvas
 pref("gfx.canvas.azure.backends", "skia");
-pref("gfx.canvas.azure.accelerated", false);
+pref("gfx.canvas.azure.accelerated", true);
 
 // See ua-update.json.in for the packaged UA override list
 pref("general.useragent.updates.enabled", true);
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
index 9bdd00c..f6e9017 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -795,6 +795,8 @@ pref("gfx.content.azure.backends", "direct2d1.1,cairo");
 #ifdef XP_MACOSX
 pref("gfx.content.azure.backends", "cg");
 pref("gfx.canvas.azure.backends", "skia,cg");
+// Accelerated cg canvas where available (10.7+)
+pref("gfx.canvas.azure.accelerated", true);
 #else
 // Linux etc.
 pref("gfx.canvas.azure.backends", "skia,cairo");

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/pale-moon.git


More information about the x2go-commits mailing list