Merge "Merge remote-tracking branch 'origin/5.12' into 5.13"
This commit is contained in:
commit
eb8d461171
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
QString project_builtin_regx() //calculate the builtin regular expression..
|
static QString project_builtin_regx() //calculate the builtin regular expression..
|
||||||
{
|
{
|
||||||
QString ret;
|
QString ret;
|
||||||
QStringList builtin_exts;
|
QStringList builtin_exts;
|
||||||
|
@ -1567,21 +1567,12 @@ bool VCLinkerTool::parseOption(const char* option)
|
|||||||
const char* str = option+6;
|
const char* str = option+6;
|
||||||
if (*str == 'S')
|
if (*str == 'S')
|
||||||
ShowProgress = linkProgressAll;
|
ShowProgress = linkProgressAll;
|
||||||
#ifndef Q_OS_WIN
|
else if (qstricmp(str, "pginstrument") == 0)
|
||||||
else if (strncasecmp(str, "pginstrument", 12))
|
|
||||||
LinkTimeCodeGeneration = optLTCGInstrument;
|
LinkTimeCodeGeneration = optLTCGInstrument;
|
||||||
else if (strncasecmp(str, "pgoptimize", 10))
|
else if (qstricmp(str, "pgoptimize") == 0)
|
||||||
LinkTimeCodeGeneration = optLTCGOptimize;
|
LinkTimeCodeGeneration = optLTCGOptimize;
|
||||||
else if (strncasecmp(str, "pgupdate", 8 ))
|
else if (qstricmp(str, "pgupdate") == 0)
|
||||||
LinkTimeCodeGeneration = optLTCGUpdate;
|
LinkTimeCodeGeneration = optLTCGUpdate;
|
||||||
#else
|
|
||||||
else if (_stricmp(str, "pginstrument"))
|
|
||||||
LinkTimeCodeGeneration = optLTCGInstrument;
|
|
||||||
else if (_stricmp(str, "pgoptimize"))
|
|
||||||
LinkTimeCodeGeneration = optLTCGOptimize;
|
|
||||||
else if (_stricmp(str, "pgupdate"))
|
|
||||||
LinkTimeCodeGeneration = optLTCGUpdate;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
AdditionalOptions.append(option);
|
AdditionalOptions.append(option);
|
||||||
|
@ -122,7 +122,6 @@ static QString detectProjectFile(const QString &path)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString project_builtin_regx();
|
|
||||||
bool usage(const char *a0)
|
bool usage(const char *a0)
|
||||||
{
|
{
|
||||||
fprintf(stdout, "Usage: %s [mode] [options] [files]\n"
|
fprintf(stdout, "Usage: %s [mode] [options] [files]\n"
|
||||||
@ -134,9 +133,9 @@ bool usage(const char *a0)
|
|||||||
"\n"
|
"\n"
|
||||||
"Mode:\n"
|
"Mode:\n"
|
||||||
" -project Put qmake into project file generation mode%s\n"
|
" -project Put qmake into project file generation mode%s\n"
|
||||||
" In this mode qmake interprets files as files to\n"
|
" In this mode qmake interprets [files] as files to\n"
|
||||||
" be built,\n"
|
" be added to the .pro file. By default, all files with\n"
|
||||||
" defaults to %s\n"
|
" known source extensions are added.\n"
|
||||||
" Note: The created .pro file probably will \n"
|
" Note: The created .pro file probably will \n"
|
||||||
" need to be edited. For example add the QT variable to \n"
|
" need to be edited. For example add the QT variable to \n"
|
||||||
" specify what modules are required.\n"
|
" specify what modules are required.\n"
|
||||||
@ -184,7 +183,7 @@ bool usage(const char *a0)
|
|||||||
" -nomoc Don't generate moc targets [makefile mode only]\n"
|
" -nomoc Don't generate moc targets [makefile mode only]\n"
|
||||||
" -nopwd Don't look for files in pwd [project mode only]\n"
|
" -nopwd Don't look for files in pwd [project mode only]\n"
|
||||||
,a0,
|
,a0,
|
||||||
default_mode(a0) == Option::QMAKE_GENERATE_PROJECT ? " (default)" : "", project_builtin_regx().toLatin1().constData(),
|
default_mode(a0) == Option::QMAKE_GENERATE_PROJECT ? " (default)" : "",
|
||||||
default_mode(a0) == Option::QMAKE_GENERATE_MAKEFILE ? " (default)" : ""
|
default_mode(a0) == Option::QMAKE_GENERATE_MAKEFILE ? " (default)" : ""
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
|
@ -1199,10 +1199,10 @@ static int qt_compare_strings(QLatin1String lhs, QStringView rhs, Qt::CaseSensit
|
|||||||
|
|
||||||
static int qt_compare_strings(QLatin1String lhs, QLatin1String rhs, Qt::CaseSensitivity cs) Q_DECL_NOTHROW
|
static int qt_compare_strings(QLatin1String lhs, QLatin1String rhs, Qt::CaseSensitivity cs) Q_DECL_NOTHROW
|
||||||
{
|
{
|
||||||
if (cs == Qt::CaseInsensitive)
|
|
||||||
return qstrnicmp(lhs.data(), lhs.size(), rhs.data(), rhs.size());
|
|
||||||
if (lhs.isEmpty())
|
if (lhs.isEmpty())
|
||||||
return lencmp(0, rhs.size());
|
return lencmp(0, rhs.size());
|
||||||
|
if (cs == Qt::CaseInsensitive)
|
||||||
|
return qstrnicmp(lhs.data(), lhs.size(), rhs.data(), rhs.size());
|
||||||
const auto l = std::min(lhs.size(), rhs.size());
|
const auto l = std::min(lhs.size(), rhs.size());
|
||||||
int r = qstrncmp(lhs.data(), rhs.data(), l);
|
int r = qstrncmp(lhs.data(), rhs.data(), l);
|
||||||
return r ? r : lencmp(lhs.size(), rhs.size());
|
return r ? r : lencmp(lhs.size(), rhs.size());
|
||||||
|
@ -95,6 +95,11 @@ public:
|
|||||||
QBackingStore::QBackingStore(QWindow *window)
|
QBackingStore::QBackingStore(QWindow *window)
|
||||||
: d_ptr(new QBackingStorePrivate(window))
|
: d_ptr(new QBackingStorePrivate(window))
|
||||||
{
|
{
|
||||||
|
if (window->handle()) {
|
||||||
|
// Create platform backingstore up front if we have a platform window,
|
||||||
|
// otherwise delay the creation until absolutely necessary.
|
||||||
|
handle();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -75,6 +75,37 @@ QCFType<CGColorSpaceRef> QCocoaBackingStore::colorSpace() const
|
|||||||
QNSWindowBackingStore::QNSWindowBackingStore(QWindow *window)
|
QNSWindowBackingStore::QNSWindowBackingStore(QWindow *window)
|
||||||
: QCocoaBackingStore(window)
|
: QCocoaBackingStore(window)
|
||||||
{
|
{
|
||||||
|
// Choose an appropriate window depth based on the requested surface format.
|
||||||
|
// On deep color displays the default bit depth is 16-bit, so unless we need
|
||||||
|
// that level of precision we opt out of it (and the expensive RGB32 -> RGB64
|
||||||
|
// conversions that come with it if our backingstore depth does not match).
|
||||||
|
|
||||||
|
NSWindow *nsWindow = static_cast<QCocoaWindow *>(window->handle())->view().window;
|
||||||
|
auto colorSpaceName = NSColorSpaceFromDepth(nsWindow.depthLimit);
|
||||||
|
|
||||||
|
static const int kDefaultBitDepth = 8;
|
||||||
|
auto surfaceFormat = window->requestedFormat();
|
||||||
|
auto bitsPerSample = qMax(kDefaultBitDepth, qMax(surfaceFormat.redBufferSize(),
|
||||||
|
qMax(surfaceFormat.greenBufferSize(), surfaceFormat.blueBufferSize())));
|
||||||
|
|
||||||
|
// NSBestDepth does not seem to guarantee a window depth deep enough for the
|
||||||
|
// given bits per sample, even if documented as such. For example, requesting
|
||||||
|
// 10 bits per sample will not give us a 16-bit format, even if that's what's
|
||||||
|
// available. Work around this by manually bumping the bit depth.
|
||||||
|
bitsPerSample = !(bitsPerSample & (bitsPerSample - 1))
|
||||||
|
? bitsPerSample : qNextPowerOfTwo(bitsPerSample);
|
||||||
|
|
||||||
|
auto bestDepth = NSBestDepth(colorSpaceName, bitsPerSample, 0, NO, nullptr);
|
||||||
|
|
||||||
|
// Disable dynamic depth limit, otherwise our depth limit will be overwritten
|
||||||
|
// by AppKit if the window moves to a screen with a different depth. We call
|
||||||
|
// this before setting the depth limit, as the call will reset the depth to 0.
|
||||||
|
[nsWindow setDynamicDepthLimit:NO];
|
||||||
|
|
||||||
|
qCDebug(lcQpaBackingStore) << "Using" << NSBitsPerSampleFromDepth(bestDepth)
|
||||||
|
<< "bit window depth for" << nsWindow;
|
||||||
|
|
||||||
|
nsWindow.depthLimit = bestDepth;
|
||||||
}
|
}
|
||||||
|
|
||||||
QNSWindowBackingStore::~QNSWindowBackingStore()
|
QNSWindowBackingStore::~QNSWindowBackingStore()
|
||||||
|
@ -1660,21 +1660,6 @@ QCocoaNSWindow *QCocoaWindow::createNSWindow(bool shouldBePanel)
|
|||||||
|
|
||||||
applyContentBorderThickness(nsWindow);
|
applyContentBorderThickness(nsWindow);
|
||||||
|
|
||||||
// Prevent CoreGraphics RGB32 -> RGB64 backing store conversions on deep color
|
|
||||||
// displays by forcing 8-bit components, unless a deep color format has been
|
|
||||||
// requested. This conversion uses significant CPU time.
|
|
||||||
QSurface::SurfaceType surfaceType = QPlatformWindow::window()->surfaceType();
|
|
||||||
bool usesCoreGraphics = surfaceType == QSurface::RasterSurface || surfaceType == QSurface::RasterGLSurface;
|
|
||||||
QSurfaceFormat surfaceFormat = QPlatformWindow::window()->format();
|
|
||||||
bool usesDeepColor = surfaceFormat.redBufferSize() > 8 ||
|
|
||||||
surfaceFormat.greenBufferSize() > 8 ||
|
|
||||||
surfaceFormat.blueBufferSize() > 8;
|
|
||||||
bool usesLayer = view().layer;
|
|
||||||
if (usesCoreGraphics && !usesDeepColor && !usesLayer) {
|
|
||||||
[nsWindow setDynamicDepthLimit:NO];
|
|
||||||
[nsWindow setDepthLimit:NSWindowDepthTwentyfourBitRGB];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (format().colorSpace() == QSurfaceFormat::sRGBColorSpace)
|
if (format().colorSpace() == QSurfaceFormat::sRGBColorSpace)
|
||||||
nsWindow.colorSpace = NSColorSpace.sRGBColorSpace;
|
nsWindow.colorSpace = NSColorSpace.sRGBColorSpace;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user