summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2021-03-24 08:51:26 +0100
committerEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2021-03-25 09:06:25 +0100
commit70251867a50f9f606a7ceaf2338375a67e413b83 (patch)
tree45cd22b0e8727c22f359f9a3b6b6624ca89a21dc
parent5577cbaac59e7fc198ea2c98c1e4268779fbf0b4 (diff)
Fix compilation with experimental x11 paint engine feature
Adding support for vertical subpixel positions in d79a9b1a4f694a227ce62ccab9b44685a9755916 changed some private APIs which were used from the xcb-native-painting feature. This fixes this (it does not implement vertical subpixels but simply sets the vertical subpixel position to 0). It also adds a missing "override" which triggered the warnings-are-errors when compiling for me. Fixes: QTBUG-92011 Pick-to: 6.1 Change-Id: If214a0d19a41e623ca9ef8e6215bc145f9846ae9 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
-rw-r--r--src/gui/text/freetype/qfontengine_ft_p.h2
-rw-r--r--src/plugins/platforms/xcb/nativepainting/qpaintengine_x11.cpp12
2 files changed, 8 insertions, 6 deletions
diff --git a/src/gui/text/freetype/qfontengine_ft_p.h b/src/gui/text/freetype/qfontengine_ft_p.h
index e9234e7d69..03059c7d13 100644
--- a/src/gui/text/freetype/qfontengine_ft_p.h
+++ b/src/gui/text/freetype/qfontengine_ft_p.h
@@ -363,7 +363,7 @@ private:
Q_DECLARE_TYPEINFO(QFontEngineFT::QGlyphSet, Q_RELOCATABLE_TYPE);
-inline size_t qHash(const QFontEngineFT::GlyphAndSubPixelPosition &g, size_t seed)
+inline size_t qHash(const QFontEngineFT::GlyphAndSubPixelPosition &g, size_t seed = 0)
{
return qHashMulti(seed,
g.glyph,
diff --git a/src/plugins/platforms/xcb/nativepainting/qpaintengine_x11.cpp b/src/plugins/platforms/xcb/nativepainting/qpaintengine_x11.cpp
index ef22efa164..1e3c60ccd5 100644
--- a/src/plugins/platforms/xcb/nativepainting/qpaintengine_x11.cpp
+++ b/src/plugins/platforms/xcb/nativepainting/qpaintengine_x11.cpp
@@ -70,7 +70,7 @@ public:
XTrapezoid *traps;
int allocated;
int size;
- void addTrap(const Trapezoid &trap);
+ void addTrap(const Trapezoid &trap) override;
QRect tessellate(const QPointF *points, int nPoints, bool winding) {
size = 0;
setWinding(winding);
@@ -2454,7 +2454,7 @@ static bool path_for_glyphs(QPainterPath *path,
ft->lockFace();
int i = 0;
while (i < glyphs.size()) {
- QFontEngineFT::Glyph *glyph = ft->loadGlyph(glyphs[i], 0, QFontEngineFT::Format_Mono);
+ QFontEngineFT::Glyph *glyph = ft->loadGlyph(glyphs[i], QFixedPoint(), QFontEngineFT::Format_Mono);
// #### fix case where we don't get a glyph
if (!glyph || glyph->format != QFontEngineFT::Format_Mono) {
result = false;
@@ -2606,7 +2606,8 @@ bool QXRenderGlyphCache::addGlyphs(const QTextItemInt &ti,
XGlyphInfo xglyphinfo;
for (int i = 0; i < glyphs.size(); ++i) {
- const QFixed spp = ft->subPixelPositionForX(positions[i].x);
+ const QFixed sppx = ft->subPixelPositionForX(positions[i].x);
+ const QFixedPoint spp(sppx, 0);
QFontEngineFT::Glyph *glyph = set->getGlyph(glyphs[i], spp);
Glyph xglyphid = qHash(QFontEngineFT::GlyphAndSubPixelPosition(glyphs[i], spp));
@@ -2698,7 +2699,8 @@ bool QXRenderGlyphCache::draw(Drawable src, Drawable dst, const QTransform &matr
if (!isValidCoordinate(positions[i]))
break;
- const QFixed spp = ft->subPixelPositionForX(positions[i].x);
+ const QFixed sppx = ft->subPixelPositionForX(positions[i].x);
+ const QFixedPoint spp(sppx, 0);
QFontEngineFT::Glyph *g = set->getGlyph(glyphs[i], spp);
if (g
@@ -2825,7 +2827,7 @@ QFontEngine::GlyphFormat QXRenderGlyphCache::glyphFormatForDepth(QFontEngine *fo
Glyph QXRenderGlyphCache::glyphId(glyph_t glyph, QFixed subPixelPosition)
{
- return qHash(QFontEngineFT::GlyphAndSubPixelPosition(glyph, subPixelPosition));
+ return qHash(QFontEngineFT::GlyphAndSubPixelPosition(glyph, QFixedPoint(subPixelPosition, 0)));
}
bool QXRenderGlyphCache::isValidCoordinate(const QFixedPoint &fp)