Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I9935bacae0d6ba532418fc3d28adbc7ca1463604
This commit is contained in:
commit
0a7302abbc
@ -17,8 +17,8 @@ os_directory = $$(INTEGRITY_DIR)
|
|||||||
isEmpty(os_directory): \
|
isEmpty(os_directory): \
|
||||||
error("This qmakespec requires $INTEGRITY_DIR to be set")
|
error("This qmakespec requires $INTEGRITY_DIR to be set")
|
||||||
|
|
||||||
QMAKE_CC = cxintarm64 -U__ARM_NEON__ -U__ARM_NEON -bsp $$bsp_name -os_dir $$os_directory -non_shared
|
QMAKE_CC = cxintarm64 -bsp $$bsp_name -os_dir $$os_directory -non_shared
|
||||||
QMAKE_CXX = cxintarm64 -U__ARM_NEON__ -U__ARM_NEON -bsp $$bsp_name -os_dir $$os_directory -non_shared
|
QMAKE_CXX = cxintarm64 -bsp $$bsp_name -os_dir $$os_directory -non_shared
|
||||||
QMAKE_LINK = $$QMAKE_CXX
|
QMAKE_LINK = $$QMAKE_CXX
|
||||||
QMAKE_AR = $$QMAKE_CXX -archive -o
|
QMAKE_AR = $$QMAKE_CXX -archive -o
|
||||||
|
|
||||||
|
@ -254,7 +254,7 @@ void NmakeMakefileGenerator::init()
|
|||||||
|
|
||||||
ProString tgt = project->first("DESTDIR")
|
ProString tgt = project->first("DESTDIR")
|
||||||
+ project->first("TARGET") + project->first("TARGET_VERSION_EXT");
|
+ project->first("TARGET") + project->first("TARGET_VERSION_EXT");
|
||||||
if(project->isActiveConfig("shared")) {
|
if (project->first("TEMPLATE") == "lib" && project->isActiveConfig("shared")) {
|
||||||
project->values("QMAKE_CLEAN").append(tgt + ".exp");
|
project->values("QMAKE_CLEAN").append(tgt + ".exp");
|
||||||
project->values("QMAKE_DISTCLEAN").append(tgt + ".lib");
|
project->values("QMAKE_DISTCLEAN").append(tgt + ".lib");
|
||||||
}
|
}
|
||||||
|
@ -52,65 +52,41 @@ Q_GUI_EXPORT void QT_FASTCALL qt_convert_rgb888_to_rgb32_neon(quint32 *dst, cons
|
|||||||
|
|
||||||
const quint32 *const end = dst + len;
|
const quint32 *const end = dst + len;
|
||||||
|
|
||||||
// align dst on 64 bits
|
// align dst on 128 bits
|
||||||
const int offsetToAlignOn8Bytes = (reinterpret_cast<quintptr>(dst) >> 2) & 0x1;
|
const int offsetToAlignOn16Bytes = (reinterpret_cast<quintptr>(dst) >> 2) & 0x3;
|
||||||
for (int i = 0; i < offsetToAlignOn8Bytes; ++i) {
|
for (int i = 0; i < offsetToAlignOn16Bytes; ++i) {
|
||||||
*dst++ = qRgb(src[0], src[1], src[2]);
|
*dst++ = qRgb(src[0], src[1], src[2]);
|
||||||
src += 3;
|
src += 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((len - offsetToAlignOn8Bytes) >= 8) {
|
if ((len - offsetToAlignOn16Bytes) >= 16) {
|
||||||
const quint32 *const simdEnd = end - 7;
|
const quint32 *const simdEnd = end - 15;
|
||||||
#if !defined(Q_PROCESSOR_ARM_64)
|
uint8x16x4_t dstVector;
|
||||||
register uint8x8_t fullVector asm ("d3") = vdup_n_u8(0xff);
|
|
||||||
do {
|
|
||||||
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
|
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
|
||||||
asm volatile (
|
dstVector.val[0] = vdupq_n_u8(0xff);
|
||||||
"vld3.8 { d4, d5, d6 }, [%[SRC]] !\n\t"
|
|
||||||
"vst4.8 { d3, d4, d5, d6 }, [%[DST],:64] !\n\t"
|
|
||||||
: [DST]"+r" (dst), [SRC]"+r" (src)
|
|
||||||
: "w"(fullVector)
|
|
||||||
: "memory", "d4", "d5", "d6"
|
|
||||||
);
|
|
||||||
#else
|
#else
|
||||||
asm volatile (
|
dstVector.val[3] = vdupq_n_u8(0xff);
|
||||||
"vld3.8 { d0, d1, d2 }, [%[SRC]] !\n\t"
|
|
||||||
"vswp d0, d2\n\t"
|
|
||||||
"vst4.8 { d0, d1, d2, d3 }, [%[DST],:64] !\n\t"
|
|
||||||
: [DST]"+r" (dst), [SRC]"+r" (src)
|
|
||||||
: "w"(fullVector)
|
|
||||||
: "memory", "d0", "d1", "d2"
|
|
||||||
);
|
|
||||||
#endif
|
#endif
|
||||||
} while (dst < simdEnd);
|
|
||||||
#else
|
|
||||||
register uint8x8_t fullVector asm ("v3") = vdup_n_u8(0xff);
|
|
||||||
do {
|
do {
|
||||||
|
uint8x16x3_t srcVector = vld3q_u8(src);
|
||||||
|
src += 3 * 16;
|
||||||
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
|
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
|
||||||
asm volatile (
|
dstVector.val[1] = srcVector.val[0];
|
||||||
"ld3 { v4.8b, v5.8b, v6.8b }, [%[SRC]], #24 \n\t"
|
dstVector.val[2] = srcVector.val[1];
|
||||||
"st4 { v3.8b, v4.8b, v5.8b, v6.8b }, [%[DST]], #32 \n\t"
|
dstVector.val[3] = srcVector.val[2];
|
||||||
: [DST]"+r" (dst), [SRC]"+r" (src)
|
|
||||||
: "w"(fullVector)
|
|
||||||
: "memory", "v4", "v5", "v6"
|
|
||||||
);
|
|
||||||
#else
|
#else
|
||||||
asm volatile (
|
dstVector.val[0] = srcVector.val[2];
|
||||||
"ld3 { v0.8b, v1.8b, v2.8b }, [%[SRC]], #24 \n\t"
|
dstVector.val[1] = srcVector.val[1];
|
||||||
"mov v4.8b, v2.8b\n\t"
|
dstVector.val[2] = srcVector.val[0];
|
||||||
"mov v2.8b, v0.8b\n\t"
|
|
||||||
"mov v0.8b, v4.8b\n\t"
|
|
||||||
"st4 { v0.8b, v1.8b, v2.8b, v3.8b }, [%[DST]], #32 \n\t"
|
|
||||||
: [DST]"+r" (dst), [SRC]"+r" (src)
|
|
||||||
: "w"(fullVector)
|
|
||||||
: "memory", "v0", "v1", "v2", "v4"
|
|
||||||
);
|
|
||||||
#endif
|
#endif
|
||||||
|
vst4q_u8(reinterpret_cast<uint8_t*>(dst), dstVector);
|
||||||
|
dst += 16;
|
||||||
} while (dst < simdEnd);
|
} while (dst < simdEnd);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
while (dst != end) {
|
int i = 0;
|
||||||
|
int length = end - dst;
|
||||||
|
SIMD_EPILOGUE(i, length, 15) {
|
||||||
*dst++ = qRgb(src[0], src[1], src[2]);
|
*dst++ = qRgb(src[0], src[1], src[2]);
|
||||||
src += 3;
|
src += 3;
|
||||||
}
|
}
|
||||||
|
@ -131,9 +131,11 @@ ARCH_HASWELL_SOURCES += painting/qdrawhelper_avx2.cpp
|
|||||||
|
|
||||||
NEON_SOURCES += painting/qdrawhelper_neon.cpp painting/qimagescale_neon.cpp
|
NEON_SOURCES += painting/qdrawhelper_neon.cpp painting/qimagescale_neon.cpp
|
||||||
NEON_HEADERS += painting/qdrawhelper_neon_p.h
|
NEON_HEADERS += painting/qdrawhelper_neon_p.h
|
||||||
NEON_ASM += ../3rdparty/pixman/pixman-arm-neon-asm.S painting/qdrawhelper_neon_asm.S
|
|
||||||
!uikit:!win32:contains(QT_ARCH, "arm"): CONFIG += no_clang_integrated_as
|
!uikit:!win32:contains(QT_ARCH, "arm"): CONFIG += no_clang_integrated_as
|
||||||
!uikit:!win32:!contains(QT_ARCH, "arm64"): DEFINES += ENABLE_PIXMAN_DRAWHELPERS
|
!uikit:!win32:!integrity:!contains(QT_ARCH, "arm64") {
|
||||||
|
NEON_ASM += ../3rdparty/pixman/pixman-arm-neon-asm.S painting/qdrawhelper_neon_asm.S
|
||||||
|
DEFINES += ENABLE_PIXMAN_DRAWHELPERS
|
||||||
|
}
|
||||||
|
|
||||||
MIPS_DSP_SOURCES += painting/qdrawhelper_mips_dsp.cpp
|
MIPS_DSP_SOURCES += painting/qdrawhelper_mips_dsp.cpp
|
||||||
MIPS_DSP_HEADERS += painting/qdrawhelper_mips_dsp_p.h painting/qt_mips_asm_dsp_p.h
|
MIPS_DSP_HEADERS += painting/qdrawhelper_mips_dsp_p.h painting/qt_mips_asm_dsp_p.h
|
||||||
|
@ -50,7 +50,18 @@ QT_BEGIN_NAMESPACE
|
|||||||
void qt_memfill32(quint32 *dest, quint32 value, qsizetype count)
|
void qt_memfill32(quint32 *dest, quint32 value, qsizetype count)
|
||||||
{
|
{
|
||||||
const int epilogueSize = count % 16;
|
const int epilogueSize = count % 16;
|
||||||
#if !defined(Q_PROCESSOR_ARM_64)
|
#if defined(Q_CC_GHS) || defined(Q_CC_MSVC)
|
||||||
|
// inline assembler free version:
|
||||||
|
if (count >= 16) {
|
||||||
|
quint32 *const neonEnd = dest + count - epilogueSize;
|
||||||
|
const uint32x4_t valueVector1 = vdupq_n_u32(value);
|
||||||
|
const uint32x4x4_t valueVector4 = { valueVector1, valueVector1, valueVector1, valueVector1 };
|
||||||
|
do {
|
||||||
|
vst4q_u32(dest, valueVector4);
|
||||||
|
dest += 16;
|
||||||
|
} while (dest != neonEnd);
|
||||||
|
}
|
||||||
|
#elif !defined(Q_PROCESSOR_ARM_64)
|
||||||
if (count >= 16) {
|
if (count >= 16) {
|
||||||
quint32 *const neonEnd = dest + count - epilogueSize;
|
quint32 *const neonEnd = dest + count - epilogueSize;
|
||||||
register uint32x4_t valueVector1 asm ("q0") = vdupq_n_u32(value);
|
register uint32x4_t valueVector1 asm ("q0") = vdupq_n_u32(value);
|
||||||
|
@ -198,7 +198,7 @@ QHttp2ProtocolHandler::QHttp2ProtocolHandler(QHttpNetworkConnectionChannel *chan
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!channel->ssl) {
|
if (!channel->ssl && m_connection->connectionType() != QHttpNetworkConnection::ConnectionTypeHTTP2Direct) {
|
||||||
// We upgraded from HTTP/1.1 to HTTP/2. channel->request was already sent
|
// We upgraded from HTTP/1.1 to HTTP/2. channel->request was already sent
|
||||||
// as HTTP/1.1 request. The response with status code 101 triggered
|
// as HTTP/1.1 request. The response with status code 101 triggered
|
||||||
// protocol switch and now we are waiting for the real response, sent
|
// protocol switch and now we are waiting for the real response, sent
|
||||||
|
@ -491,9 +491,11 @@ void QCoreTextFontEngine::draw(CGContextRef ctx, qreal x, qreal y, const QTextIt
|
|||||||
|
|
||||||
struct ConvertPathInfo
|
struct ConvertPathInfo
|
||||||
{
|
{
|
||||||
ConvertPathInfo(QPainterPath *newPath, const QPointF &newPos) : path(newPath), pos(newPos) {}
|
ConvertPathInfo(QPainterPath *newPath, const QPointF &newPos, qreal newStretch = 1.0) :
|
||||||
|
path(newPath), pos(newPos), stretch(newStretch) {}
|
||||||
QPainterPath *path;
|
QPainterPath *path;
|
||||||
QPointF pos;
|
QPointF pos;
|
||||||
|
qreal stretch;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void convertCGPathToQPainterPath(void *info, const CGPathElement *element)
|
static void convertCGPathToQPainterPath(void *info, const CGPathElement *element)
|
||||||
@ -501,25 +503,25 @@ static void convertCGPathToQPainterPath(void *info, const CGPathElement *element
|
|||||||
ConvertPathInfo *myInfo = static_cast<ConvertPathInfo *>(info);
|
ConvertPathInfo *myInfo = static_cast<ConvertPathInfo *>(info);
|
||||||
switch(element->type) {
|
switch(element->type) {
|
||||||
case kCGPathElementMoveToPoint:
|
case kCGPathElementMoveToPoint:
|
||||||
myInfo->path->moveTo(element->points[0].x + myInfo->pos.x(),
|
myInfo->path->moveTo((element->points[0].x * myInfo->stretch) + myInfo->pos.x(),
|
||||||
element->points[0].y + myInfo->pos.y());
|
element->points[0].y + myInfo->pos.y());
|
||||||
break;
|
break;
|
||||||
case kCGPathElementAddLineToPoint:
|
case kCGPathElementAddLineToPoint:
|
||||||
myInfo->path->lineTo(element->points[0].x + myInfo->pos.x(),
|
myInfo->path->lineTo((element->points[0].x * myInfo->stretch) + myInfo->pos.x(),
|
||||||
element->points[0].y + myInfo->pos.y());
|
element->points[0].y + myInfo->pos.y());
|
||||||
break;
|
break;
|
||||||
case kCGPathElementAddQuadCurveToPoint:
|
case kCGPathElementAddQuadCurveToPoint:
|
||||||
myInfo->path->quadTo(element->points[0].x + myInfo->pos.x(),
|
myInfo->path->quadTo((element->points[0].x * myInfo->stretch) + myInfo->pos.x(),
|
||||||
element->points[0].y + myInfo->pos.y(),
|
element->points[0].y + myInfo->pos.y(),
|
||||||
element->points[1].x + myInfo->pos.x(),
|
(element->points[1].x * myInfo->stretch) + myInfo->pos.x(),
|
||||||
element->points[1].y + myInfo->pos.y());
|
element->points[1].y + myInfo->pos.y());
|
||||||
break;
|
break;
|
||||||
case kCGPathElementAddCurveToPoint:
|
case kCGPathElementAddCurveToPoint:
|
||||||
myInfo->path->cubicTo(element->points[0].x + myInfo->pos.x(),
|
myInfo->path->cubicTo((element->points[0].x * myInfo->stretch) + myInfo->pos.x(),
|
||||||
element->points[0].y + myInfo->pos.y(),
|
element->points[0].y + myInfo->pos.y(),
|
||||||
element->points[1].x + myInfo->pos.x(),
|
(element->points[1].x * myInfo->stretch) + myInfo->pos.x(),
|
||||||
element->points[1].y + myInfo->pos.y(),
|
element->points[1].y + myInfo->pos.y(),
|
||||||
element->points[2].x + myInfo->pos.x(),
|
(element->points[2].x * myInfo->stretch) + myInfo->pos.x(),
|
||||||
element->points[2].y + myInfo->pos.y());
|
element->points[2].y + myInfo->pos.y());
|
||||||
break;
|
break;
|
||||||
case kCGPathElementCloseSubpath:
|
case kCGPathElementCloseSubpath:
|
||||||
@ -543,9 +545,10 @@ void QCoreTextFontEngine::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *position
|
|||||||
if (synthesisFlags & QFontEngine::SynthesizedItalic)
|
if (synthesisFlags & QFontEngine::SynthesizedItalic)
|
||||||
cgMatrix = CGAffineTransformConcat(cgMatrix, CGAffineTransformMake(1, 0, -SYNTHETIC_ITALIC_SKEW, 1, 0, 0));
|
cgMatrix = CGAffineTransformConcat(cgMatrix, CGAffineTransformMake(1, 0, -SYNTHETIC_ITALIC_SKEW, 1, 0, 0));
|
||||||
|
|
||||||
|
qreal stretch = fontDef.stretch ? qreal(fontDef.stretch) / 100 : 1.0;
|
||||||
for (int i = 0; i < nGlyphs; ++i) {
|
for (int i = 0; i < nGlyphs; ++i) {
|
||||||
QCFType<CGPathRef> cgpath = CTFontCreatePathForGlyph(ctfont, glyphs[i], &cgMatrix);
|
QCFType<CGPathRef> cgpath = CTFontCreatePathForGlyph(ctfont, glyphs[i], &cgMatrix);
|
||||||
ConvertPathInfo info(path, positions[i].toPointF());
|
ConvertPathInfo info(path, positions[i].toPointF(), stretch);
|
||||||
CGPathApply(cgpath, &info, convertCGPathToQPainterPath);
|
CGPathApply(cgpath, &info, convertCGPathToQPainterPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -702,8 +702,8 @@ static inline double qt_fixed_to_double(const FIXED &p) {
|
|||||||
return ((p.value << 16) + p.fract) / 65536.0;
|
return ((p.value << 16) + p.fract) / 65536.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline QPointF qt_to_qpointf(const POINTFX &pt, qreal scale) {
|
static inline QPointF qt_to_qpointf(const POINTFX &pt, qreal scale, qreal stretch) {
|
||||||
return QPointF(qt_fixed_to_double(pt.x) * scale, -qt_fixed_to_double(pt.y) * scale);
|
return QPointF(qt_fixed_to_double(pt.x) * scale * stretch, -qt_fixed_to_double(pt.y) * scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef GGO_UNHINTED
|
#ifndef GGO_UNHINTED
|
||||||
@ -711,7 +711,8 @@ static inline QPointF qt_to_qpointf(const POINTFX &pt, qreal scale) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static bool addGlyphToPath(glyph_t glyph, const QFixedPoint &position, HDC hdc,
|
static bool addGlyphToPath(glyph_t glyph, const QFixedPoint &position, HDC hdc,
|
||||||
QPainterPath *path, bool ttf, glyph_metrics_t *metric = 0, qreal scale = 1)
|
QPainterPath *path, bool ttf, glyph_metrics_t *metric = 0,
|
||||||
|
qreal scale = 1.0, qreal stretch = 1.0)
|
||||||
{
|
{
|
||||||
MAT2 mat;
|
MAT2 mat;
|
||||||
mat.eM11.value = mat.eM22.value = 1;
|
mat.eM11.value = mat.eM22.value = 1;
|
||||||
@ -761,7 +762,7 @@ static bool addGlyphToPath(glyph_t glyph, const QFixedPoint &position, HDC hdc,
|
|||||||
while (headerOffset < bufferSize) {
|
while (headerOffset < bufferSize) {
|
||||||
const TTPOLYGONHEADER *ttph = reinterpret_cast<const TTPOLYGONHEADER *>(dataBuffer + headerOffset);
|
const TTPOLYGONHEADER *ttph = reinterpret_cast<const TTPOLYGONHEADER *>(dataBuffer + headerOffset);
|
||||||
|
|
||||||
QPointF lastPoint(qt_to_qpointf(ttph->pfxStart, scale));
|
QPointF lastPoint(qt_to_qpointf(ttph->pfxStart, scale, stretch));
|
||||||
path->moveTo(lastPoint + oset);
|
path->moveTo(lastPoint + oset);
|
||||||
offset += sizeof(TTPOLYGONHEADER);
|
offset += sizeof(TTPOLYGONHEADER);
|
||||||
while (offset < headerOffset + ttph->cb) {
|
while (offset < headerOffset + ttph->cb) {
|
||||||
@ -769,7 +770,7 @@ static bool addGlyphToPath(glyph_t glyph, const QFixedPoint &position, HDC hdc,
|
|||||||
switch (curve->wType) {
|
switch (curve->wType) {
|
||||||
case TT_PRIM_LINE: {
|
case TT_PRIM_LINE: {
|
||||||
for (int i=0; i<curve->cpfx; ++i) {
|
for (int i=0; i<curve->cpfx; ++i) {
|
||||||
QPointF p = qt_to_qpointf(curve->apfx[i], scale) + oset;
|
QPointF p = qt_to_qpointf(curve->apfx[i], scale, stretch) + oset;
|
||||||
path->lineTo(p);
|
path->lineTo(p);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -779,8 +780,8 @@ static bool addGlyphToPath(glyph_t glyph, const QFixedPoint &position, HDC hdc,
|
|||||||
QPointF prev(elm.x, elm.y);
|
QPointF prev(elm.x, elm.y);
|
||||||
QPointF endPoint;
|
QPointF endPoint;
|
||||||
for (int i=0; i<curve->cpfx - 1; ++i) {
|
for (int i=0; i<curve->cpfx - 1; ++i) {
|
||||||
QPointF p1 = qt_to_qpointf(curve->apfx[i], scale) + oset;
|
QPointF p1 = qt_to_qpointf(curve->apfx[i], scale, stretch) + oset;
|
||||||
QPointF p2 = qt_to_qpointf(curve->apfx[i+1], scale) + oset;
|
QPointF p2 = qt_to_qpointf(curve->apfx[i+1], scale, stretch) + oset;
|
||||||
if (i < curve->cpfx - 2) {
|
if (i < curve->cpfx - 2) {
|
||||||
endPoint = QPointF((p1.x() + p2.x()) / 2, (p1.y() + p2.y()) / 2);
|
endPoint = QPointF((p1.x() + p2.x()) / 2, (p1.y() + p2.y()) / 2);
|
||||||
} else {
|
} else {
|
||||||
@ -795,9 +796,9 @@ static bool addGlyphToPath(glyph_t glyph, const QFixedPoint &position, HDC hdc,
|
|||||||
}
|
}
|
||||||
case TT_PRIM_CSPLINE: {
|
case TT_PRIM_CSPLINE: {
|
||||||
for (int i=0; i<curve->cpfx; ) {
|
for (int i=0; i<curve->cpfx; ) {
|
||||||
QPointF p2 = qt_to_qpointf(curve->apfx[i++], scale) + oset;
|
QPointF p2 = qt_to_qpointf(curve->apfx[i++], scale, stretch) + oset;
|
||||||
QPointF p3 = qt_to_qpointf(curve->apfx[i++], scale) + oset;
|
QPointF p3 = qt_to_qpointf(curve->apfx[i++], scale, stretch) + oset;
|
||||||
QPointF p4 = qt_to_qpointf(curve->apfx[i++], scale) + oset;
|
QPointF p4 = qt_to_qpointf(curve->apfx[i++], scale, stretch) + oset;
|
||||||
path->cubicTo(p2, p3, p4);
|
path->cubicTo(p2, p3, p4);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -829,9 +830,11 @@ void QWindowsFontEngine::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions
|
|||||||
HDC hdc = m_fontEngineData->hdc;
|
HDC hdc = m_fontEngineData->hdc;
|
||||||
HGDIOBJ oldfont = SelectObject(hdc, hf);
|
HGDIOBJ oldfont = SelectObject(hdc, hf);
|
||||||
|
|
||||||
|
qreal scale = qreal(fontDef.pixelSize) / unitsPerEm;
|
||||||
|
qreal stretch = fontDef.stretch ? qreal(fontDef.stretch) / 100 : 1.0;
|
||||||
for(int i = 0; i < nglyphs; ++i) {
|
for(int i = 0; i < nglyphs; ++i) {
|
||||||
if (!addGlyphToPath(glyphs[i], positions[i], hdc, path, ttf, /*metric*/0,
|
if (!addGlyphToPath(glyphs[i], positions[i], hdc, path, ttf, /*metric*/0,
|
||||||
qreal(fontDef.pixelSize) / unitsPerEm)) {
|
scale, stretch)) {
|
||||||
// Some windows fonts, like "Modern", are vector stroke
|
// Some windows fonts, like "Modern", are vector stroke
|
||||||
// fonts, which are reported as TMPF_VECTOR but do not
|
// fonts, which are reported as TMPF_VECTOR but do not
|
||||||
// support GetGlyphOutline, and thus we set this bit so
|
// support GetGlyphOutline, and thus we set this bit so
|
||||||
|
@ -85,7 +85,7 @@ QTsLibMouseHandler::QTsLibMouseHandler(const QString &key,
|
|||||||
if (fd >= 0) {
|
if (fd >= 0) {
|
||||||
qCDebug(qLcTsLib) << "tslib device is" << device;
|
qCDebug(qLcTsLib) << "tslib device is" << device;
|
||||||
m_notify = new QSocketNotifier(fd, QSocketNotifier::Read, this);
|
m_notify = new QSocketNotifier(fd, QSocketNotifier::Read, this);
|
||||||
connect(m_notify, SIGNAL(activated(int)), this, SLOT(readMouseData()));
|
connect(m_notify, &QSocketNotifier::activated, this, &QTsLibMouseHandler::readMouseData);
|
||||||
} else {
|
} else {
|
||||||
qErrnoWarning(errno, "tslib: Cannot open input device %s", device.constData());
|
qErrnoWarning(errno, "tslib: Cannot open input device %s", device.constData());
|
||||||
}
|
}
|
||||||
@ -129,7 +129,9 @@ void QTsLibMouseHandler::readMouseData()
|
|||||||
}
|
}
|
||||||
QPoint pos(x, y);
|
QPoint pos(x, y);
|
||||||
|
|
||||||
QWindowSystemInterface::handleMouseEvent(0, pos, pos, pressed ? Qt::LeftButton : Qt::NoButton);
|
QWindowSystemInterface::handleMouseEvent(nullptr, pos, pos,
|
||||||
|
pressed ? Qt::LeftButton : Qt::NoButton,
|
||||||
|
Qt::NoButton, QEvent::None);
|
||||||
|
|
||||||
m_x = x;
|
m_x = x;
|
||||||
m_y = y;
|
m_y = y;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
defineTest(qtConfLibrary_psqlConfig) {
|
defineTest(qtConfLibrary_psqlConfig) {
|
||||||
pg_config = $$config.input.psql_config
|
pg_config = $$config.input.psql_config
|
||||||
isEmpty(pg_config): \
|
isEmpty(pg_config):!cross_compile: \
|
||||||
pg_config = $$qtConfFindInPath("pg_config")
|
pg_config = $$qtConfFindInPath("pg_config")
|
||||||
!win32:!isEmpty(pg_config) {
|
!win32:!isEmpty(pg_config) {
|
||||||
qtRunLoggedCommand("$$pg_config --libdir", libdir)|return(false)
|
qtRunLoggedCommand("$$pg_config --libdir", libdir)|return(false)
|
||||||
@ -33,7 +33,7 @@ defineTest(qtConfLibrary_psqlEnv) {
|
|||||||
|
|
||||||
defineTest(qtConfLibrary_mysqlConfig) {
|
defineTest(qtConfLibrary_mysqlConfig) {
|
||||||
mysql_config = $$config.input.mysql_config
|
mysql_config = $$config.input.mysql_config
|
||||||
isEmpty(mysql_config): \
|
isEmpty(mysql_config):!cross_compile: \
|
||||||
mysql_config = $$qtConfFindInPath("mysql_config")
|
mysql_config = $$qtConfFindInPath("mysql_config")
|
||||||
!isEmpty(mysql_config) {
|
!isEmpty(mysql_config) {
|
||||||
qtRunLoggedCommand("$$mysql_config --version", version)|return(false)
|
qtRunLoggedCommand("$$mysql_config --version", version)|return(false)
|
||||||
|
@ -4,3 +4,5 @@
|
|||||||
windows ci
|
windows ci
|
||||||
[blockingLookup:a-plus-aaaa]
|
[blockingLookup:a-plus-aaaa]
|
||||||
windows ci
|
windows ci
|
||||||
|
[reverseLookup:google-public-dns-a.google.com]
|
||||||
|
ci
|
||||||
|
3
tests/auto/widgets/graphicsview/qgraphicsitem/BLACKLIST
Normal file
3
tests/auto/widgets/graphicsview/qgraphicsitem/BLACKLIST
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# QTBUG-74760
|
||||||
|
[sorting]
|
||||||
|
opensuse-42.3
|
Loading…
x
Reference in New Issue
Block a user