From 22a5c42b83c5bff8d3b47b3b7f0d096fa212d0a6 Mon Sep 17 00:00:00 2001
From: Glenn Watson <glenn.watson@nokia.com>
Date: Thu, 1 Mar 2012 08:57:32 +1000
Subject: [PATCH] Fix material compare for distance field glyph nodes.

The compare function did not take into account the GL texture ID
when comparing materials. This could result in a renderer
merging glyph nodes into a single batch incorrectly.

Change-Id: Ib62c43f93fb1bbbc231197323dced4254ffa12aa
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
---
 src/quick/scenegraph/qsgdistancefieldglyphnode_p.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/quick/scenegraph/qsgdistancefieldglyphnode_p.cpp b/src/quick/scenegraph/qsgdistancefieldglyphnode_p.cpp
index e525d2a458..f9c8349c2c 100644
--- a/src/quick/scenegraph/qsgdistancefieldglyphnode_p.cpp
+++ b/src/quick/scenegraph/qsgdistancefieldglyphnode_p.cpp
@@ -233,7 +233,11 @@ int QSGDistanceFieldTextMaterial::compare(const QSGMaterial *o) const
     }
     QRgb c1 = m_color.rgba();
     QRgb c2 = other->m_color.rgba();
-    return int(c2 < c1) - int(c1 < c2);
+    if (c1 != c2)
+        return int(c2 < c1) - int(c1 < c2);
+    int t0 = m_texture ? m_texture->textureId : -1;
+    int t1 = other->m_texture ? other->m_texture->textureId : -1;
+    return t0 - t1;
 }
 
 
-- 
GitLab