Merge "Merge remote-tracking branch 'origin/dev' into wip/qt6"
This commit is contained in:
commit
2e338f6ede
2
.gitignore
vendored
2
.gitignore
vendored
@ -56,8 +56,6 @@ qt*-config.pri
|
||||
/src/angle/src/QtANGLE/libANGLE/
|
||||
/src/angle/src/libGLESv2/libANGLE/
|
||||
|
||||
/src/corelib/global/qfloat16tables.cpp
|
||||
|
||||
/examples/*/*/*
|
||||
!/examples/*/*/*[.]*
|
||||
!/examples/*/*/README
|
||||
|
@ -82,7 +82,7 @@
|
||||
"force-pkg-config": { "type": "void", "name": "pkg-config" },
|
||||
"framework": "boolean",
|
||||
"gc-binaries": { "type": "boolean", "name": "gc_binaries" },
|
||||
"gdb-index": { "type": "boolean", "name": "gdb_index" },
|
||||
"gdb-index": { "type": "boolean", "name": "enable_gdb_index" },
|
||||
"gcc-sysroot": "boolean",
|
||||
"gcov": "boolean",
|
||||
"gnumake": { "type": "boolean", "name": "GNUmake" },
|
||||
@ -705,6 +705,7 @@
|
||||
},
|
||||
"optimize_debug": {
|
||||
"label": "Optimize debug build",
|
||||
"autoDetect": "!features.developer-build",
|
||||
"condition": "!config.msvc && !config.clang && (features.debug || features.debug_and_release) && tests.optimize_debug",
|
||||
"output": [ "privateConfig" ]
|
||||
},
|
||||
|
83
dist/changes-5.12.4
vendored
Normal file
83
dist/changes-5.12.4
vendored
Normal file
@ -0,0 +1,83 @@
|
||||
Qt 5.12.4 is a bug-fix release. It maintains both forward and backward
|
||||
compatibility (source and binary) with Qt 5.12.0 through 5.12.3.
|
||||
|
||||
For more details, refer to the online documentation included in this
|
||||
distribution. The documentation is also available online:
|
||||
|
||||
https://doc.qt.io/qt-5/index.html
|
||||
|
||||
The Qt version 5.12 series is binary compatible with the 5.11.x series.
|
||||
Applications compiled for 5.11 will continue to run with 5.12.
|
||||
|
||||
Some of the changes listed in this file include issue tracking numbers
|
||||
corresponding to tasks in the Qt Bug Tracker:
|
||||
|
||||
https://bugreports.qt.io/
|
||||
|
||||
Each of these identifiers can be entered in the bug tracker to obtain more
|
||||
information about a particular change.
|
||||
|
||||
****************************************************************************
|
||||
* Platform Specific Changes *
|
||||
****************************************************************************
|
||||
|
||||
- X11 / XCB:
|
||||
* [QTBUG-45375] QTabletEvent coordinates now come from AbsX/AbsY
|
||||
valuators in the X11 event, in more precise 32.32 fixed-point format,
|
||||
scaled to fit the virtual desktop. It's possible to revert to using
|
||||
the legacy 16.16-format event_x/event_y coordinates as in previous
|
||||
releases by setting the QT_XCB_TABLET_LEGACY_COORDINATES environment
|
||||
variable.
|
||||
|
||||
****************************************************************************
|
||||
* QtCore *
|
||||
****************************************************************************
|
||||
|
||||
- Global:
|
||||
* [QTBUG-72073] Added the QT_NO_FLOAT16_OPERATORS macro in order to work
|
||||
around a Microsoft <= VS2017 compiler bug that is exposed when using
|
||||
std::bitset along with any Qt header that includes <qfloat16.h>.
|
||||
|
||||
- QDeadlineTimer:
|
||||
* [QTBUG-69750] Fixed integer overflows leading to immediate timeouts.
|
||||
|
||||
- QFile:
|
||||
* Made QFile::copy() issue a filesystem-synchronization system call,
|
||||
which would make it less likely to result in incomplete or corrupt
|
||||
files if the system reboots or uncleanly shuts down soon after the
|
||||
function returns. New code is advised to use QSaveFile instead, which
|
||||
also allows to display a progress report while copying.
|
||||
|
||||
- QFileInfo:
|
||||
* [QTBUG-63970][QTBUG-30401][QTBUG-20791] Fixed resolving of symbolic
|
||||
links to UNC shares on NTFS file systems.
|
||||
|
||||
- QMetaObject:
|
||||
* Non-copyable lambdas can now be used with invokeMethod(). For
|
||||
consistency reasons, the functor object is now always moved.
|
||||
|
||||
****************************************************************************
|
||||
* QtGui *
|
||||
****************************************************************************
|
||||
|
||||
- [QTBUG-73231] QWindow::mapToGlobal()/mapFromGlobal() now handle windows
|
||||
spanning screens correctly.
|
||||
|
||||
- [QTBUG-75522] QBezier: Fix possible endless loop when stroking curves
|
||||
|
||||
****************************************************************************
|
||||
* QtWidgets *
|
||||
****************************************************************************
|
||||
|
||||
- QMenu:
|
||||
* Shortcuts are again shown by default in context menus, except on
|
||||
macOS. They can be forced off by setting
|
||||
AA_DontShowShortcutsInContextMenus to true.
|
||||
|
||||
****************************************************************************
|
||||
* Third-Party Code *
|
||||
****************************************************************************
|
||||
|
||||
- libpng was updated to version 1.6.37
|
||||
- Updated QLocale to CLDR v35.1
|
||||
- Updated bundled SQLite to version 3.28.0
|
301
dist/changes-5.13.0
vendored
301
dist/changes-5.13.0
vendored
@ -1,3 +1,20 @@
|
||||
Qt 5.13 introduces many new features and improvements as well as bugfixes
|
||||
over the 5.12.x series. For more details, refer to the online documentation
|
||||
included in this distribution. The documentation is also available online:
|
||||
|
||||
https://doc.qt.io/qt-5/index.html
|
||||
|
||||
The Qt version 5.13 series is binary compatible with the 5.12.x series.
|
||||
Applications compiled for 5.12 will continue to run with 5.13.
|
||||
|
||||
Some of the changes listed in this file include issue tracking numbers
|
||||
corresponding to tasks in the Qt Bug Tracker:
|
||||
|
||||
https://bugreports.qt.io/
|
||||
|
||||
Each of these identifiers can be entered in the bug tracker to obtain more
|
||||
information about a particular change.
|
||||
|
||||
****************************************************************************
|
||||
* Important Source Incompatible Changes *
|
||||
****************************************************************************
|
||||
@ -5,3 +22,287 @@
|
||||
- Moc generated files include the standard <memory> header file now.
|
||||
A side effect of this is that code including the Moc output from within
|
||||
a namespace will fail to compile.
|
||||
|
||||
****************************************************************************
|
||||
* Important Behavior Changes *
|
||||
****************************************************************************
|
||||
|
||||
- The Qt resource system now supports compressing content using the
|
||||
Zstandard (https://zstd.net) algorithm. Compared to zlib, it compresses
|
||||
better for the same CPU time, so this algorithm is the default.
|
||||
QResource::isCompressed() returns true for either compression algorithm.
|
||||
Use QResource::compressionAlgorithm() to find out which algorithm to
|
||||
decompress. QFile will automatically decompress using the correct
|
||||
algorithm.
|
||||
|
||||
- QDataStream version bumped up to 19 to account for changes in the
|
||||
serialization of QFont.
|
||||
|
||||
- [QTBUG-73048] Qt now enables by default warnings when using APIs
|
||||
marked as deprecated. It is possible to disable such warnings by
|
||||
defining the QT_NO_DEPRECATED_WARNINGS macro. The old
|
||||
QT_DEPRECATED_WARNINGS macro which was used to enable this warning
|
||||
now has no effect (warnings are automatically enabled).
|
||||
|
||||
****************************************************************************
|
||||
* Third-Party Code *
|
||||
****************************************************************************
|
||||
|
||||
- Updated bundled SQLite to version 3.28.0.
|
||||
- [QTBUG-72623] Updated DNS public suffix list
|
||||
- [QTBUG-73883] libjpeg-turbo was updated to version 2.0.2
|
||||
- Bundled libpng was updated to version 1.6.37
|
||||
|
||||
****************************************************************************
|
||||
* Platform-Specific Changes *
|
||||
****************************************************************************
|
||||
|
||||
- X11 / XCB:
|
||||
* [QTBUG-45375] QTabletEvent coordinates now come from AbsX/AbsY
|
||||
valuators in the X11 event, in more precise 32.32 fixed-point format,
|
||||
scaled to fit the virtual desktop. It's possible to revert to using
|
||||
the legacy 16.16-format event_x/event_y coordinates as in previous
|
||||
releases by setting the QT_XCB_TABLET_LEGACY_COORDINATES environment
|
||||
variable.
|
||||
* [plugins] platforminputcontexts now use libxkbcommon-compose APIs for
|
||||
compose key input, instead of Qt's own implementation.
|
||||
|
||||
- Android
|
||||
* Increased the minimum supported Android version to Android 5.0
|
||||
(API level 21).
|
||||
|
||||
- Windows
|
||||
* [QTBUG-47247][QTBUG-71855] Add a default setting for
|
||||
hasBorderInFullScreen in QtPlatformHeaders, QWindowsWindowFunctions
|
||||
* [QTBUG-57180] Removed confusing DirectWrite warning when loading
|
||||
bitmap fonts.
|
||||
|
||||
- macOS
|
||||
* Accessibility: VoiceOver now reads all lines in multiline text
|
||||
components when navigating by lines.
|
||||
|
||||
****************************************************************************
|
||||
* Tools *
|
||||
****************************************************************************
|
||||
|
||||
- configure & build system:
|
||||
* Added --linker=[bfg,lld,gold] configure flag.
|
||||
* The default OpenGL configuration changed from ANGLE to dynamic OpenGL.
|
||||
* Added -schannel option to enable Schannel support on Desktop Windows.
|
||||
* Added -coverage option for recording coverage data during execution
|
||||
|
||||
- CMake
|
||||
* Added support for automatic linking of transitive dependencies in
|
||||
static builds
|
||||
|
||||
- qmake
|
||||
* [QTBUG-53654] Introduced the variables WINDOWS_TARGET_PLATFORM_VERSION
|
||||
and WINDOWS_TARGET_PLATFORM_MIN_VERSION for overriding the default
|
||||
values of WindowsTargetPlatformVersion and
|
||||
WindowsTargetPlatformMinVersion in Visual Studio project files.
|
||||
|
||||
- RCC now supports compressing content using the Zstandard
|
||||
(https://zstd.net) algorithm. Compared to zlib, it compresses better for
|
||||
the same CPU time, so this algorithm is the default. To go back to the
|
||||
previous algorithm, pass command-line option --compress-algo=zlib.
|
||||
Compression levels range from 1 (fastest, least compression) to 19
|
||||
(slowest, best compression). Level 0 tells the library to choose an
|
||||
implementation-defined default. The default compression level is
|
||||
"heuristic" (level -1): under this mode, RCC will attempt a very fast
|
||||
compression (level 1) and check if the file was sufficiently compressed.
|
||||
If it was, then RCC will compress again using an implementation-defined
|
||||
level.
|
||||
|
||||
****************************************************************************
|
||||
* QtCore *
|
||||
****************************************************************************
|
||||
|
||||
- New class QConcatenateTablesProxyModel, to concatenate the rows from
|
||||
multiple source models.
|
||||
- New class QTransposeProxyModel to swap rows and columns of the source
|
||||
model.
|
||||
- Added macros Q_DISABLE_MOVE and Q_DISABLE_COPY_MOVE complementing
|
||||
Q_DISABLE_COPY.
|
||||
- Qt Containers and meta type system now use C++11 type traits
|
||||
(std::is_trivial, std::is_trivially_copyable and
|
||||
std::is_trivially_destructible) to detect the class of a type not
|
||||
explicitly set by Q_DECLARE_TYPEINFO. (Q_DECLARE_TYPEINFO is still
|
||||
needed for QList.)
|
||||
|
||||
- QCommandLineParser:
|
||||
* [QTBUG-58490] The application name (if set in QCoreApplication) is now
|
||||
shown in error messages.
|
||||
|
||||
- QDateTime:
|
||||
* [QTBUG-71030] Fixed race conditions in getting the local time zone. Qt now
|
||||
has a mutex lock around all calls to tzset() and mktime(). Application
|
||||
code should avoid calling those functions directly.
|
||||
|
||||
- QFile:
|
||||
* Made QFile::copy() issue a filesystem-synchronization system call,
|
||||
which would make it less likely to result in incomplete or corrupt
|
||||
files if the system reboots or uncleanly shuts down soon after the
|
||||
function returns. New code is advised to use QSaveFile instead, which
|
||||
also allows display of a progress report while copying.
|
||||
|
||||
- QFileInfo:
|
||||
* [QTBUG-63970][QTBUG-30401][QTBUG-20791] Fixed resolving of symbolic
|
||||
links to UNC shares on NTFS file systems.
|
||||
|
||||
- QJsonArray:
|
||||
* [QTBUG-32793] Added cbegin() and cend() methods for compatibility with
|
||||
the Standard Library container concepts.
|
||||
|
||||
- QJsonDocument:
|
||||
* [QTBUG-71445] Added the ability to stream QJsonDocument into and from
|
||||
QDataStream if it is contained in a QVariant.
|
||||
|
||||
- QLocale:
|
||||
* Added support for Western Balochi, Ido, Lojban, Sicilian and
|
||||
Southern Kurdish.
|
||||
* [QTBUG-71445] Added a const overload for formattedDataSize().
|
||||
* [QTBUG-782] Added toLong() and toULong().
|
||||
|
||||
- QMetaObject:
|
||||
* Non-copyable lambdas can now be used with invokeMethod(). For
|
||||
consistency reasons, the functor object is now always moved.
|
||||
|
||||
- QMimeDatabase:
|
||||
* Added configure option -no-mimetype-database that tells Qt not to
|
||||
bundle its own copy of the XDG MIME database. If this option is
|
||||
passed, QMimeDatabase will only work if there's a system copy in
|
||||
$XDG_DATA_DIRS/mime. This option is useful for Linux distributions
|
||||
that ensure the data is always present.
|
||||
|
||||
- QSettings:
|
||||
* Added QSettings(Scope...) constructor to avoid using #ifdef in Qt
|
||||
applications.
|
||||
|
||||
- QStringListModel:
|
||||
* [QTBUG-69807] Implemented moveRows
|
||||
|
||||
- QUrlQuery:
|
||||
* QUrlQuery now provides an initializer list constructor. It can be
|
||||
created using a list of key/value pairs.
|
||||
|
||||
- QVector:
|
||||
* QVector no longer requires a default constructor for its template
|
||||
argument.
|
||||
|
||||
****************************************************************************
|
||||
* QtDBus *
|
||||
****************************************************************************
|
||||
|
||||
- Matching namespace prefixes using QDBusServiceWatcher (instead of full
|
||||
service names) is now possible. For example, "com.example.backend1*"
|
||||
will match "com.example.backend1", "com.example.backend1.foo" and
|
||||
"com.example.backend1.foo.bar", but not "com.example.backend12".
|
||||
|
||||
****************************************************************************
|
||||
* QtGui *
|
||||
****************************************************************************
|
||||
|
||||
- CSS:
|
||||
* Added support for HSL/HSLA colors.
|
||||
* Fix the range of the hue parameter when parsing a color given in HSL
|
||||
or HSV.
|
||||
|
||||
- QFont:
|
||||
* Add setFamilies()/families() to support use of font families with
|
||||
commas and quotes in their name.
|
||||
|
||||
- QImage:
|
||||
* [QTBUG-41176] Added support for 16-bit grayscale format.
|
||||
* A new method convertTo has been added to change the format of a QImage
|
||||
in place.
|
||||
|
||||
- QPainterPath:
|
||||
* Added clear(), reserve(), capacity(). clear() removes allocated
|
||||
QPainterPath elements but preserves allocated memory, which can be
|
||||
useful for application with complex paths that are often recreated.
|
||||
reserve() and capacity() follow QVector semantics.
|
||||
|
||||
- QWindow:
|
||||
* [QTBUG-67903][QTBUG-52944] QWindow::transientParent is now a property.
|
||||
|
||||
- Text:
|
||||
* [QTBUG-60813] Deprecated QFont::lastResortFamily() and
|
||||
QFont::lastResortFont() which are not in use in Qt 5 and did not
|
||||
provide any useful information.
|
||||
* [QTBUG-22813] Added support for setting the font's style name in
|
||||
QTextCharFormat.
|
||||
|
||||
****************************************************************************
|
||||
* QtNetwork *
|
||||
****************************************************************************
|
||||
|
||||
- TLS (SSL):
|
||||
* Support for SSLv2 and SSLv3 sockets has been dropped, as per RFC 6176
|
||||
(2011) and RFC 7568 (2015).
|
||||
* The Schannel backend now supports ALPN and thus HTTP/2.
|
||||
* [QTBUG-62637] Added support for Schannel on Desktop Windows. To build
|
||||
Qt with Schannel support use '-schannel' during configure.
|
||||
* Added class QOcspResponse as a part of OCSP stapling support.
|
||||
* [QTBUG-12812][QTBUG-17158] Added OCSP-stapling support for OpenSSL
|
||||
backend
|
||||
* [QTBUG-71828][QTBUG-73289] Fixed SSL verification when connecting to IP
|
||||
address (no host name) if that IP address is listed in the certificate.
|
||||
|
||||
****************************************************************************
|
||||
* QtTestLib *
|
||||
****************************************************************************
|
||||
|
||||
- Added QTest::toString(const QModelIndex &idx)
|
||||
|
||||
- Removed support for GPU_BLACKLIST files. Reimplementations or
|
||||
equivalents of QTEST_MAIN() should remove their uses of
|
||||
QTEST_ADD_GPU_BLACKLIST_SUPPORT and its _DEFS; they are still vacuously
|
||||
defined, but serve no remaining purpose and shall be undefined in due
|
||||
course.
|
||||
|
||||
****************************************************************************
|
||||
* QtWidgets *
|
||||
****************************************************************************
|
||||
|
||||
- QAbstractScrollArea:
|
||||
* [QTBUG-69120] QTableView/QTreeView, when reporting their
|
||||
viewportSizeHint(), now correctly take into account their scroll
|
||||
bars' visibility and visibilityPolicy.
|
||||
|
||||
- QHeaderView:
|
||||
* dataChanged now respects the given roles to avoid useless
|
||||
recomputations.
|
||||
|
||||
- QLabel:
|
||||
* Minor performance improvement when painting a label with an image.
|
||||
|
||||
- QListWidget:
|
||||
* [QTBUG-69807] Implemented moveRows in model
|
||||
* [QTBUG-68977] Sped up handling of hidden items when working with large
|
||||
data sets.
|
||||
|
||||
- QPlainTextEdit:
|
||||
* Added QRegularExpression find() method overload.
|
||||
|
||||
- QTextEdit:
|
||||
* Added QRegularExpression find() method overload.
|
||||
|
||||
- QTreeView:
|
||||
* Added expandRecursively() to expand all items below a given index.
|
||||
|
||||
- QWidgetTextControlPrivate:
|
||||
* [QTBUG-69735] Moved cursor selection to start.
|
||||
|
||||
****************************************************************************
|
||||
* QtSql *
|
||||
****************************************************************************
|
||||
|
||||
- SQLite:
|
||||
* [QTBUG-63498] The json1-extension for the SQLite3 plugin is now enabled
|
||||
by default.
|
||||
|
||||
- PostgreSQL:
|
||||
* QSqlDatabase is now stricter about table names when used with record()
|
||||
and primaryIndex(). If the tablename was not quoted when it was
|
||||
created, then the table name passed to record() and primaryIndex()
|
||||
needs to be in lower case so that PostgreSQL is able to find it.
|
||||
|
@ -132,7 +132,7 @@ void DownloadManager::startNextDownload()
|
||||
|
||||
// prepare the output
|
||||
printf("Downloading %s...\n", url.toEncoded().constData());
|
||||
downloadTime.start();
|
||||
downloadTimer.start();
|
||||
}
|
||||
|
||||
void DownloadManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
|
||||
@ -140,7 +140,7 @@ void DownloadManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
|
||||
progressBar.setStatus(bytesReceived, bytesTotal);
|
||||
|
||||
// calculate the download speed
|
||||
double speed = bytesReceived * 1000.0 / downloadTime.elapsed();
|
||||
double speed = bytesReceived * 1000.0 / downloadTimer.elapsed();
|
||||
QString unit;
|
||||
if (speed < 1024) {
|
||||
unit = "bytes/sec";
|
||||
|
@ -83,7 +83,7 @@ private:
|
||||
QQueue<QUrl> downloadQueue;
|
||||
QNetworkReply *currentDownload = nullptr;
|
||||
QFile output;
|
||||
QTime downloadTime;
|
||||
QElapsedTimer downloadTimer;
|
||||
TextProgressBar progressBar;
|
||||
|
||||
int downloadedCount = 0;
|
||||
|
@ -62,7 +62,7 @@ QString peer_info(const QHostAddress &address, quint16 port)
|
||||
return info.arg(address.toString()).arg(port);
|
||||
}
|
||||
|
||||
QString connection_info(QSharedPointer<QDtls> connection)
|
||||
QString connection_info(QDtls *connection)
|
||||
{
|
||||
QString info(DtlsServer::tr("Session cipher: "));
|
||||
info += connection->sessionCipher().name();
|
||||
@ -157,7 +157,7 @@ void DtlsServer::readyRead()
|
||||
}
|
||||
|
||||
const auto client = std::find_if(knownClients.begin(), knownClients.end(),
|
||||
[&](const DtlsConnection &connection){
|
||||
[&](const std::unique_ptr<QDtls> &connection){
|
||||
return connection->peerAddress() == peerAddress
|
||||
&& connection->peerPort() == peerPort;
|
||||
});
|
||||
@ -170,7 +170,7 @@ void DtlsServer::readyRead()
|
||||
|
||||
//! [6]
|
||||
if ((*client)->isConnectionEncrypted()) {
|
||||
decryptDatagram(*client, dgram);
|
||||
decryptDatagram(client->get(), dgram);
|
||||
if ((*client)->dtlsError() == QDtlsError::RemoteClosedConnectionError)
|
||||
knownClients.erase(client);
|
||||
return;
|
||||
@ -178,7 +178,7 @@ void DtlsServer::readyRead()
|
||||
//! [6]
|
||||
|
||||
//! [7]
|
||||
doHandshake(*client, dgram);
|
||||
doHandshake(client->get(), dgram);
|
||||
//! [7]
|
||||
}
|
||||
|
||||
@ -205,13 +205,13 @@ void DtlsServer::handleNewConnection(const QHostAddress &peerAddress,
|
||||
emit infoMessage(peerInfo + tr(": verified, starting a handshake"));
|
||||
//! [8]
|
||||
//! [9]
|
||||
DtlsConnection newConnection(new QDtls(QSslSocket::SslServerMode));
|
||||
std::unique_ptr<QDtls> newConnection{new QDtls{QSslSocket::SslServerMode}};
|
||||
newConnection->setDtlsConfiguration(serverConfiguration);
|
||||
newConnection->setPeer(peerAddress, peerPort);
|
||||
newConnection->connect(newConnection.data(), &QDtls::pskRequired,
|
||||
newConnection->connect(newConnection.get(), &QDtls::pskRequired,
|
||||
this, &DtlsServer::pskRequired);
|
||||
knownClients.push_back(newConnection);
|
||||
doHandshake(newConnection, clientHello);
|
||||
knownClients.push_back(std::move(newConnection));
|
||||
doHandshake(knownClients.back().get(), clientHello);
|
||||
//! [9]
|
||||
} else if (cookieSender.dtlsError() != QDtlsError::NoError) {
|
||||
emit errorMessage(tr("DTLS error: ") + cookieSender.dtlsErrorString());
|
||||
@ -221,7 +221,7 @@ void DtlsServer::handleNewConnection(const QHostAddress &peerAddress,
|
||||
}
|
||||
|
||||
//! [11]
|
||||
void DtlsServer::doHandshake(DtlsConnection newConnection, const QByteArray &clientHello)
|
||||
void DtlsServer::doHandshake(QDtls *newConnection, const QByteArray &clientHello)
|
||||
{
|
||||
const bool result = newConnection->doHandshake(&serverSocket, clientHello);
|
||||
if (!result) {
|
||||
@ -246,7 +246,7 @@ void DtlsServer::doHandshake(DtlsConnection newConnection, const QByteArray &cli
|
||||
//! [11]
|
||||
|
||||
//! [12]
|
||||
void DtlsServer::decryptDatagram(DtlsConnection connection, const QByteArray &clientMessage)
|
||||
void DtlsServer::decryptDatagram(QDtls *connection, const QByteArray &clientMessage)
|
||||
{
|
||||
Q_ASSERT(connection->isConnectionEncrypted());
|
||||
|
||||
@ -266,10 +266,9 @@ void DtlsServer::decryptDatagram(DtlsConnection connection, const QByteArray &cl
|
||||
//! [14]
|
||||
void DtlsServer::shutdown()
|
||||
{
|
||||
for (DtlsConnection &connection : knownClients)
|
||||
for (const auto &connection : qExchange(knownClients, {}))
|
||||
connection->shutdown(&serverSocket);
|
||||
|
||||
knownClients.clear();
|
||||
serverSocket.close();
|
||||
}
|
||||
//! [14]
|
||||
|
@ -54,6 +54,7 @@
|
||||
#include <QtNetwork>
|
||||
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -86,9 +87,8 @@ private:
|
||||
void handleNewConnection(const QHostAddress &peerAddress, quint16 peerPort,
|
||||
const QByteArray &clientHello);
|
||||
|
||||
using DtlsConnection = QSharedPointer<QDtls>;
|
||||
void doHandshake(DtlsConnection newConnection, const QByteArray &clientHello);
|
||||
void decryptDatagram(DtlsConnection connection, const QByteArray &clientMessage);
|
||||
void doHandshake(QDtls *newConnection, const QByteArray &clientHello);
|
||||
void decryptDatagram(QDtls *connection, const QByteArray &clientMessage);
|
||||
void shutdown();
|
||||
|
||||
bool listening = false;
|
||||
@ -96,7 +96,7 @@ private:
|
||||
|
||||
QSslConfiguration serverConfiguration;
|
||||
QDtlsClientVerifier cookieSender;
|
||||
QVector<DtlsConnection> knownClients;
|
||||
std::vector<std::unique_ptr<QDtls>> knownClients;
|
||||
|
||||
Q_DISABLE_COPY(DtlsServer)
|
||||
};
|
||||
|
@ -96,8 +96,8 @@ void RateController::transfer()
|
||||
if (sockets.isEmpty())
|
||||
return;
|
||||
|
||||
int msecs = 1000;
|
||||
if (!stopWatch.isNull())
|
||||
qint64 msecs = 1000;
|
||||
if (stopWatch.isValid())
|
||||
msecs = qMin(msecs, stopWatch.elapsed());
|
||||
|
||||
qint64 bytesToWrite = (upLimit * msecs) / 1000;
|
||||
|
@ -53,7 +53,7 @@
|
||||
|
||||
#include <QObject>
|
||||
#include <QSet>
|
||||
#include <QTime>
|
||||
#include <QElapsedTimer>
|
||||
|
||||
class PeerWireClient;
|
||||
|
||||
@ -79,7 +79,7 @@ public slots:
|
||||
void scheduleTransfer();
|
||||
|
||||
private:
|
||||
QTime stopWatch;
|
||||
QElapsedTimer stopWatch;
|
||||
QSet<PeerWireClient *> sockets;
|
||||
int upLimit;
|
||||
int downLimit;
|
||||
|
@ -56,7 +56,7 @@
|
||||
#include <QOpenGLBuffer>
|
||||
#include <QVector3D>
|
||||
#include <QMatrix4x4>
|
||||
#include <QTime>
|
||||
#include <QElapsedTimer>
|
||||
#include <QVector>
|
||||
#include <QPushButton>
|
||||
|
||||
@ -106,7 +106,7 @@ private:
|
||||
bool m_qtLogo;
|
||||
QList<Bubble *> m_bubbles;
|
||||
int m_frames;
|
||||
QTime m_time;
|
||||
QElapsedTimer m_time;
|
||||
QOpenGLShader *m_vshader1;
|
||||
QOpenGLShader *m_fshader1;
|
||||
QOpenGLShader *m_vshader2;
|
||||
|
@ -54,7 +54,7 @@
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
#include <QDir>
|
||||
#include <QTime>
|
||||
#include <QElapsedTimer>
|
||||
#include <QApplication>
|
||||
#include <QDebug>
|
||||
|
||||
@ -146,19 +146,19 @@ int main(int argc, char** argv)
|
||||
|
||||
int singleThreadTime = 0;
|
||||
{
|
||||
QTime time;
|
||||
time.start();
|
||||
QElapsedTimer timer;
|
||||
timer.start();
|
||||
WordCount total = singleThreadedWordCount(files);
|
||||
singleThreadTime = time.elapsed();
|
||||
singleThreadTime = timer.elapsed();
|
||||
qDebug() << "single thread" << singleThreadTime;
|
||||
}
|
||||
|
||||
int mapReduceTime = 0;
|
||||
{
|
||||
QTime time;
|
||||
time.start();
|
||||
QElapsedTimer timer;
|
||||
timer.start();
|
||||
WordCount total = mappedReduced(files, countWords, reduce);
|
||||
mapReduceTime = time.elapsed();
|
||||
mapReduceTime = timer.elapsed();
|
||||
qDebug() << "MapReduce" << mapReduceTime;
|
||||
}
|
||||
qDebug() << "MapReduce speedup x" << ((double)singleThreadTime - (double)mapReduceTime) / (double)mapReduceTime + 1;
|
||||
|
@ -327,9 +327,12 @@
|
||||
\snippet mainwindows/application/mainwindow.cpp 44
|
||||
\snippet mainwindows/application/mainwindow.cpp 45
|
||||
|
||||
Saving a file is very similar to loading one. Here, the
|
||||
QFile::Text flag ensures that on Windows, "\\n" is converted into
|
||||
"\\r\\n" to conform to the Windows convension.
|
||||
Saving a file is similar to loading one. We use QSaveFile to ensure
|
||||
all data are safely written and existing files are not damaged
|
||||
should writing fail.
|
||||
We use the QFile::Text flag to make sure that on Windows, "\\n"
|
||||
is converted into "\\r\\n" to conform to the Windows convention.
|
||||
|
||||
|
||||
\snippet mainwindows/application/mainwindow.cpp 46
|
||||
\snippet mainwindows/application/mainwindow.cpp 47
|
||||
|
@ -30,7 +30,7 @@
|
||||
\title Class Wizard Example
|
||||
\ingroup examples-dialogs
|
||||
|
||||
\brief The License Wizard example shows how to implement linear
|
||||
\brief The Class Wizard example shows how to implement linear
|
||||
wizards using QWizard.
|
||||
|
||||
\image classwizard.png Screenshot of the Class Wizard example
|
||||
|
@ -533,8 +533,6 @@ Scene::Scene(int width, int height, int maxTextureSize)
|
||||
m_timer->setInterval(20);
|
||||
connect(m_timer, &QTimer::timeout, this, [this](){ update(); });
|
||||
m_timer->start();
|
||||
|
||||
m_time.start();
|
||||
}
|
||||
|
||||
Scene::~Scene()
|
||||
|
@ -220,7 +220,7 @@ private:
|
||||
void initGL();
|
||||
QPointF pixelPosToViewPos(const QPointF& p);
|
||||
|
||||
QTime m_time;
|
||||
QTime m_time; // ### Qt 6: remove (unused)
|
||||
int m_lastTime;
|
||||
int m_mouseEventTime;
|
||||
int m_distExp;
|
||||
|
@ -353,24 +353,28 @@ void MainWindow::loadFile(const QString &fileName)
|
||||
bool MainWindow::saveFile(const QString &fileName)
|
||||
//! [44] //! [45]
|
||||
{
|
||||
QFile file(fileName);
|
||||
if (!file.open(QFile::WriteOnly | QFile::Text)) {
|
||||
QMessageBox::warning(this, tr("Application"),
|
||||
tr("Cannot write file %1:\n%2.")
|
||||
.arg(QDir::toNativeSeparators(fileName),
|
||||
file.errorString()));
|
||||
QString errorMessage;
|
||||
|
||||
QGuiApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
QSaveFile file(fileName);
|
||||
if (file.open(QFile::WriteOnly | QFile::Text)) {
|
||||
QTextStream out(&file);
|
||||
out << textEdit->toPlainText();
|
||||
if (!file.commit()) {
|
||||
errorMessage = tr("Cannot write file %1:\n%2.")
|
||||
.arg(QDir::toNativeSeparators(fileName), file.errorString());
|
||||
}
|
||||
} else {
|
||||
errorMessage = tr("Cannot open file %1 for writing:\n%2.")
|
||||
.arg(QDir::toNativeSeparators(fileName), file.errorString());
|
||||
}
|
||||
QGuiApplication::restoreOverrideCursor();
|
||||
|
||||
if (!errorMessage.isEmpty()) {
|
||||
QMessageBox::warning(this, tr("Application"), errorMessage);
|
||||
return false;
|
||||
}
|
||||
|
||||
QTextStream out(&file);
|
||||
#ifndef QT_NO_CURSOR
|
||||
QGuiApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
#endif
|
||||
out << textEdit->toPlainText();
|
||||
#ifndef QT_NO_CURSOR
|
||||
QGuiApplication::restoreOverrideCursor();
|
||||
#endif
|
||||
|
||||
setCurrentFile(fileName);
|
||||
statusBar()->showMessage(tr("File saved"), 2000);
|
||||
return true;
|
||||
|
@ -115,19 +115,28 @@ bool MdiChild::saveAs()
|
||||
|
||||
bool MdiChild::saveFile(const QString &fileName)
|
||||
{
|
||||
QFile file(fileName);
|
||||
if (!file.open(QFile::WriteOnly | QFile::Text)) {
|
||||
QMessageBox::warning(this, tr("MDI"),
|
||||
tr("Cannot write file %1:\n%2.")
|
||||
.arg(QDir::toNativeSeparators(fileName), file.errorString()));
|
||||
QString errorMessage;
|
||||
|
||||
QGuiApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
QSaveFile file(fileName);
|
||||
if (file.open(QFile::WriteOnly | QFile::Text)) {
|
||||
QTextStream out(&file);
|
||||
out << toPlainText();
|
||||
if (!file.commit()) {
|
||||
errorMessage = tr("Cannot write file %1:\n%2.")
|
||||
.arg(QDir::toNativeSeparators(fileName), file.errorString());
|
||||
}
|
||||
} else {
|
||||
errorMessage = tr("Cannot open file %1 for writing:\n%2.")
|
||||
.arg(QDir::toNativeSeparators(fileName), file.errorString());
|
||||
}
|
||||
QGuiApplication::restoreOverrideCursor();
|
||||
|
||||
if (!errorMessage.isEmpty()) {
|
||||
QMessageBox::warning(this, tr("MDI"), errorMessage);
|
||||
return false;
|
||||
}
|
||||
|
||||
QTextStream out(&file);
|
||||
QGuiApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
out << toPlainText();
|
||||
QGuiApplication::restoreOverrideCursor();
|
||||
|
||||
setCurrentFile(fileName);
|
||||
return true;
|
||||
}
|
||||
|
@ -425,19 +425,28 @@ void MainWindow::openRecentFile()
|
||||
|
||||
bool MainWindow::saveFile(const QString &fileName)
|
||||
{
|
||||
QFile file(fileName);
|
||||
if (!file.open(QFile::WriteOnly | QFile::Text)) {
|
||||
QMessageBox::warning(this, tr("SDI"),
|
||||
tr("Cannot write file %1:\n%2.")
|
||||
.arg(QDir::toNativeSeparators(fileName), file.errorString()));
|
||||
QString errorMessage;
|
||||
|
||||
QGuiApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
QSaveFile file(fileName);
|
||||
if (file.open(QFile::WriteOnly | QFile::Text)) {
|
||||
QTextStream out(&file);
|
||||
out << textEdit->toPlainText();
|
||||
if (!file.commit()) {
|
||||
errorMessage = tr("Cannot write file %1:\n%2.")
|
||||
.arg(QDir::toNativeSeparators(fileName), file.errorString());
|
||||
}
|
||||
} else {
|
||||
errorMessage = tr("Cannot open file %1 for writing:\n%2.")
|
||||
.arg(QDir::toNativeSeparators(fileName), file.errorString());
|
||||
}
|
||||
QGuiApplication::restoreOverrideCursor();
|
||||
|
||||
if (!errorMessage.isEmpty()) {
|
||||
QMessageBox::warning(this, tr("SDI"), errorMessage);
|
||||
return false;
|
||||
}
|
||||
|
||||
QTextStream out(&file);
|
||||
QGuiApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
out << textEdit->toPlainText();
|
||||
QGuiApplication::restoreOverrideCursor();
|
||||
|
||||
setCurrentFile(fileName);
|
||||
statusBar()->showMessage(tr("File saved"), 2000);
|
||||
return true;
|
||||
|
@ -54,7 +54,7 @@
|
||||
#include "arthurwidgets.h"
|
||||
|
||||
#include <QBasicTimer>
|
||||
#include <QDateTime>
|
||||
#include <QElapsedTimer>
|
||||
#include <QPainterPath>
|
||||
|
||||
class PathDeformRenderer : public ArthurFrame
|
||||
@ -103,7 +103,7 @@ private:
|
||||
QBasicTimer m_repaintTimer;
|
||||
// QBasicTimer m_fpsTimer;
|
||||
// int m_fpsCounter;
|
||||
QTime m_repaintTracker;
|
||||
QElapsedTimer m_repaintTracker;
|
||||
|
||||
QVector<QPainterPath> m_paths;
|
||||
QVector<QPointF> m_advances;
|
||||
|
@ -27,7 +27,7 @@ else: equals(ANDROID_TARGET_ARCH, x86_64): \
|
||||
|
||||
QMAKE_CFLAGS += -gcc-toolchain $$NDK_TOOLCHAIN_PATH -fno-limit-debug-info
|
||||
|
||||
QMAKE_LINK = $$QMAKE_CXX $$QMAKE_CFLAGS -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a
|
||||
QMAKE_LINK = $$QMAKE_CXX $$QMAKE_CFLAGS -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib++
|
||||
equals(ANDROID_TARGET_ARCH, armeabi-v7a): QMAKE_LINK += -Wl,--exclude-libs,libunwind.a
|
||||
|
||||
QMAKE_CFLAGS += -DANDROID_HAS_WSTRING --sysroot=$$NDK_ROOT/sysroot \
|
||||
|
@ -20,7 +20,7 @@
|
||||
# output check that "EGLFS GBM .......... yes" is present, otherwise
|
||||
# eglfs will not be functional.
|
||||
#
|
||||
# ./configure -release -opengl es2 -device linux-rpi3-vc4-g++ \
|
||||
# ./configure -release -opengl es2 -device linux-rasp-pi3-vc4-g++ \
|
||||
# -device-option CROSS_COMPILE=~/raspbian/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- \
|
||||
# -sysroot ~/raspbian/sysroot \
|
||||
# -prefix /usr/local/qt5pi -extprefix ~/raspbian/qt5pi -hostprefix ~/raspbian/qt5 \
|
||||
|
@ -1,3 +1,21 @@
|
||||
APK_PATH = $$shell_path($$OUT_PWD/android-build/$${TARGET}.apk)
|
||||
!contains(TEMPLATE, subdirs): {
|
||||
apk_install_target.target = apk_install_target
|
||||
apk_install_target.depends = first
|
||||
apk_install_target.commands = $(MAKE) -f $(MAKEFILE) INSTALL_ROOT=$$OUT_PWD/android-build install
|
||||
|
||||
apk.target = apk
|
||||
apk.depends = apk_install_target
|
||||
qtPrepareTool(ANDROIDDEPLOYQT, androiddeployqt)
|
||||
isEmpty(ANDROID_DEPLOYMENT_SETTINGS_FILE): ANDROID_DEPLOYMENT_SETTINGS_FILE = $$OUT_PWD/android-$$TARGET-deployment-settings.json
|
||||
contains(QMAKE_HOST.os, Windows): extension = .exe
|
||||
apk.commands = $$ANDROIDDEPLOYQT --input $$ANDROID_DEPLOYMENT_SETTINGS_FILE --output $$OUT_PWD/android-build --apk $$APK_PATH
|
||||
} else {
|
||||
prepareRecursiveTarget(apk)
|
||||
prepareRecursiveTarget(apk_install_target)
|
||||
}
|
||||
QMAKE_EXTRA_TARGETS *= apk apk_install_target
|
||||
|
||||
contains(TEMPLATE, ".*app") {
|
||||
!android_app {
|
||||
!contains(TARGET, ".so"): TARGET = lib$${TARGET}.so
|
||||
|
@ -59,6 +59,7 @@ function(_qt5_$${CMAKE_MODULE_NAME}_process_prl_file prl_file_location Configura
|
||||
file(STRINGS \"${prl_file_location}\" _prl_strings REGEX \"QMAKE_PRL_LIBS[ \\t]*=\")
|
||||
string(REGEX REPLACE \"QMAKE_PRL_LIBS[ \\t]*=[ \\t]*([^\\n]*)\" \"\\\\1\" _static_depends ${_prl_strings})
|
||||
string(REGEX REPLACE \"[ \\t]+\" \";\" _static_depends ${_static_depends})
|
||||
string(REGEX REPLACE \"[ \\t]+\" \";\" _standard_libraries ${CMAKE_CXX_STANDARD_LIBRARIES})
|
||||
set(_search_paths)
|
||||
string(REPLACE \"\\$\\$[QT_INSTALL_LIBS]\" \"${_qt5_install_libs}\" _static_depends \"${_static_depends}\")
|
||||
foreach(_flag ${_static_depends})
|
||||
@ -66,7 +67,15 @@ function(_qt5_$${CMAKE_MODULE_NAME}_process_prl_file prl_file_location Configura
|
||||
if(_flag MATCHES \"^-l(.*)$\")
|
||||
# Handle normal libraries passed as -lfoo
|
||||
set(_lib \"${CMAKE_MATCH_1}\")
|
||||
if(_lib MATCHES \"^pthread$\")
|
||||
foreach(_standard_library ${_standard_libraries})
|
||||
if(_standard_library MATCHES \"^${_lib}(\\.lib)?$\")
|
||||
set(_lib_is_default_linked TRUE)
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
if (_lib_is_default_linked)
|
||||
unset(_lib_is_default_linked)
|
||||
elseif(_lib MATCHES \"^pthread$\")
|
||||
find_package(Threads REQUIRED)
|
||||
list(APPEND _lib_deps Threads::Threads)
|
||||
else()
|
||||
|
@ -38,5 +38,5 @@ defineTest(addExclusiveBuilds) {
|
||||
}
|
||||
|
||||
# Default directories to process
|
||||
QMAKE_DIR_REPLACE = OBJECTS_DIR MOC_DIR RCC_DIR PRECOMPILED_DIR QGLTF_DIR DESTDIR TRACEGEN_DIR QMLCACHE_DIR LRELEASE_DIR
|
||||
QMAKE_DIR_REPLACE_SANE += QGLTF_DIR TRACEGEN_DIR QMLCACHE_DIR LRELEASE_DIR
|
||||
QMAKE_DIR_REPLACE_SANE += QGLTF_DIR TRACEGEN_DIR QMLCACHE_DIR LRELEASE_DIR LEX_DIR YACC_DIR
|
||||
QMAKE_DIR_REPLACE = OBJECTS_DIR MOC_DIR RCC_DIR PRECOMPILED_DIR DESTDIR $$QMAKE_DIR_REPLACE_SANE
|
||||
|
@ -2,6 +2,38 @@
|
||||
# Lex extra-compiler for handling files specified in the LEXSOURCES variable
|
||||
#
|
||||
|
||||
isEmpty(LEX_DIR): LEX_DIR = .
|
||||
|
||||
defineReplace(lexCommands) {
|
||||
input = $$relative_path($$absolute_path($$1, $$OUT_PWD), $$OUT_PWD/$$LEX_DIR)
|
||||
output = $$basename(2)
|
||||
input_base = $$basename(1)
|
||||
input_base ~= s/\.[^.]*$//
|
||||
|
||||
isEmpty(QMAKE_LEXFLAGS_MANGLE): QMAKE_LEXFLAGS_MANGLE = -P$${input_base}
|
||||
QMAKE_LEXEXTRAFLAGS = $$QMAKE_LEXFLAGS
|
||||
!yacc_no_name_mangle: QMAKE_LEXEXTRAFLAGS += $$QMAKE_LEXFLAGS_MANGLE
|
||||
|
||||
contains(QMAKE_LEX, .*flex) {
|
||||
# GNU flex, we can use -o outfile
|
||||
commands = $$QMAKE_LEX $$QMAKE_LEXEXTRAFLAGS --nounistd -o $$output $$input
|
||||
} else {
|
||||
# stupid POSIX lex, it only generates a file called lex.yy.c
|
||||
# or lex.prefix.c if the -P<prefix> option is active
|
||||
intermediate_file = lex.yy.c
|
||||
QMAKE_LEXEXTRAFLAGS = $$QMAKE_LEXFLAGS $$QMAKE_LEXFLAGS_MANGLE
|
||||
|
||||
commands = \
|
||||
-$(DEL_FILE) $${output}$$escape_expand(\\n\\t) \
|
||||
$$QMAKE_LEX $$QMAKE_LEXEXTRAFLAGS $${input}$$escape_expand(\\n\\t) \
|
||||
$(MOVE) $$intermediate_file $$output $$escape_expand(\\n\\t)
|
||||
}
|
||||
!equals(LEX_DIR, .): \
|
||||
commands = cd $$LEX_DIR && $$commands
|
||||
silent: commands = @echo Lex $$1 && $$commands
|
||||
return($$commands)
|
||||
}
|
||||
|
||||
{
|
||||
lex.name = Lex ${QMAKE_FILE_IN}
|
||||
lex.input = LEXSOURCES
|
||||
@ -12,27 +44,7 @@
|
||||
lex.variable_out = GENERATED_SOURCES
|
||||
}
|
||||
|
||||
isEmpty(QMAKE_LEXFLAGS_MANGLE):QMAKE_LEXFLAGS_MANGLE = -P${QMAKE_FILE_BASE}
|
||||
QMAKE_LEXEXTRAFLAGS = $$QMAKE_LEXFLAGS
|
||||
!yacc_no_name_mangle:QMAKE_LEXEXTRAFLAGS += $$QMAKE_LEXFLAGS_MANGLE
|
||||
|
||||
contains(QMAKE_LEX, .*flex) {
|
||||
# GNU flex, we can use -o outfile
|
||||
lex.commands = $$QMAKE_LEX $$QMAKE_LEXEXTRAFLAGS --nounistd -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN}
|
||||
} else {
|
||||
# stupid POSIX lex, it only generates a file called lex.yy.c
|
||||
# or lex.prefix.c if the -P<prefix> option is active
|
||||
intermediate_file = lex.yy.c
|
||||
QMAKE_LEXEXTRAFLAGS = $$QMAKE_LEXFLAGS $$QMAKE_LEXFLAGS_MANGLE
|
||||
|
||||
lex.commands = \
|
||||
-$(DEL_FILE) ${QMAKE_FILE_OUT}$$escape_expand(\\n\\t) \
|
||||
$$QMAKE_LEX $$QMAKE_LEXEXTRAFLAGS ${QMAKE_FILE_IN}$$escape_expand(\\n\\t) \
|
||||
$(MOVE) $$intermediate_file ${QMAKE_FILE_OUT} $$escape_expand(\\n\\t)
|
||||
unset(intermediate_file)
|
||||
}
|
||||
lex.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_LEX}$${first(QMAKE_EXT_CPP)}
|
||||
|
||||
silent:lex.commands = @echo Lex ${QMAKE_FILE_IN} && $$lex.commands
|
||||
lex.commands = ${QMAKE_FUNC_lexCommands}
|
||||
lex.output = $$LEX_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_LEX}$${first(QMAKE_EXT_CPP)}
|
||||
QMAKE_EXTRA_COMPILERS += lex
|
||||
}
|
||||
|
@ -28,7 +28,10 @@ CONFIG(release, debug|release) {
|
||||
}
|
||||
|
||||
load(link_ltcg)
|
||||
QMAKE_CFLAGS *= $$QMAKE_CFLAGS_LTCG
|
||||
QMAKE_CXXFLAGS *= $$QMAKE_CXXFLAGS_LTCG
|
||||
QMAKE_LFLAGS *= $$QMAKE_LFLAGS_LTCG
|
||||
QMAKE_CFLAGS -= $$QMAKE_CFLAGS_LTCG
|
||||
QMAKE_CFLAGS += $$QMAKE_CFLAGS_LTCG
|
||||
QMAKE_CXXFLAGS -= $$QMAKE_CXXFLAGS_LTCG
|
||||
QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_LTCG
|
||||
QMAKE_LFLAGS -= $$QMAKE_LFLAGS_LTCG
|
||||
QMAKE_LFLAGS += $$QMAKE_LFLAGS_LTCG
|
||||
}
|
||||
|
@ -1,8 +1,14 @@
|
||||
!isEmpty(SOURCES) {
|
||||
QT += qml qmltest
|
||||
load(testcase)
|
||||
contains(TEMPLATE, vc.*): DEFINES += QUICK_TEST_SOURCE_DIR=\"$$_PRO_FILE_PWD_\"
|
||||
else: DEFINES += QUICK_TEST_SOURCE_DIR=$$shell_quote(\"$$_PRO_FILE_PWD_\")
|
||||
!android {
|
||||
contains(TEMPLATE, vc.*): DEFINES += QUICK_TEST_SOURCE_DIR=\"$$_PRO_FILE_PWD_\"
|
||||
else: DEFINES += QUICK_TEST_SOURCE_DIR=$$shell_quote(\"$$_PRO_FILE_PWD_\")
|
||||
} else {
|
||||
!isEmpty(RESOURCES): warning("The RESOURCES qmake variable is empty, the test will probably fail to run")
|
||||
DEFINES += QUICK_TEST_SOURCE_DIR=\":/\"
|
||||
}
|
||||
|
||||
} else {
|
||||
# Allow a project to run tests without a CPP stub
|
||||
TEMPLATE = aux
|
||||
|
@ -37,8 +37,10 @@ intel_icl {
|
||||
|
||||
QMAKE_DIR_REPLACE_SANE = PRECOMPILED_DIR OBJECTS_DIR MOC_DIR RCC_DIR UI_DIR
|
||||
|
||||
load(qt_prefix_build_check)
|
||||
|
||||
# force_independent can be set externally. prefix_build not.
|
||||
!exists($$[QT_HOST_DATA]/.qmake.cache): \
|
||||
qtIsPrefixBuild($$[QT_HOST_DATA]): \
|
||||
CONFIG += prefix_build force_independent
|
||||
|
||||
!build_pass:!isEmpty(_QMAKE_SUPER_CACHE_):force_independent {
|
||||
|
@ -51,6 +51,12 @@ contains(TEMPLATE, .*lib) {
|
||||
}
|
||||
lib_replace.CONFIG = path
|
||||
QMAKE_PRL_INSTALL_REPLACE += lib_replace
|
||||
!equals(qt_libdir, $$rplbase/lib) {
|
||||
qtlibdir_replace.match = $$qt_libdir
|
||||
qtlibdir_replace.replace = $$qqt_libdir
|
||||
qtlibdir_replace.CONFIG = path
|
||||
QMAKE_PRL_INSTALL_REPLACE += qtlibdir_replace
|
||||
}
|
||||
}
|
||||
|
||||
# The remainder of this file must not apply to host tools/libraries,
|
||||
@ -146,8 +152,8 @@ warnings_are_errors:warning_clean {
|
||||
android: QMAKE_CXXFLAGS_WARN_ON += -Wno-error=literal-suffix
|
||||
}
|
||||
} else:msvc:!intel_icl {
|
||||
# enable for MSVC 2012, MSVC 2013, MSVC 2015
|
||||
contains(MSVC_VER, "1[124].0"): QMAKE_CXXFLAGS_WARN_ON += -WX
|
||||
# enable for MSVC 2015, MSVC 2017
|
||||
contains(MSVC_VER, "1[45].0"): QMAKE_CXXFLAGS_WARN_ON += -WX
|
||||
}
|
||||
unset(ver)
|
||||
}
|
||||
|
@ -2517,17 +2517,19 @@ logn("Configure summary:")
|
||||
logn()
|
||||
qtConfPrintReport()
|
||||
|
||||
load(qt_prefix_build_check)
|
||||
|
||||
# final notes for the user
|
||||
logn()
|
||||
logn("Qt is now configured for building. Just run '$$QMAKE_MAKE_NAME'.")
|
||||
pfx = $$[QT_INSTALL_PREFIX]
|
||||
exists($$pfx/.qmake.cache) {
|
||||
qtIsPrefixBuild($$pfx) {
|
||||
logn("Once everything is built, you must run '$$QMAKE_MAKE_NAME install'.")
|
||||
logn("Qt will be installed into '$$system_path($$pfx)'.")
|
||||
} else {
|
||||
logn("Once everything is built, Qt is installed.")
|
||||
logn("You should NOT run '$$QMAKE_MAKE_NAME install'.")
|
||||
logn("Note that this build cannot be deployed to other machines or devices.")
|
||||
} else {
|
||||
logn("Once everything is built, you must run '$$QMAKE_MAKE_NAME install'.")
|
||||
logn("Qt will be installed into '$$system_path($$pfx)'.")
|
||||
}
|
||||
logn()
|
||||
logn("Prior to reconfiguration, make sure you remove any leftovers from")
|
||||
|
@ -82,6 +82,11 @@ header_module {
|
||||
CONFIG += force_qt # Needed for the headers_clean tests.
|
||||
!lib_bundle: \
|
||||
CONFIG += qt_no_install_library
|
||||
|
||||
# Allow creation of .prl, .la and .pc files.
|
||||
target.path = $$[QT_INSTALL_LIBS]
|
||||
target.CONFIG += dummy_install
|
||||
INSTALLS += target
|
||||
} else {
|
||||
TEMPLATE = lib
|
||||
}
|
||||
|
@ -272,7 +272,7 @@ headersclean:!internal_module {
|
||||
hcleanFLAGS += -std=c++98
|
||||
}
|
||||
|
||||
hcleanCOMMAND = $$QMAKE_CXX -c $(CXXFLAGS) $$hcleanFLAGS $(INCPATH) $$hcleanDEFS -xc++ ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
|
||||
hcleanCOMMAND = $(CXX) -c $(CXXFLAGS) $$hcleanFLAGS $(INCPATH) $$hcleanDEFS -xc++ ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
|
||||
} else: msvc:!intel_icl {
|
||||
# 4180: qualifier applied to function type has no meaning; ignored
|
||||
# 4458: declaration of 'identifier' hides class member
|
||||
@ -284,7 +284,7 @@ headersclean:!internal_module {
|
||||
# 4577: 'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc
|
||||
greaterThan(QMAKE_MSC_VER, 18): hcleanFLAGS += -wd4577
|
||||
|
||||
hcleanCOMMAND = $$QMAKE_CXX -c $(CXXFLAGS) $$hcleanFLAGS $(INCPATH) $$hcleanDEFS -FI${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} \
|
||||
hcleanCOMMAND = $(CXX) -c $(CXXFLAGS) $$hcleanFLAGS $(INCPATH) $$hcleanDEFS -FI${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} \
|
||||
$$[QT_INSTALL_DATA/src]/mkspecs/features/data/dummy.cpp
|
||||
}
|
||||
|
||||
|
21
mkspecs/features/qt_prefix_build_check.prf
Normal file
21
mkspecs/features/qt_prefix_build_check.prf
Normal file
@ -0,0 +1,21 @@
|
||||
#
|
||||
# W A R N I N G
|
||||
# -------------
|
||||
#
|
||||
# This file is not part of the Qt API. It exists purely as an
|
||||
# implementation detail. It may change from version to version
|
||||
# without notice, or even be removed.
|
||||
#
|
||||
# We mean it.
|
||||
#
|
||||
|
||||
defineTest(qtIsPrefixBuild) {
|
||||
prefixdir = $$1
|
||||
# qtbase non-prefix build?
|
||||
exists($$prefixdir/.qmake.cache): \
|
||||
return(false)
|
||||
# top-level non-prefix build?
|
||||
contains(prefixdir, .*/qtbase):exists($$dirname(prefixdir)/.qmake.super): \
|
||||
return(false)
|
||||
return(true)
|
||||
}
|
@ -1,10 +1,33 @@
|
||||
# Sanitizer flags
|
||||
|
||||
|
||||
sanitize_address {
|
||||
QMAKE_CFLAGS += $$QMAKE_SANITIZE_ADDRESS_CFLAGS
|
||||
QMAKE_CXXFLAGS += $$QMAKE_SANITIZE_ADDRESS_CXXFLAGS
|
||||
QMAKE_LFLAGS += $$QMAKE_SANITIZE_ADDRESS_LFLAGS
|
||||
android {
|
||||
# ARM 32 (armeabi-v7a & arm5) are not supported because Qt must be rebuilt with -marm
|
||||
equals(ANDROID_TARGET_ARCH, arm64-v8a): ANDROID_LIBCLANG_RT_FILE = "libclang_rt.asan-aarch64-android.so"
|
||||
else: equals(ANDROID_TARGET_ARCH, x86): ANDROID_LIBCLANG_RT_FILE = "libclang_rt.asan-i686-android.so"
|
||||
else: equals(ANDROID_TARGET_ARCH, x86_64): ANDROID_LIBCLANG_RT_FILE = "libclang_rt.asan-x86_64-android.so"
|
||||
else: error("ASAN: Unsupported platform $${ANDROID_TARGET_ARCH}")
|
||||
|
||||
ANDROID_LIBCLANG_RT_PATH = $${NDK_LLVM_PATH}/lib64/clang
|
||||
ANDROID_CLANG_RT_VERSIONS = $$files($$ANDROID_LIBCLANG_RT_PATH/*)
|
||||
for (VERSION, ANDROID_CLANG_RT_VERSIONS) {
|
||||
greaterThan(VERSION, $$ANDROID_LIBCLANG_RT_PATH): ANDROID_LIBCLANG_RT_PATH = $$VERSION
|
||||
}
|
||||
ANDROID_LIBCLANG_RT_PATH = "$${ANDROID_LIBCLANG_RT_PATH}/lib/linux/"
|
||||
ANDROID_WRAP_SH_CONTENT = "$$LITERAL_HASH!/system/bin/sh"
|
||||
ANDROID_WRAP_SH_CONTENT += "HERE=\"$(cd \"$(dirname \"$0\")\" && pwd)\""
|
||||
isEmpty(ANDROID_ASAN_OPTIONS): ANDROID_ASAN_OPTIONS = "log_to_syslog=false,allow_user_segv_handler=1"
|
||||
ANDROID_WRAP_SH_CONTENT += "export ASAN_OPTIONS=$${ANDROID_ASAN_OPTIONS}"
|
||||
ANDROID_WRAP_SH_CONTENT += "export LD_PRELOAD=$HERE/$${ANDROID_LIBCLANG_RT_FILE}"
|
||||
ANDROID_WRAP_SH_CONTENT += "exec \"$@\""
|
||||
write_file($$OUT_PWD/android-build/resources/lib/$${ANDROID_TARGET_ARCH}/wrap.sh, ANDROID_WRAP_SH_CONTENT) | error()
|
||||
libclang_rt.path = /libs/$$ANDROID_TARGET_ARCH/
|
||||
libclang_rt.files = "$${ANDROID_LIBCLANG_RT_PATH}/$${ANDROID_LIBCLANG_RT_FILE}"
|
||||
INSTALLS += libclang_rt
|
||||
}
|
||||
}
|
||||
|
||||
sanitize_memory {
|
||||
|
@ -52,14 +52,26 @@ debug_and_release:debug_and_release_target {
|
||||
}
|
||||
|
||||
# Allow for a custom test runner script
|
||||
$${type}.commands += $(TESTRUNNER)
|
||||
|
||||
android: isEmpty($(TESTRUNNER)) {
|
||||
APK_PATH = $$shell_path($$OUT_PWD/android-build/$${TARGET}.apk)
|
||||
qtPrepareTool(ANDROIDTESTRUNNER, androidtestrunner)
|
||||
qtPrepareTool(ANDROIDDEPLOYQT, androiddeployqt)
|
||||
isEmpty(ANDROID_DEPLOYMENT_SETTINGS_FILE): ANDROID_DEPLOYMENT_SETTINGS_FILE = $$OUT_PWD/android-$$TARGET-deployment-settings.json
|
||||
contains(QMAKE_HOST.os, Windows): extension = .exe
|
||||
$${type}.commands = $$ANDROIDTESTRUNNER --androiddeployqt \"$$ANDROIDDEPLOYQT --input $$ANDROID_DEPLOYMENT_SETTINGS_FILE\"
|
||||
$${type}.commands += --path \"$$OUT_PWD/android-build\"
|
||||
$${type}.commands += --adb \"$$shell_path($${ANDROID_SDK_ROOT}$${QMAKE_DIR_SEP}platform-tools$${QMAKE_DIR_SEP}adb$${extension})\"
|
||||
$${type}.commands += --make \"$(MAKE) -f $(MAKEFILE)\"
|
||||
$${type}.commands += --apk $$APK_PATH
|
||||
} else: $${type}.commands += $(TESTRUNNER)
|
||||
|
||||
unix {
|
||||
isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = .
|
||||
|
||||
app_bundle: \
|
||||
$${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
|
||||
else: \
|
||||
else: !android: \
|
||||
$${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET)
|
||||
} else {
|
||||
# Windows
|
||||
|
@ -2,32 +2,49 @@
|
||||
# Yacc extra-compiler for handling files specified in the YACCSOURCES variable
|
||||
#
|
||||
|
||||
isEmpty(YACC_DIR): YACC_DIR = .
|
||||
|
||||
defineReplace(yaccCommands) {
|
||||
input = $$relative_path($$absolute_path($$1, $$OUT_PWD), $$OUT_PWD/$$YACC_DIR)
|
||||
input_base = $$basename(1)
|
||||
input_base ~= s/\.[^.]*$//
|
||||
hpp_output = $$2
|
||||
cpp_output = $$hpp_output
|
||||
cpp_output ~= s/$$re_escape($$first(QMAKE_EXT_H))$/$$first(QMAKE_EXT_CPP)/
|
||||
|
||||
isEmpty(QMAKE_YACCFLAGS_MANGLE) {
|
||||
QMAKE_YACCFLAGS_MANGLE = -p $${input_base} -b $${input_base}
|
||||
QMAKE_YACC_HEADER = $${input_base}.tab.h
|
||||
QMAKE_YACC_SOURCE = $${input_base}.tab.c
|
||||
} else {
|
||||
QMAKE_YACCFLAGS_MANGLE ~= s/\\$base/$${input_base}/g #backwards compat
|
||||
QMAKE_YACC_HEADER ~= s/\\$base/$${input_base}/g
|
||||
QMAKE_YACC_SOURCE ~= s/\\$base/$${input_base}/g
|
||||
}
|
||||
QMAKE_YACCDECLFLAGS = $$QMAKE_YACCFLAGS
|
||||
!yacc_no_name_mangle: QMAKE_YACCDECLFLAGS += $$QMAKE_YACCFLAGS_MANGLE
|
||||
|
||||
!equals(YACC_DIR, .): yacc_call = cd $$YACC_DIR &&
|
||||
yacc_call += $$QMAKE_YACC $$QMAKE_YACCDECLFLAGS $${input}
|
||||
|
||||
commands = \
|
||||
-$(DEL_FILE) $${hpp_output} $${cpp_output}$$escape_expand(\\n\\t) \
|
||||
$${yacc_call}$$escape_expand(\\n\\t) \
|
||||
$(MOVE) $${YACC_DIR}/$${QMAKE_YACC_HEADER} $${hpp_output}$$escape_expand(\\n\\t) \
|
||||
$(MOVE) $${YACC_DIR}/$${QMAKE_YACC_SOURCE} $${cpp_output}$$escape_expand(\\n\\t)
|
||||
|
||||
silent: commands = @echo Yacc $$1 && $$commands
|
||||
return($$commands)
|
||||
}
|
||||
|
||||
yacc_output_base = $${YACC_DIR}/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}
|
||||
|
||||
{
|
||||
yacc_decl.name = Yacc header
|
||||
yacc_decl.input = YACCSOURCES
|
||||
yacc_decl.variable_out = GENERATED_FILES
|
||||
|
||||
|
||||
isEmpty(QMAKE_YACCFLAGS_MANGLE) {
|
||||
QMAKE_YACCFLAGS_MANGLE = -p ${QMAKE_FILE_BASE} -b ${QMAKE_FILE_BASE}
|
||||
QMAKE_YACC_HEADER = ${QMAKE_FILE_BASE}.tab.h
|
||||
QMAKE_YACC_SOURCE = ${QMAKE_FILE_BASE}.tab.c
|
||||
} else {
|
||||
QMAKE_YACCFLAGS_MANGLE ~= s/\\$base/${QMAKE_FILE_BASE}/g #backwards compat
|
||||
QMAKE_YACC_HEADER ~= s/\\$base/${QMAKE_FILE_BASE}/g
|
||||
QMAKE_YACC_SOURCE ~= s/\\$base/${QMAKE_FILE_BASE}/g
|
||||
}
|
||||
QMAKE_YACCDECLFLAGS = $$QMAKE_YACCFLAGS
|
||||
!yacc_no_name_mangle:QMAKE_YACCDECLFLAGS += $$QMAKE_YACCFLAGS_MANGLE
|
||||
|
||||
yacc_decl.commands = \
|
||||
-$(DEL_FILE) $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_CPP)}$$escape_expand(\\n\\t) \
|
||||
$$QMAKE_YACC $$QMAKE_YACCDECLFLAGS ${QMAKE_FILE_IN}$$escape_expand(\\n\\t) \
|
||||
$(MOVE) $${QMAKE_YACC_HEADER} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)}$$escape_expand(\\n\\t) \
|
||||
$(MOVE) $${QMAKE_YACC_SOURCE} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_CPP)}$$escape_expand(\\n\\t)
|
||||
yacc_decl.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)}
|
||||
|
||||
silent:yacc_decl.commands = @echo Yacc ${QMAKE_FILE_IN} && $$yacc_decl.commands
|
||||
yacc_decl.commands = ${QMAKE_FUNC_yaccCommands}
|
||||
yacc_decl.output = $${yacc_output_base}$$first(QMAKE_EXT_H)
|
||||
QMAKE_EXTRA_COMPILERS += yacc_decl
|
||||
}
|
||||
|
||||
@ -37,7 +54,9 @@
|
||||
yacc_impl.variable_out = GENERATED_SOURCES
|
||||
yacc_impl.dependency_type = TYPE_C
|
||||
yacc_impl.commands = $$escape_expand(\\n) # We don't want any commands where, but if command is empty no rules are created
|
||||
yacc_impl.depends += $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)} # Make sure we depend on the step above
|
||||
yacc_impl.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_CPP)} # Faked output from this step, output really created in step above
|
||||
yacc_impl.depends += $${yacc_output_base}$$first(QMAKE_EXT_H) # Make sure we depend on the step above
|
||||
yacc_impl.output = $${yacc_output_base}$$first(QMAKE_EXT_CPP) # Faked output from this step, output really created in step above
|
||||
QMAKE_EXTRA_COMPILERS += yacc_impl
|
||||
}
|
||||
|
||||
unset(yacc_output_base)
|
||||
|
@ -94,6 +94,12 @@ QMAKE_PREFIX_STATICLIB = lib
|
||||
QMAKE_EXTENSION_STATICLIB = a # llvm bitcode
|
||||
|
||||
QMAKE_AR = emar cqs
|
||||
equals(QMAKE_HOST.os, Windows) {
|
||||
QMAKE_AR_CMD = \
|
||||
"$(file >$(OBJECTS_DIR)/$(TARGET).rsp, $(subst \\,/,$(OBJECTS)))$$escape_expand(\\n\\t)" \
|
||||
"$(AR) $(DESTDIR)$(TARGET) @$(OBJECTS_DIR)/$(TARGET).rsp"
|
||||
}
|
||||
|
||||
QMAKE_DISTCLEAN += *.html *.js *.wasm
|
||||
|
||||
load(qt_config)
|
||||
|
@ -513,7 +513,6 @@ bool
|
||||
ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
|
||||
{
|
||||
ProStringList tmp;
|
||||
bool did_preprocess = false;
|
||||
|
||||
//HEADER
|
||||
const int pbVersion = pbuilderVersion();
|
||||
@ -731,7 +730,6 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
|
||||
QFile mkf(mkfile);
|
||||
if(mkf.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
||||
writingUnixMakefileGenerator = true;
|
||||
did_preprocess = true;
|
||||
debug_msg(1, "pbuilder: Creating file: %s", mkfile.toLatin1().constData());
|
||||
QTextStream mkt(&mkf);
|
||||
writeHeader(mkt);
|
||||
|
@ -892,7 +892,7 @@ MakefileGenerator::processPrlFile(QString &file, bool baseOnly)
|
||||
|
||||
bool
|
||||
MakefileGenerator::processPrlFileBase(QString &origFile, const QStringRef &origName,
|
||||
const QStringRef &fixedBase, int slashOff)
|
||||
const QStringRef &fixedBase, int /*slashOff*/)
|
||||
{
|
||||
return processPrlFileCore(origFile, origName, fixedBase + Option::prl_ext);
|
||||
}
|
||||
@ -1112,7 +1112,8 @@ MakefileGenerator::writePrlFile()
|
||||
&& project->values("QMAKE_FAILED_REQUIREMENTS").isEmpty()
|
||||
&& project->isActiveConfig("create_prl")
|
||||
&& (project->first("TEMPLATE") == "lib"
|
||||
|| project->first("TEMPLATE") == "vclib")
|
||||
|| project->first("TEMPLATE") == "vclib"
|
||||
|| project->first("TEMPLATE") == "aux")
|
||||
&& (!project->isActiveConfig("plugin") || project->isActiveConfig("static"))) { //write prl file
|
||||
QString local_prl = prlFileName();
|
||||
QString prl = fileFixify(local_prl);
|
||||
@ -2369,8 +2370,15 @@ MakefileGenerator::findSubDirsSubTargets() const
|
||||
st->profile = file;
|
||||
}
|
||||
} else {
|
||||
if(!file.isEmpty() && !project->isActiveConfig("subdir_first_pro"))
|
||||
st->profile = file.section(Option::dir_sep, -1) + Option::pro_ext;
|
||||
if (!file.isEmpty() && !project->isActiveConfig("subdir_first_pro")) {
|
||||
const QString baseName = file.section(Option::dir_sep, -1);
|
||||
if (baseName.isEmpty()) {
|
||||
warn_msg(WarnLogic, "Ignoring invalid SUBDIRS entry %s",
|
||||
subdirs[subdir].toLatin1().constData());
|
||||
continue;
|
||||
}
|
||||
st->profile = baseName + Option::pro_ext;
|
||||
}
|
||||
st->in_directory = file;
|
||||
}
|
||||
while(st->in_directory.endsWith(Option::dir_sep))
|
||||
@ -3355,42 +3363,44 @@ MakefileGenerator::writePkgConfigFile()
|
||||
if (!version.isEmpty())
|
||||
t << "Version: " << version << Qt::endl;
|
||||
|
||||
// libs
|
||||
t << "Libs: ";
|
||||
QString pkgConfiglibName;
|
||||
if (target_mode == TARG_MAC_MODE && project->isActiveConfig("lib_bundle")) {
|
||||
if (libDir != QLatin1String("/Library/Frameworks"))
|
||||
t << "-F${libdir} ";
|
||||
ProString bundle;
|
||||
if (!project->isEmpty("QMAKE_FRAMEWORK_BUNDLE_NAME"))
|
||||
bundle = project->first("QMAKE_FRAMEWORK_BUNDLE_NAME");
|
||||
else
|
||||
bundle = project->first("TARGET");
|
||||
int suffix = bundle.lastIndexOf(".framework");
|
||||
if (suffix != -1)
|
||||
bundle = bundle.left(suffix);
|
||||
t << "-framework ";
|
||||
pkgConfiglibName = bundle.toQString();
|
||||
} else {
|
||||
if (!project->values("QMAKE_DEFAULT_LIBDIRS").contains(libDir))
|
||||
t << "-L${libdir} ";
|
||||
pkgConfiglibName = "-l" + project->first("QMAKE_ORIG_TARGET");
|
||||
if (project->isActiveConfig("shared"))
|
||||
pkgConfiglibName += project->first("TARGET_VERSION_EXT").toQString();
|
||||
}
|
||||
t << shellQuote(pkgConfiglibName) << " \n";
|
||||
if (project->first("TEMPLATE") == "lib") {
|
||||
// libs
|
||||
t << "Libs: ";
|
||||
QString pkgConfiglibName;
|
||||
if (target_mode == TARG_MAC_MODE && project->isActiveConfig("lib_bundle")) {
|
||||
if (libDir != QLatin1String("/Library/Frameworks"))
|
||||
t << "-F${libdir} ";
|
||||
ProString bundle;
|
||||
if (!project->isEmpty("QMAKE_FRAMEWORK_BUNDLE_NAME"))
|
||||
bundle = project->first("QMAKE_FRAMEWORK_BUNDLE_NAME");
|
||||
else
|
||||
bundle = project->first("TARGET");
|
||||
int suffix = bundle.lastIndexOf(".framework");
|
||||
if (suffix != -1)
|
||||
bundle = bundle.left(suffix);
|
||||
t << "-framework ";
|
||||
pkgConfiglibName = bundle.toQString();
|
||||
} else {
|
||||
if (!project->values("QMAKE_DEFAULT_LIBDIRS").contains(libDir))
|
||||
t << "-L${libdir} ";
|
||||
pkgConfiglibName = "-l" + project->first("QMAKE_ORIG_TARGET");
|
||||
if (project->isActiveConfig("shared"))
|
||||
pkgConfiglibName += project->first("TARGET_VERSION_EXT").toQString();
|
||||
}
|
||||
t << shellQuote(pkgConfiglibName) << " \n";
|
||||
|
||||
if (project->isActiveConfig("staticlib")) {
|
||||
ProStringList libs;
|
||||
libs << "LIBS"; // FIXME: this should not be conditional on staticlib
|
||||
libs << "LIBS_PRIVATE";
|
||||
libs << "QMAKE_LIBS"; // FIXME: this should not be conditional on staticlib
|
||||
libs << "QMAKE_LIBS_PRIVATE";
|
||||
libs << "QMAKE_LFLAGS_THREAD"; //not sure about this one, but what about things like -pthread?
|
||||
t << "Libs.private:";
|
||||
for (ProStringList::ConstIterator it = libs.cbegin(); it != libs.cend(); ++it)
|
||||
t << ' ' << fixLibFlags((*it).toKey()).join(' ');
|
||||
t << Qt::endl;
|
||||
if (project->isActiveConfig("staticlib")) {
|
||||
ProStringList libs;
|
||||
libs << "LIBS"; // FIXME: this should not be conditional on staticlib
|
||||
libs << "LIBS_PRIVATE";
|
||||
libs << "QMAKE_LIBS"; // FIXME: this should not be conditional on staticlib
|
||||
libs << "QMAKE_LIBS_PRIVATE";
|
||||
libs << "QMAKE_LFLAGS_THREAD"; //not sure about this one, but what about things like -pthread?
|
||||
t << "Libs.private:";
|
||||
for (ProStringList::ConstIterator it = libs.cbegin(); it != libs.cend(); ++it)
|
||||
t << ' ' << fixLibFlags((*it).toKey()).join(' ');
|
||||
t << Qt::endl;
|
||||
}
|
||||
}
|
||||
|
||||
// flags
|
||||
@ -3433,19 +3443,23 @@ QString MakefileGenerator::installMetaFile(const ProKey &replace_rule, const QSt
|
||||
|| project->isActiveConfig("no_sed_meta_install")) {
|
||||
ret += "-$(INSTALL_FILE) " + escapeFilePath(src) + ' ' + escapeFilePath(dst);
|
||||
} else {
|
||||
ret += "-$(SED)";
|
||||
QString sedargs;
|
||||
const ProStringList &replace_rules = project->values(replace_rule);
|
||||
for (int r = 0; r < replace_rules.size(); ++r) {
|
||||
const ProString match = project->first(ProKey(replace_rules.at(r) + ".match")),
|
||||
replace = project->first(ProKey(replace_rules.at(r) + ".replace"));
|
||||
if (!match.isEmpty() /*&& match != replace*/) {
|
||||
ret += " -e " + shellQuote("s," + match + "," + replace + ",g");
|
||||
sedargs += " -e " + shellQuote("s," + match + "," + replace + ",g");
|
||||
if (isWindowsShell() && project->first(ProKey(replace_rules.at(r) + ".CONFIG")).contains("path"))
|
||||
ret += " -e " + shellQuote("s," + windowsifyPath(match.toQString())
|
||||
sedargs += " -e " + shellQuote("s," + windowsifyPath(match.toQString())
|
||||
+ "," + windowsifyPath(replace.toQString()) + ",gi");
|
||||
}
|
||||
}
|
||||
ret += ' ' + escapeFilePath(src) + " > " + escapeFilePath(dst);
|
||||
if (sedargs.isEmpty()) {
|
||||
ret += "-$(INSTALL_FILE) " + escapeFilePath(src) + ' ' + escapeFilePath(dst);
|
||||
} else {
|
||||
ret += "-$(SED) " + sedargs + ' ' + escapeFilePath(src) + " > " + escapeFilePath(dst);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -815,7 +815,7 @@ bool QMakeSourceFileInfo::findDeps(SourceFile *file)
|
||||
break;
|
||||
}
|
||||
cpp_state = InCode;
|
||||
// ... and fall through to handle buffer[x] as such.
|
||||
Q_FALLTHROUGH(); // to handle buffer[x] as such.
|
||||
case InCode:
|
||||
// matching quotes (string literals and character literals)
|
||||
if (buffer[x] == '\'' || buffer[x] == '"') {
|
||||
|
@ -43,7 +43,7 @@ protected:
|
||||
void init() override;
|
||||
bool writeMakefile(QTextStream &) override;
|
||||
|
||||
QString escapeFilePath(const QString &path) const override { Q_ASSERT(false); return QString(); }
|
||||
QString escapeFilePath(const QString &) const override { Q_ASSERT(false); return QString(); }
|
||||
|
||||
public:
|
||||
bool supportsMetaBuild() override { return false; }
|
||||
|
@ -725,7 +725,7 @@ UnixMakefileGenerator::defaultInstall(const QString &t)
|
||||
}
|
||||
}
|
||||
}
|
||||
if(project->first("TEMPLATE") == "lib") {
|
||||
if (isAux || project->first("TEMPLATE") == "lib") {
|
||||
QStringList types;
|
||||
types << "prl" << "libtool" << "pkgconfig";
|
||||
for(int i = 0; i < types.size(); ++i) {
|
||||
|
@ -43,12 +43,15 @@ void
|
||||
UnixMakefileGenerator::writePrlFile(QTextStream &t)
|
||||
{
|
||||
MakefileGenerator::writePrlFile(t);
|
||||
const ProString tmplt = project->first("TEMPLATE");
|
||||
if (tmplt != "lib" && tmplt != "aux")
|
||||
return;
|
||||
// libtool support
|
||||
if(project->isActiveConfig("create_libtool") && project->first("TEMPLATE") == "lib") { //write .la
|
||||
if (project->isActiveConfig("create_libtool")) {
|
||||
writeLibtoolFile();
|
||||
}
|
||||
// pkg-config support
|
||||
if(project->isActiveConfig("create_pc") && project->first("TEMPLATE") == "lib")
|
||||
if (project->isActiveConfig("create_pc"))
|
||||
writePkgConfigFile();
|
||||
}
|
||||
|
||||
@ -164,6 +167,16 @@ static QString rfc1034Identifier(const QString &str)
|
||||
return s;
|
||||
}
|
||||
|
||||
static QString escapeDir(const QString &dir)
|
||||
{
|
||||
// When building on non-MSys MinGW, the path ends with a backslash, which
|
||||
// GNU make will interpret that as a line continuation. Doubling the backslash
|
||||
// avoids the problem, at the cost of the variable containing *both* backslashes.
|
||||
if (dir.endsWith('\\'))
|
||||
return dir + '\\';
|
||||
return dir;
|
||||
}
|
||||
|
||||
void
|
||||
UnixMakefileGenerator::writeMakeParts(QTextStream &t)
|
||||
{
|
||||
@ -226,7 +239,7 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
|
||||
t << "####### Output directory\n\n";
|
||||
// This is used in commands by some .prf files.
|
||||
if (! project->values("OBJECTS_DIR").isEmpty())
|
||||
t << "OBJECTS_DIR = " << fileVar("OBJECTS_DIR") << Qt::endl;
|
||||
t << "OBJECTS_DIR = " << escapeDir(fileVar("OBJECTS_DIR")) << Qt::endl;
|
||||
else
|
||||
t << "OBJECTS_DIR = ./\n";
|
||||
t << Qt::endl;
|
||||
@ -272,13 +285,7 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
|
||||
t << "DIST = " << valList(fileFixify(project->values("DISTFILES").toQStringList())) << " "
|
||||
<< fileVarList("HEADERS") << ' ' << fileVarList("SOURCES") << Qt::endl;
|
||||
t << "QMAKE_TARGET = " << fileVar("QMAKE_ORIG_TARGET") << Qt::endl;
|
||||
QString destd = fileVar("DESTDIR");
|
||||
// When building on non-MSys MinGW, the path ends with a backslash, which
|
||||
// GNU make will interpret that as a line continuation. Doubling the backslash
|
||||
// avoids the problem, at the cost of the variable containing *both* backslashes.
|
||||
if (destd.endsWith('\\'))
|
||||
destd += '\\';
|
||||
t << "DESTDIR = " << destd << Qt::endl;
|
||||
t << "DESTDIR = " << escapeDir(fileVar("DESTDIR")) << Qt::endl;
|
||||
t << "TARGET = " << fileVar("TARGET") << Qt::endl;
|
||||
if(project->isActiveConfig("plugin")) {
|
||||
t << "TARGETD = " << fileVar("TARGET") << Qt::endl;
|
||||
@ -1194,7 +1201,8 @@ void UnixMakefileGenerator::init2()
|
||||
project->values("QMAKE_FRAMEWORK_VERSION").append(project->first("VER_MAJ"));
|
||||
|
||||
if (project->first("TEMPLATE") == "aux") {
|
||||
// nothing
|
||||
project->values("PRL_TARGET") =
|
||||
project->values("TARGET").first().prepend(project->first("QMAKE_PREFIX_STATICLIB"));
|
||||
} else if (!project->values("QMAKE_APP_FLAG").isEmpty()) {
|
||||
if(!project->isEmpty("QMAKE_BUNDLE")) {
|
||||
ProString bundle_loc = project->first("QMAKE_BUNDLE_LOCATION");
|
||||
|
@ -1991,6 +1991,7 @@ bool VCMIDLTool::parseOption(const char* option)
|
||||
break;
|
||||
case 0x5eb7af2: // /header filename
|
||||
offset = 5;
|
||||
Q_FALLTHROUGH();
|
||||
case 0x0000358: // /h filename
|
||||
HeaderFileName = option + offset + 3;
|
||||
break;
|
||||
|
@ -1521,6 +1521,18 @@ void VcprojGenerator::initDistributionFiles()
|
||||
vcProject.DistributionFiles.Config = &(vcProject.Configuration);
|
||||
}
|
||||
|
||||
QString VcprojGenerator::extraCompilerName(const ProString &extraCompiler,
|
||||
const QStringList &inputs,
|
||||
const QStringList &outputs)
|
||||
{
|
||||
QString name = project->values(ProKey(extraCompiler + ".name")).join(' ');
|
||||
if (name.isEmpty())
|
||||
name = extraCompiler.toQString();
|
||||
else
|
||||
name = replaceExtraCompilerVariables(name, inputs, outputs, NoShell);
|
||||
return name;
|
||||
}
|
||||
|
||||
void VcprojGenerator::initExtraCompilerOutputs()
|
||||
{
|
||||
ProStringList otherFilters;
|
||||
@ -1538,13 +1550,16 @@ void VcprojGenerator::initExtraCompilerOutputs()
|
||||
<< "YACCSOURCES";
|
||||
const ProStringList &quc = project->values("QMAKE_EXTRA_COMPILERS");
|
||||
for (ProStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) {
|
||||
ProString extracompilerName = project->first(ProKey(*it + ".name"));
|
||||
if (extracompilerName.isEmpty())
|
||||
extracompilerName = (*it);
|
||||
const ProStringList &inputVars = project->values(ProKey(*it + ".input"));
|
||||
ProStringList inputFiles;
|
||||
for (auto var : inputVars)
|
||||
inputFiles.append(project->values(var.toKey()));
|
||||
const ProStringList &outputs = project->values(ProKey(*it + ".output"));
|
||||
|
||||
// Create an extra compiler filter and add the files
|
||||
VCFilter extraCompile;
|
||||
extraCompile.Name = extracompilerName.toQString();
|
||||
extraCompile.Name = extraCompilerName(it->toQString(), inputFiles.toQStringList(),
|
||||
outputs.toQStringList());
|
||||
extraCompile.ParseFiles = _False;
|
||||
extraCompile.Filter = "";
|
||||
extraCompile.Guid = QString(_GUIDExtraCompilerFiles) + "-" + (*it);
|
||||
@ -1557,14 +1572,14 @@ void VcprojGenerator::initExtraCompilerOutputs()
|
||||
if (!outputVar.isEmpty() && otherFilters.contains(outputVar))
|
||||
continue;
|
||||
|
||||
QString tmp_out = project->first(ProKey(*it + ".output")).toQString();
|
||||
QString tmp_out = project->first(outputs.first().toKey()).toQString();
|
||||
if (project->values(ProKey(*it + ".CONFIG")).indexOf("combine") != -1) {
|
||||
// Combined output, only one file result
|
||||
extraCompile.addFile(Option::fixPathToTargetOS(
|
||||
replaceExtraCompilerVariables(tmp_out, QString(), QString(), NoShell), false));
|
||||
} else {
|
||||
// One output file per input
|
||||
const ProStringList &tmp_in = project->values(project->first(ProKey(*it + ".input")).toKey());
|
||||
const ProStringList &tmp_in = project->values(inputVars.first().toKey());
|
||||
for (int i = 0; i < tmp_in.count(); ++i) {
|
||||
const QString &filename = tmp_in.at(i).toQString();
|
||||
if (extraCompilerSources.contains(filename) && !otherFiltersContain(filename))
|
||||
@ -1577,7 +1592,6 @@ void VcprojGenerator::initExtraCompilerOutputs()
|
||||
// build steps there. So, we turn it around and add it to the input files instead,
|
||||
// provided that the input file variable is not handled already (those in otherFilters
|
||||
// are handled, so we avoid them).
|
||||
const ProStringList &inputVars = project->values(ProKey(*it + ".input"));
|
||||
for (const ProString &inputVar : inputVars) {
|
||||
if (!otherFilters.contains(inputVar)) {
|
||||
const ProStringList &tmp_in = project->values(inputVar.toKey());
|
||||
|
@ -74,6 +74,8 @@ protected:
|
||||
bool doDepends() const override { return false; } // Never necessary
|
||||
using Win32MakefileGenerator::replaceExtraCompilerVariables;
|
||||
QString replaceExtraCompilerVariables(const QString &, const QStringList &, const QStringList &, ReplaceFor) override;
|
||||
QString extraCompilerName(const ProString &extraCompiler, const QStringList &inputs,
|
||||
const QStringList &outputs);
|
||||
bool supportsMetaBuild() override { return true; }
|
||||
bool supportsMergedBuilds() override { return true; }
|
||||
bool mergeBuildProject(MakefileGenerator *other) override;
|
||||
|
@ -645,7 +645,7 @@ void Win32MakefileGenerator::writeObjectsPart(QTextStream &t)
|
||||
t << "OBJECTS = " << valList(escapeDependencyPaths(project->values("OBJECTS"))) << Qt::endl;
|
||||
}
|
||||
|
||||
void Win32MakefileGenerator::writeImplicitRulesPart(QTextStream &t)
|
||||
void Win32MakefileGenerator::writeImplicitRulesPart(QTextStream &)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -1130,35 +1130,48 @@ bool QMakeEvaluator::prepareProject(const QString &inDir)
|
||||
}
|
||||
superdir = qdfi.path();
|
||||
}
|
||||
QString sdir = inDir;
|
||||
QString dir = m_outputDir;
|
||||
forever {
|
||||
conffile = sdir + QLatin1String("/.qmake.conf");
|
||||
if (!m_vfs->exists(conffile, flags))
|
||||
conffile.clear();
|
||||
cachefile = dir + QLatin1String("/.qmake.cache");
|
||||
if (!m_vfs->exists(cachefile, flags))
|
||||
cachefile.clear();
|
||||
if (!conffile.isEmpty() || !cachefile.isEmpty()) {
|
||||
if (dir != sdir)
|
||||
m_sourceRoot = sdir;
|
||||
if (!cachefile.isEmpty()) {
|
||||
m_buildRoot = dir;
|
||||
break;
|
||||
}
|
||||
if (dir == superdir)
|
||||
goto no_cache;
|
||||
QFileInfo qsdfi(sdir);
|
||||
QFileInfo qdfi(dir);
|
||||
if (qsdfi.isRoot() || qdfi.isRoot())
|
||||
goto no_cache;
|
||||
sdir = qsdfi.path();
|
||||
if (qdfi.isRoot()) {
|
||||
cachefile.clear();
|
||||
break;
|
||||
}
|
||||
dir = qdfi.path();
|
||||
}
|
||||
QString sdir = inDir;
|
||||
forever {
|
||||
conffile = sdir + QLatin1String("/.qmake.conf");
|
||||
if (!m_vfs->exists(conffile, flags))
|
||||
conffile.clear();
|
||||
if (!conffile.isEmpty()) {
|
||||
if (sdir != m_buildRoot)
|
||||
m_sourceRoot = sdir;
|
||||
break;
|
||||
}
|
||||
QFileInfo qsdfi(sdir);
|
||||
if (qsdfi.isRoot()) {
|
||||
conffile.clear();
|
||||
break;
|
||||
}
|
||||
sdir = qsdfi.path();
|
||||
}
|
||||
} else {
|
||||
m_buildRoot = QFileInfo(cachefile).path();
|
||||
}
|
||||
m_conffile = QDir::cleanPath(conffile);
|
||||
m_cachefile = QDir::cleanPath(cachefile);
|
||||
if (!conffile.isEmpty())
|
||||
m_conffile = QDir::cleanPath(conffile);
|
||||
if (!cachefile.isEmpty())
|
||||
m_cachefile = QDir::cleanPath(cachefile);
|
||||
}
|
||||
no_cache:
|
||||
|
||||
@ -1711,7 +1724,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateFunction(
|
||||
|
||||
if (m_valuemapStack.size() >= 100) {
|
||||
evalError(fL1S("Ran into infinite recursion (depth > 100)."));
|
||||
vr = ReturnFalse;
|
||||
vr = ReturnError;
|
||||
} else {
|
||||
m_valuemapStack.push(ProValueMap());
|
||||
m_locationStack.push(m_current);
|
||||
|
1
src/3rdparty/VulkanMemoryAllocator.pri
vendored
Normal file
1
src/3rdparty/VulkanMemoryAllocator.pri
vendored
Normal file
@ -0,0 +1 @@
|
||||
INCLUDEPATH += $$PWD/VulkanMemoryAllocator
|
19
src/3rdparty/VulkanMemoryAllocator/LICENSE.txt
vendored
Normal file
19
src/3rdparty/VulkanMemoryAllocator/LICENSE.txt
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
Copyright (c) 2017-2018 Advanced Micro Devices, Inc. All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
402
src/3rdparty/VulkanMemoryAllocator/patches/0001-Avoid-compiler-warnings.patch
vendored
Normal file
402
src/3rdparty/VulkanMemoryAllocator/patches/0001-Avoid-compiler-warnings.patch
vendored
Normal file
@ -0,0 +1,402 @@
|
||||
diff --git a/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h b/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
||||
index a2f7a1b..fbe6f9e 100644
|
||||
--- a/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
||||
+++ b/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
||||
@@ -3661,7 +3661,7 @@ static void VmaWriteMagicValue(void* pData, VkDeviceSize offset)
|
||||
{
|
||||
uint32_t* pDst = (uint32_t*)((char*)pData + offset);
|
||||
const size_t numberCount = VMA_DEBUG_MARGIN / sizeof(uint32_t);
|
||||
- for(size_t i = 0; i < numberCount; ++i, ++pDst)
|
||||
+ for(size_t i = 0; i != numberCount; ++i, ++pDst)
|
||||
{
|
||||
*pDst = VMA_CORRUPTION_DETECTION_MAGIC_VALUE;
|
||||
}
|
||||
@@ -3671,7 +3671,7 @@ static bool VmaValidateMagicValue(const void* pData, VkDeviceSize offset)
|
||||
{
|
||||
const uint32_t* pSrc = (const uint32_t*)((const char*)pData + offset);
|
||||
const size_t numberCount = VMA_DEBUG_MARGIN / sizeof(uint32_t);
|
||||
- for(size_t i = 0; i < numberCount; ++i, ++pSrc)
|
||||
+ for(size_t i = 0; i != numberCount; ++i, ++pSrc)
|
||||
{
|
||||
if(*pSrc != VMA_CORRUPTION_DETECTION_MAGIC_VALUE)
|
||||
{
|
||||
@@ -3866,7 +3866,7 @@ public:
|
||||
template<typename U> VmaStlAllocator(const VmaStlAllocator<U>& src) : m_pCallbacks(src.m_pCallbacks) { }
|
||||
|
||||
T* allocate(size_t n) { return VmaAllocateArray<T>(m_pCallbacks, n); }
|
||||
- void deallocate(T* p, size_t n) { VmaFree(m_pCallbacks, p); }
|
||||
+ void deallocate(T* p, size_t /*n*/) { VmaFree(m_pCallbacks, p); }
|
||||
|
||||
template<typename U>
|
||||
bool operator==(const VmaStlAllocator<U>& rhs) const
|
||||
@@ -5214,7 +5214,7 @@ public:
|
||||
virtual void FreeAtOffset(VkDeviceSize offset) = 0;
|
||||
|
||||
// Tries to resize (grow or shrink) space for given allocation, in place.
|
||||
- virtual bool ResizeAllocation(const VmaAllocation alloc, VkDeviceSize newSize) { return false; }
|
||||
+ virtual bool ResizeAllocation(const VmaAllocation /*alloc*/, VkDeviceSize /*newSize*/) { return false; }
|
||||
|
||||
protected:
|
||||
const VkAllocationCallbacks* GetAllocationCallbacks() const { return m_pAllocationCallbacks; }
|
||||
@@ -5574,7 +5574,7 @@ public:
|
||||
|
||||
virtual uint32_t MakeAllocationsLost(uint32_t currentFrameIndex, uint32_t frameInUseCount);
|
||||
|
||||
- virtual VkResult CheckCorruption(const void* pBlockData) { return VK_ERROR_FEATURE_NOT_PRESENT; }
|
||||
+ virtual VkResult CheckCorruption(const void* /*pBlockData*/) { return VK_ERROR_FEATURE_NOT_PRESENT; }
|
||||
|
||||
virtual void Alloc(
|
||||
const VmaAllocationRequest& request,
|
||||
@@ -6133,7 +6133,7 @@ public:
|
||||
bool overlappingMoveSupported);
|
||||
virtual ~VmaDefragmentationAlgorithm_Fast();
|
||||
|
||||
- virtual void AddAllocation(VmaAllocation hAlloc, VkBool32* pChanged) { ++m_AllocationCount; }
|
||||
+ virtual void AddAllocation(VmaAllocation /*hAlloc*/, VkBool32* /*pChanged*/) { ++m_AllocationCount; }
|
||||
virtual void AddAll() { m_AllAllocations = true; }
|
||||
|
||||
virtual VkResult Defragment(
|
||||
@@ -6318,7 +6318,7 @@ private:
|
||||
// Redundant, for convenience not to fetch from m_hCustomPool->m_BlockVector or m_hAllocator->m_pBlockVectors.
|
||||
VmaBlockVector* const m_pBlockVector;
|
||||
const uint32_t m_CurrFrameIndex;
|
||||
- const uint32_t m_AlgorithmFlags;
|
||||
+ /*const uint32_t m_AlgorithmFlags;*/
|
||||
// Owner of this object.
|
||||
VmaDefragmentationAlgorithm* m_pAlgorithm;
|
||||
|
||||
@@ -7073,6 +7073,7 @@ void VmaJsonWriter::BeginValue(bool isString)
|
||||
if(currItem.type == COLLECTION_TYPE_OBJECT &&
|
||||
currItem.valueCount % 2 == 0)
|
||||
{
|
||||
+ (void) isString;
|
||||
VMA_ASSERT(isString);
|
||||
}
|
||||
|
||||
@@ -7660,7 +7661,9 @@ bool VmaBlockMetadata_Generic::Validate() const
|
||||
}
|
||||
|
||||
// Margin required between allocations - every free space must be at least that large.
|
||||
+#if VMA_DEBUG_MARGIN
|
||||
VMA_VALIDATE(subAlloc.size >= VMA_DEBUG_MARGIN);
|
||||
+#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -7806,6 +7809,7 @@ bool VmaBlockMetadata_Generic::CreateAllocationRequest(
|
||||
{
|
||||
VMA_ASSERT(allocSize > 0);
|
||||
VMA_ASSERT(!upperAddress);
|
||||
+ (void) upperAddress;
|
||||
VMA_ASSERT(allocType != VMA_SUBALLOCATION_TYPE_FREE);
|
||||
VMA_ASSERT(pAllocationRequest != VMA_NULL);
|
||||
VMA_HEAVY_ASSERT(Validate());
|
||||
@@ -8033,6 +8037,7 @@ void VmaBlockMetadata_Generic::Alloc(
|
||||
VmaAllocation hAllocation)
|
||||
{
|
||||
VMA_ASSERT(!upperAddress);
|
||||
+ (void) upperAddress;
|
||||
VMA_ASSERT(request.item != m_Suballocations.end());
|
||||
VmaSuballocation& suballoc = *request.item;
|
||||
// Given suballocation is a free block.
|
||||
@@ -9609,7 +9614,7 @@ bool VmaBlockMetadata_Linear::CreateAllocationRequest(
|
||||
bool upperAddress,
|
||||
VmaSuballocationType allocType,
|
||||
bool canMakeOtherLost,
|
||||
- uint32_t strategy,
|
||||
+ uint32_t /*strategy*/,
|
||||
VmaAllocationRequest* pAllocationRequest)
|
||||
{
|
||||
VMA_ASSERT(allocSize > 0);
|
||||
@@ -9651,10 +9656,12 @@ bool VmaBlockMetadata_Linear::CreateAllocationRequest(
|
||||
// Apply VMA_DEBUG_MARGIN at the end.
|
||||
if(VMA_DEBUG_MARGIN > 0)
|
||||
{
|
||||
+#if VMA_DEBUG_MARGIN
|
||||
if(resultOffset < VMA_DEBUG_MARGIN)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
+#endif
|
||||
resultOffset -= VMA_DEBUG_MARGIN;
|
||||
}
|
||||
|
||||
@@ -10542,18 +10549,19 @@ void VmaBlockMetadata_Buddy::PrintDetailedMap(class VmaJsonWriter& json) const
|
||||
#endif // #if VMA_STATS_STRING_ENABLED
|
||||
|
||||
bool VmaBlockMetadata_Buddy::CreateAllocationRequest(
|
||||
- uint32_t currentFrameIndex,
|
||||
- uint32_t frameInUseCount,
|
||||
+ uint32_t /*currentFrameIndex*/,
|
||||
+ uint32_t /*frameInUseCount*/,
|
||||
VkDeviceSize bufferImageGranularity,
|
||||
VkDeviceSize allocSize,
|
||||
VkDeviceSize allocAlignment,
|
||||
bool upperAddress,
|
||||
VmaSuballocationType allocType,
|
||||
- bool canMakeOtherLost,
|
||||
- uint32_t strategy,
|
||||
+ bool /*canMakeOtherLost*/,
|
||||
+ uint32_t /*strategy*/,
|
||||
VmaAllocationRequest* pAllocationRequest)
|
||||
{
|
||||
VMA_ASSERT(!upperAddress && "VMA_ALLOCATION_CREATE_UPPER_ADDRESS_BIT can be used only with linear algorithm.");
|
||||
+ (void) upperAddress;
|
||||
|
||||
// Simple way to respect bufferImageGranularity. May be optimized some day.
|
||||
// Whenever it might be an OPTIMAL image...
|
||||
@@ -10593,8 +10601,8 @@ bool VmaBlockMetadata_Buddy::CreateAllocationRequest(
|
||||
}
|
||||
|
||||
bool VmaBlockMetadata_Buddy::MakeRequestedAllocationsLost(
|
||||
- uint32_t currentFrameIndex,
|
||||
- uint32_t frameInUseCount,
|
||||
+ uint32_t /*currentFrameIndex*/,
|
||||
+ uint32_t /*frameInUseCount*/,
|
||||
VmaAllocationRequest* pAllocationRequest)
|
||||
{
|
||||
/*
|
||||
@@ -10604,7 +10612,7 @@ bool VmaBlockMetadata_Buddy::MakeRequestedAllocationsLost(
|
||||
return pAllocationRequest->itemsToMakeLostCount == 0;
|
||||
}
|
||||
|
||||
-uint32_t VmaBlockMetadata_Buddy::MakeAllocationsLost(uint32_t currentFrameIndex, uint32_t frameInUseCount)
|
||||
+uint32_t VmaBlockMetadata_Buddy::MakeAllocationsLost(uint32_t /*currentFrameIndex*/, uint32_t /*frameInUseCount*/)
|
||||
{
|
||||
/*
|
||||
Lost allocations are not supported in buddy allocator at the moment.
|
||||
@@ -10615,9 +10623,9 @@ uint32_t VmaBlockMetadata_Buddy::MakeAllocationsLost(uint32_t currentFrameIndex,
|
||||
|
||||
void VmaBlockMetadata_Buddy::Alloc(
|
||||
const VmaAllocationRequest& request,
|
||||
- VmaSuballocationType type,
|
||||
+ VmaSuballocationType /*type*/,
|
||||
VkDeviceSize allocSize,
|
||||
- bool upperAddress,
|
||||
+ bool /*upperAddress*/,
|
||||
VmaAllocation hAllocation)
|
||||
{
|
||||
const uint32_t targetLevel = AllocSizeToLevel(allocSize);
|
||||
@@ -10941,7 +10949,7 @@ void VmaBlockMetadata_Buddy::PrintDetailedMapNode(class VmaJsonWriter& json, con
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// class VmaDeviceMemoryBlock
|
||||
|
||||
-VmaDeviceMemoryBlock::VmaDeviceMemoryBlock(VmaAllocator hAllocator) :
|
||||
+VmaDeviceMemoryBlock::VmaDeviceMemoryBlock(VmaAllocator /*hAllocator*/) :
|
||||
m_pMetadata(VMA_NULL),
|
||||
m_MemoryTypeIndex(UINT32_MAX),
|
||||
m_Id(0),
|
||||
@@ -11691,6 +11699,7 @@ VkResult VmaBlockVector::AllocatePage(
|
||||
if(IsCorruptionDetectionEnabled())
|
||||
{
|
||||
VkResult res = pBestRequestBlock->WriteMagicValueAroundAllocation(m_hAllocator, bestRequest.offset, size);
|
||||
+ (void) res;
|
||||
VMA_ASSERT(res == VK_SUCCESS && "Couldn't map block memory to write magic value.");
|
||||
}
|
||||
return VK_SUCCESS;
|
||||
@@ -11729,6 +11738,7 @@ void VmaBlockVector::Free(
|
||||
if(IsCorruptionDetectionEnabled())
|
||||
{
|
||||
VkResult res = pBlock->ValidateMagicValueAroundAllocation(m_hAllocator, hAllocation->GetOffset(), hAllocation->GetSize());
|
||||
+ (void) res;
|
||||
VMA_ASSERT(res == VK_SUCCESS && "Couldn't map block memory to validate magic value.");
|
||||
}
|
||||
|
||||
@@ -11894,6 +11904,7 @@ VkResult VmaBlockVector::AllocateFromBlock(
|
||||
if(IsCorruptionDetectionEnabled())
|
||||
{
|
||||
VkResult res = pBlock->WriteMagicValueAroundAllocation(m_hAllocator, currRequest.offset, size);
|
||||
+ (void) res;
|
||||
VMA_ASSERT(res == VK_SUCCESS && "Couldn't map block memory to write magic value.");
|
||||
}
|
||||
return VK_SUCCESS;
|
||||
@@ -11903,7 +11914,8 @@ VkResult VmaBlockVector::AllocateFromBlock(
|
||||
|
||||
VkResult VmaBlockVector::CreateBlock(VkDeviceSize blockSize, size_t* pNewBlockIndex)
|
||||
{
|
||||
- VkMemoryAllocateInfo allocInfo = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO };
|
||||
+ VkMemoryAllocateInfo allocInfo = {};
|
||||
+ allocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
|
||||
allocInfo.memoryTypeIndex = m_MemoryTypeIndex;
|
||||
allocInfo.allocationSize = blockSize;
|
||||
VkDeviceMemory mem = VK_NULL_HANDLE;
|
||||
@@ -11991,7 +12003,8 @@ void VmaBlockVector::ApplyDefragmentationMovesCpu(
|
||||
if(pDefragCtx->res == VK_SUCCESS)
|
||||
{
|
||||
const VkDeviceSize nonCoherentAtomSize = m_hAllocator->m_PhysicalDeviceProperties.limits.nonCoherentAtomSize;
|
||||
- VkMappedMemoryRange memRange = { VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE };
|
||||
+ VkMappedMemoryRange memRange = {};
|
||||
+ memRange.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
|
||||
|
||||
for(size_t moveIndex = 0; moveIndex < moveCount; ++moveIndex)
|
||||
{
|
||||
@@ -12076,7 +12089,8 @@ void VmaBlockVector::ApplyDefragmentationMovesGpu(
|
||||
|
||||
// Go over all blocks. Create and bind buffer for whole block if necessary.
|
||||
{
|
||||
- VkBufferCreateInfo bufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
|
||||
+ VkBufferCreateInfo bufCreateInfo = {};
|
||||
+ bufCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
||||
bufCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT |
|
||||
VK_BUFFER_USAGE_TRANSFER_DST_BIT;
|
||||
|
||||
@@ -12101,8 +12115,9 @@ void VmaBlockVector::ApplyDefragmentationMovesGpu(
|
||||
// Go over all moves. Post data transfer commands to command buffer.
|
||||
if(pDefragCtx->res == VK_SUCCESS)
|
||||
{
|
||||
- const VkDeviceSize nonCoherentAtomSize = m_hAllocator->m_PhysicalDeviceProperties.limits.nonCoherentAtomSize;
|
||||
- VkMappedMemoryRange memRange = { VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE };
|
||||
+ /*const VkDeviceSize nonCoherentAtomSize = m_hAllocator->m_PhysicalDeviceProperties.limits.nonCoherentAtomSize;
|
||||
+ VkMappedMemoryRange memRange = {};
|
||||
+ memRange.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;*/
|
||||
|
||||
for(size_t moveIndex = 0; moveIndex < moveCount; ++moveIndex)
|
||||
{
|
||||
@@ -12435,10 +12450,10 @@ VmaDefragmentationAlgorithm_Generic::VmaDefragmentationAlgorithm_Generic(
|
||||
VmaAllocator hAllocator,
|
||||
VmaBlockVector* pBlockVector,
|
||||
uint32_t currentFrameIndex,
|
||||
- bool overlappingMoveSupported) :
|
||||
+ bool /*overlappingMoveSupported*/) :
|
||||
VmaDefragmentationAlgorithm(hAllocator, pBlockVector, currentFrameIndex),
|
||||
- m_AllAllocations(false),
|
||||
m_AllocationCount(0),
|
||||
+ m_AllAllocations(false),
|
||||
m_BytesMoved(0),
|
||||
m_AllocationsMoved(0),
|
||||
m_Blocks(VmaStlAllocator<BlockInfo*>(hAllocator->GetAllocationCallbacks()))
|
||||
@@ -12813,7 +12828,7 @@ VkResult VmaDefragmentationAlgorithm_Fast::Defragment(
|
||||
size_t freeSpaceOrigBlockIndex = m_BlockInfos[freeSpaceInfoIndex].origBlockIndex;
|
||||
VmaDeviceMemoryBlock* pFreeSpaceBlock = m_pBlockVector->GetBlock(freeSpaceOrigBlockIndex);
|
||||
VmaBlockMetadata_Generic* pFreeSpaceMetadata = (VmaBlockMetadata_Generic*)pFreeSpaceBlock->m_pMetadata;
|
||||
- VkDeviceSize freeSpaceBlockSize = pFreeSpaceMetadata->GetSize();
|
||||
+ /*VkDeviceSize freeSpaceBlockSize = pFreeSpaceMetadata->GetSize();*/
|
||||
|
||||
// Same block
|
||||
if(freeSpaceInfoIndex == srcBlockInfoIndex)
|
||||
@@ -13098,7 +13113,7 @@ VmaBlockVectorDefragmentationContext::VmaBlockVectorDefragmentationContext(
|
||||
VmaPool hCustomPool,
|
||||
VmaBlockVector* pBlockVector,
|
||||
uint32_t currFrameIndex,
|
||||
- uint32_t algorithmFlags) :
|
||||
+ uint32_t /*algorithmFlags*/) :
|
||||
res(VK_SUCCESS),
|
||||
mutexLocked(false),
|
||||
blockContexts(VmaStlAllocator<VmaBlockDefragmentationContext>(hAllocator->GetAllocationCallbacks())),
|
||||
@@ -13106,7 +13121,7 @@ VmaBlockVectorDefragmentationContext::VmaBlockVectorDefragmentationContext(
|
||||
m_hCustomPool(hCustomPool),
|
||||
m_pBlockVector(pBlockVector),
|
||||
m_CurrFrameIndex(currFrameIndex),
|
||||
- m_AlgorithmFlags(algorithmFlags),
|
||||
+ /*m_AlgorithmFlags(algorithmFlags),*/
|
||||
m_pAlgorithm(VMA_NULL),
|
||||
m_Allocations(VmaStlAllocator<AllocInfo>(hAllocator->GetAllocationCallbacks())),
|
||||
m_AllAllocations(false)
|
||||
@@ -14311,19 +14326,21 @@ VkResult VmaAllocator_T::AllocateDedicatedMemory(
|
||||
bool map,
|
||||
bool isUserDataString,
|
||||
void* pUserData,
|
||||
- VkBuffer dedicatedBuffer,
|
||||
- VkImage dedicatedImage,
|
||||
+ VkBuffer /*dedicatedBuffer*/,
|
||||
+ VkImage /*dedicatedImage*/,
|
||||
size_t allocationCount,
|
||||
VmaAllocation* pAllocations)
|
||||
{
|
||||
VMA_ASSERT(allocationCount > 0 && pAllocations);
|
||||
|
||||
- VkMemoryAllocateInfo allocInfo = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO };
|
||||
+ VkMemoryAllocateInfo allocInfo = {};
|
||||
+ allocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
|
||||
allocInfo.memoryTypeIndex = memTypeIndex;
|
||||
allocInfo.allocationSize = size;
|
||||
|
||||
#if VMA_DEDICATED_ALLOCATION
|
||||
- VkMemoryDedicatedAllocateInfoKHR dedicatedAllocInfo = { VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR };
|
||||
+ VkMemoryDedicatedAllocateInfoKHR dedicatedAllocInfo = {};
|
||||
+ dedicatedAllocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR;
|
||||
if(m_UseKhrDedicatedAllocation)
|
||||
{
|
||||
if(dedicatedBuffer != VK_NULL_HANDLE)
|
||||
@@ -14341,7 +14358,7 @@ VkResult VmaAllocator_T::AllocateDedicatedMemory(
|
||||
#endif // #if VMA_DEDICATED_ALLOCATION
|
||||
|
||||
size_t allocIndex;
|
||||
- VkResult res;
|
||||
+ VkResult res = VK_SUCCESS;
|
||||
for(allocIndex = 0; allocIndex < allocationCount; ++allocIndex)
|
||||
{
|
||||
res = AllocateDedicatedMemoryPage(
|
||||
@@ -14460,12 +14477,15 @@ void VmaAllocator_T::GetBufferMemoryRequirements(
|
||||
#if VMA_DEDICATED_ALLOCATION
|
||||
if(m_UseKhrDedicatedAllocation)
|
||||
{
|
||||
- VkBufferMemoryRequirementsInfo2KHR memReqInfo = { VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR };
|
||||
+ VkBufferMemoryRequirementsInfo2KHR memReqInfo = {};
|
||||
+ memReqInfo.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR;
|
||||
memReqInfo.buffer = hBuffer;
|
||||
|
||||
- VkMemoryDedicatedRequirementsKHR memDedicatedReq = { VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR };
|
||||
+ VkMemoryDedicatedRequirementsKHR memDedicatedReq = {};
|
||||
+ memDedicatedReq.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR;
|
||||
|
||||
- VkMemoryRequirements2KHR memReq2 = { VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR };
|
||||
+ VkMemoryRequirements2KHR memReq2 = {};
|
||||
+ memReq2.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR;
|
||||
memReq2.pNext = &memDedicatedReq;
|
||||
|
||||
(*m_VulkanFunctions.vkGetBufferMemoryRequirements2KHR)(m_hDevice, &memReqInfo, &memReq2);
|
||||
@@ -14492,12 +14512,15 @@ void VmaAllocator_T::GetImageMemoryRequirements(
|
||||
#if VMA_DEDICATED_ALLOCATION
|
||||
if(m_UseKhrDedicatedAllocation)
|
||||
{
|
||||
- VkImageMemoryRequirementsInfo2KHR memReqInfo = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR };
|
||||
+ VkImageMemoryRequirementsInfo2KHR memReqInfo = {};
|
||||
+ memReqInfo.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR;
|
||||
memReqInfo.image = hImage;
|
||||
|
||||
- VkMemoryDedicatedRequirementsKHR memDedicatedReq = { VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR };
|
||||
+ VkMemoryDedicatedRequirementsKHR memDedicatedReq = {};
|
||||
+ memDedicatedReq.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR;
|
||||
|
||||
- VkMemoryRequirements2KHR memReq2 = { VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR };
|
||||
+ VkMemoryRequirements2KHR memReq2 = {};
|
||||
+ memReq2.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR;
|
||||
memReq2.pNext = &memDedicatedReq;
|
||||
|
||||
(*m_VulkanFunctions.vkGetImageMemoryRequirements2KHR)(m_hDevice, &memReqInfo, &memReq2);
|
||||
@@ -14734,7 +14757,7 @@ VkResult VmaAllocator_T::ResizeAllocation(
|
||||
}
|
||||
else
|
||||
{
|
||||
- return VK_ERROR_OUT_OF_POOL_MEMORY;
|
||||
+ return VkResult(-1000069000); // VK_ERROR_OUT_OF_POOL_MEMORY
|
||||
}
|
||||
default:
|
||||
VMA_ASSERT(0);
|
||||
@@ -15000,6 +15023,7 @@ void VmaAllocator_T::DestroyPool(VmaPool pool)
|
||||
{
|
||||
VmaMutexLockWrite lock(m_PoolsMutex, m_UseMutex);
|
||||
bool success = VmaVectorRemoveSorted<VmaPointerLess>(m_Pools, pool);
|
||||
+ (void) success;
|
||||
VMA_ASSERT(success && "Pool not found in Allocator.");
|
||||
}
|
||||
|
||||
@@ -15248,7 +15272,8 @@ void VmaAllocator_T::FlushOrInvalidateAllocation(
|
||||
|
||||
const VkDeviceSize nonCoherentAtomSize = m_PhysicalDeviceProperties.limits.nonCoherentAtomSize;
|
||||
|
||||
- VkMappedMemoryRange memRange = { VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE };
|
||||
+ VkMappedMemoryRange memRange = {};
|
||||
+ memRange.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
|
||||
memRange.memory = hAllocation->GetMemory();
|
||||
|
||||
switch(hAllocation->GetType())
|
||||
@@ -15321,6 +15346,7 @@ void VmaAllocator_T::FreeDedicatedMemory(VmaAllocation allocation)
|
||||
AllocationVectorType* const pDedicatedAllocations = m_pDedicatedAllocations[memTypeIndex];
|
||||
VMA_ASSERT(pDedicatedAllocations);
|
||||
bool success = VmaVectorRemoveSorted<VmaPointerLess>(*pDedicatedAllocations, allocation);
|
||||
+ (void) success;
|
||||
VMA_ASSERT(success);
|
||||
}
|
||||
|
14
src/3rdparty/VulkanMemoryAllocator/patches/0002-Fix-gcc8-warning.patch
vendored
Normal file
14
src/3rdparty/VulkanMemoryAllocator/patches/0002-Fix-gcc8-warning.patch
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
diff --git a/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h b/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
||||
index fbe6f9e3e8..f043bdc289 100644
|
||||
--- a/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
||||
+++ b/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
||||
@@ -12074,7 +12074,8 @@ void VmaBlockVector::ApplyDefragmentationMovesGpu(
|
||||
const size_t blockCount = m_Blocks.size();
|
||||
|
||||
pDefragCtx->blockContexts.resize(blockCount);
|
||||
- memset(pDefragCtx->blockContexts.data(), 0, blockCount * sizeof(VmaBlockDefragmentationContext));
|
||||
+ for (size_t i = 0; i < blockCount; ++i)
|
||||
+ pDefragCtx->blockContexts[i] = VmaBlockDefragmentationContext();
|
||||
|
||||
// Go over all moves. Mark blocks that are used with BLOCK_FLAG_USED.
|
||||
const size_t moveCount = moves.size();
|
13
src/3rdparty/VulkanMemoryAllocator/patches/0003-Disable-srwlock-for-mingw.patch
vendored
Normal file
13
src/3rdparty/VulkanMemoryAllocator/patches/0003-Disable-srwlock-for-mingw.patch
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h b/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
||||
index f043bdc289..2355de091f 100644
|
||||
--- a/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
||||
+++ b/src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
|
||||
@@ -3298,7 +3298,7 @@ void *aligned_alloc(size_t alignment, size_t size)
|
||||
std::shared_mutex m_Mutex;
|
||||
};
|
||||
#define VMA_RW_MUTEX VmaRWMutex
|
||||
- #elif defined(_WIN32)
|
||||
+ #elif defined(_WIN32) && !defined(__MINGW32__)
|
||||
// Use SRWLOCK from WinAPI.
|
||||
class VmaRWMutex
|
||||
{
|
16
src/3rdparty/VulkanMemoryAllocator/qt_attribution.json
vendored
Normal file
16
src/3rdparty/VulkanMemoryAllocator/qt_attribution.json
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
[
|
||||
{
|
||||
"Id": "VulkanMemoryAllocator",
|
||||
"Name": "Vulkan Memory Allocator",
|
||||
"QDocModule": "qtrhi",
|
||||
"Description": "Vulkan Memory Allocator",
|
||||
"QtUsage": "Memory management for the Vulkan backend of QRhi.",
|
||||
|
||||
"Homepage": "https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator",
|
||||
"Version": "2.2.0",
|
||||
"License": "MIT License",
|
||||
"LicenseId": "MIT",
|
||||
"LicenseFile": "LICENSE.txt",
|
||||
"Copyright": "Copyright (c) 2017-2018 Advanced Micro Devices, Inc. All rights reserved."
|
||||
}
|
||||
]
|
16790
src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
vendored
Normal file
16790
src/3rdparty/VulkanMemoryAllocator/vk_mem_alloc.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
142
src/3rdparty/angle/src/libEGL/libEGL_mingw32.def
vendored
142
src/3rdparty/angle/src/libEGL/libEGL_mingw32.def
vendored
@ -1,77 +1,77 @@
|
||||
LIBRARY libEGL
|
||||
EXPORTS
|
||||
eglBindAPI @14
|
||||
eglBindTexImage @20
|
||||
eglChooseConfig @7
|
||||
eglCopyBuffers @33
|
||||
eglCreateContext @23
|
||||
eglCreatePbufferFromClientBuffer @18
|
||||
eglCreatePbufferSurface @10
|
||||
eglCreatePixmapSurface @11
|
||||
eglCreateWindowSurface @9
|
||||
eglDestroyContext @24
|
||||
eglDestroySurface @12
|
||||
eglGetConfigAttrib @8
|
||||
eglGetConfigs @6
|
||||
eglGetCurrentContext @26
|
||||
eglGetCurrentDisplay @28
|
||||
eglGetCurrentSurface @27
|
||||
eglGetDisplay @2
|
||||
eglGetError @1
|
||||
eglGetProcAddress @34
|
||||
eglInitialize @3
|
||||
eglMakeCurrent @25
|
||||
eglQueryAPI @15
|
||||
eglQueryContext @29
|
||||
eglQueryString @5
|
||||
eglQuerySurface @13
|
||||
eglReleaseTexImage @21
|
||||
eglReleaseThread @17
|
||||
eglSurfaceAttrib @19
|
||||
eglSwapBuffers @32
|
||||
eglSwapInterval @22
|
||||
eglTerminate @4
|
||||
eglWaitClient @16
|
||||
eglWaitGL @30
|
||||
eglWaitNative @31
|
||||
eglBindAPI@4 @14
|
||||
eglBindTexImage@12 @20
|
||||
eglChooseConfig@20 @7
|
||||
eglCopyBuffers@12 @33
|
||||
eglCreateContext@16 @23
|
||||
eglCreatePbufferFromClientBuffer@20 @18
|
||||
eglCreatePbufferSurface@12 @10
|
||||
eglCreatePixmapSurface@16 @11
|
||||
eglCreateWindowSurface@16 @9
|
||||
eglDestroyContext@8 @24
|
||||
eglDestroySurface@8 @12
|
||||
eglGetConfigAttrib@16 @8
|
||||
eglGetConfigs@16 @6
|
||||
eglGetCurrentContext@0 @26
|
||||
eglGetCurrentDisplay@0 @28
|
||||
eglGetCurrentSurface@4 @27
|
||||
eglGetDisplay@4 @2
|
||||
eglGetError@0 @1
|
||||
eglGetProcAddress@4 @34
|
||||
eglInitialize@12 @3
|
||||
eglMakeCurrent@16 @25
|
||||
eglQueryAPI@0 @15
|
||||
eglQueryContext@16 @29
|
||||
eglQueryString@8 @5
|
||||
eglQuerySurface@16 @13
|
||||
eglReleaseTexImage@12 @21
|
||||
eglReleaseThread@0 @17
|
||||
eglSurfaceAttrib@16 @19
|
||||
eglSwapBuffers@8 @32
|
||||
eglSwapInterval@8 @22
|
||||
eglTerminate@4 @4
|
||||
eglWaitClient@0 @16
|
||||
eglWaitGL@0 @30
|
||||
eglWaitNative@4 @31
|
||||
|
||||
; Extensions
|
||||
eglGetPlatformDisplayEXT @35
|
||||
eglQuerySurfacePointerANGLE @36
|
||||
eglPostSubBufferNV @37
|
||||
eglQueryDisplayAttribEXT @48
|
||||
eglQueryDeviceAttribEXT @49
|
||||
eglQueryDeviceStringEXT @50
|
||||
eglCreateImageKHR @51
|
||||
eglDestroyImageKHR @52
|
||||
eglCreateDeviceANGLE @53
|
||||
eglReleaseDeviceANGLE @54
|
||||
eglCreateStreamKHR @55
|
||||
eglDestroyStreamKHR @56
|
||||
eglStreamAttribKHR @57
|
||||
eglQueryStreamKHR @58
|
||||
eglQueryStreamu64KHR @59
|
||||
eglStreamConsumerGLTextureExternalKHR @60
|
||||
eglStreamConsumerAcquireKHR @61
|
||||
eglStreamConsumerReleaseKHR @62
|
||||
eglStreamConsumerGLTextureExternalAttribsNV @63
|
||||
eglCreateStreamProducerD3DTextureNV12ANGLE @64
|
||||
eglStreamPostD3DTextureNV12ANGLE @65
|
||||
eglGetSyncValuesCHROMIUM @66
|
||||
eglSwapBuffersWithDamageEXT @67
|
||||
eglProgramCacheGetAttribANGLE @68
|
||||
eglProgramCachePopulateANGLE @69
|
||||
eglProgramCacheQueryANGLE @70
|
||||
eglProgramCacheResizeANGLE @71
|
||||
eglGetPlatformDisplayEXT@12 @35
|
||||
eglQuerySurfacePointerANGLE@16 @36
|
||||
eglPostSubBufferNV@24 @37
|
||||
eglQueryDisplayAttribEXT@12 @48
|
||||
eglQueryDeviceAttribEXT@12 @49
|
||||
eglQueryDeviceStringEXT@8 @50
|
||||
eglCreateImageKHR@20 @51
|
||||
eglDestroyImageKHR@8 @52
|
||||
eglCreateDeviceANGLE@12 @53
|
||||
eglReleaseDeviceANGLE@4 @54
|
||||
eglCreateStreamKHR@8 @55
|
||||
eglDestroyStreamKHR@8 @56
|
||||
eglStreamAttribKHR@16 @57
|
||||
eglQueryStreamKHR@16 @58
|
||||
eglQueryStreamu64KHR@16 @59
|
||||
eglStreamConsumerGLTextureExternalKHR@8 @60
|
||||
eglStreamConsumerAcquireKHR@8 @61
|
||||
eglStreamConsumerReleaseKHR@8 @62
|
||||
eglStreamConsumerGLTextureExternalAttribsNV@12 @63
|
||||
eglCreateStreamProducerD3DTextureNV12ANGLE@12 @64
|
||||
eglStreamPostD3DTextureNV12ANGLE@16 @65
|
||||
eglGetSyncValuesCHROMIUM@20 @66
|
||||
eglSwapBuffersWithDamageEXT@16 @67
|
||||
eglProgramCacheGetAttribANGLE@8 @68
|
||||
eglProgramCachePopulateANGLE@20 @69
|
||||
eglProgramCacheQueryANGLE@24 @70
|
||||
eglProgramCacheResizeANGLE@12 @71
|
||||
|
||||
; 1.5 entry points
|
||||
eglCreateSync @38
|
||||
eglDestroySync @39
|
||||
eglClientWaitSync @40
|
||||
eglGetSyncAttrib @41
|
||||
eglCreateImage @42
|
||||
eglDestroyImage @43
|
||||
eglGetPlatformDisplay @44
|
||||
eglCreatePlatformWindowSurface @45
|
||||
eglCreatePlatformPixmapSurface @46
|
||||
eglWaitSync @47
|
||||
eglCreateSync@12 @38
|
||||
eglDestroySync@8 @39
|
||||
eglClientWaitSync@20 @40
|
||||
eglGetSyncAttrib@16 @41
|
||||
eglCreateImage@20 @42
|
||||
eglDestroyImage@8 @43
|
||||
eglGetPlatformDisplay@12 @44
|
||||
eglCreatePlatformWindowSurface@16 @45
|
||||
eglCreatePlatformPixmapSurface@16 @46
|
||||
eglWaitSync@12 @47
|
||||
|
142
src/3rdparty/angle/src/libEGL/libEGLd_mingw32.def
vendored
142
src/3rdparty/angle/src/libEGL/libEGLd_mingw32.def
vendored
@ -1,77 +1,77 @@
|
||||
LIBRARY libEGL
|
||||
EXPORTS
|
||||
eglBindAPI @14
|
||||
eglBindTexImage @20
|
||||
eglChooseConfig @7
|
||||
eglCopyBuffers @33
|
||||
eglCreateContext @23
|
||||
eglCreatePbufferFromClientBuffer @18
|
||||
eglCreatePbufferSurface @10
|
||||
eglCreatePixmapSurface @11
|
||||
eglCreateWindowSurface @9
|
||||
eglDestroyContext @24
|
||||
eglDestroySurface @12
|
||||
eglGetConfigAttrib @8
|
||||
eglGetConfigs @6
|
||||
eglGetCurrentContext @26
|
||||
eglGetCurrentDisplay @28
|
||||
eglGetCurrentSurface @27
|
||||
eglGetDisplay @2
|
||||
eglGetError @1
|
||||
eglGetProcAddress @34
|
||||
eglInitialize @3
|
||||
eglMakeCurrent @25
|
||||
eglQueryAPI @15
|
||||
eglQueryContext @29
|
||||
eglQueryString @5
|
||||
eglQuerySurface @13
|
||||
eglReleaseTexImage @21
|
||||
eglReleaseThread @17
|
||||
eglSurfaceAttrib @19
|
||||
eglSwapBuffers @32
|
||||
eglSwapInterval @22
|
||||
eglTerminate @4
|
||||
eglWaitClient @16
|
||||
eglWaitGL @30
|
||||
eglWaitNative @31
|
||||
eglBindAPI@4 @14
|
||||
eglBindTexImage@12 @20
|
||||
eglChooseConfig@20 @7
|
||||
eglCopyBuffers@12 @33
|
||||
eglCreateContext@16 @23
|
||||
eglCreatePbufferFromClientBuffer@20 @18
|
||||
eglCreatePbufferSurface@12 @10
|
||||
eglCreatePixmapSurface@16 @11
|
||||
eglCreateWindowSurface@16 @9
|
||||
eglDestroyContext@8 @24
|
||||
eglDestroySurface@8 @12
|
||||
eglGetConfigAttrib@16 @8
|
||||
eglGetConfigs@16 @6
|
||||
eglGetCurrentContext@0 @26
|
||||
eglGetCurrentDisplay@0 @28
|
||||
eglGetCurrentSurface@4 @27
|
||||
eglGetDisplay@4 @2
|
||||
eglGetError@0 @1
|
||||
eglGetProcAddress@4 @34
|
||||
eglInitialize@12 @3
|
||||
eglMakeCurrent@16 @25
|
||||
eglQueryAPI@0 @15
|
||||
eglQueryContext@16 @29
|
||||
eglQueryString@8 @5
|
||||
eglQuerySurface@16 @13
|
||||
eglReleaseTexImage@12 @21
|
||||
eglReleaseThread@0 @17
|
||||
eglSurfaceAttrib@16 @19
|
||||
eglSwapBuffers@8 @32
|
||||
eglSwapInterval@8 @22
|
||||
eglTerminate@4 @4
|
||||
eglWaitClient@0 @16
|
||||
eglWaitGL@0 @30
|
||||
eglWaitNative@4 @31
|
||||
|
||||
; Extensions
|
||||
eglGetPlatformDisplayEXT @35
|
||||
eglQuerySurfacePointerANGLE @36
|
||||
eglPostSubBufferNV @37
|
||||
eglQueryDisplayAttribEXT @48
|
||||
eglQueryDeviceAttribEXT @49
|
||||
eglQueryDeviceStringEXT @50
|
||||
eglCreateImageKHR @51
|
||||
eglDestroyImageKHR @52
|
||||
eglCreateDeviceANGLE @53
|
||||
eglReleaseDeviceANGLE @54
|
||||
eglCreateStreamKHR @55
|
||||
eglDestroyStreamKHR @56
|
||||
eglStreamAttribKHR @57
|
||||
eglQueryStreamKHR @58
|
||||
eglQueryStreamu64KHR @59
|
||||
eglStreamConsumerGLTextureExternalKHR @60
|
||||
eglStreamConsumerAcquireKHR @61
|
||||
eglStreamConsumerReleaseKHR @62
|
||||
eglStreamConsumerGLTextureExternalAttribsNV @63
|
||||
eglCreateStreamProducerD3DTextureNV12ANGLE @64
|
||||
eglStreamPostD3DTextureNV12ANGLE @65
|
||||
eglGetSyncValuesCHROMIUM @66
|
||||
eglSwapBuffersWithDamageEXT @67
|
||||
eglProgramCacheGetAttribANGLE @68
|
||||
eglProgramCachePopulateANGLE @69
|
||||
eglProgramCacheQueryANGLE @70
|
||||
eglProgramCacheResizeANGLE @71
|
||||
eglGetPlatformDisplayEXT@12 @35
|
||||
eglQuerySurfacePointerANGLE@16 @36
|
||||
eglPostSubBufferNV@24 @37
|
||||
eglQueryDisplayAttribEXT@12 @48
|
||||
eglQueryDeviceAttribEXT@12 @49
|
||||
eglQueryDeviceStringEXT@8 @50
|
||||
eglCreateImageKHR@20 @51
|
||||
eglDestroyImageKHR@8 @52
|
||||
eglCreateDeviceANGLE@12 @53
|
||||
eglReleaseDeviceANGLE@4 @54
|
||||
eglCreateStreamKHR@8 @55
|
||||
eglDestroyStreamKHR@8 @56
|
||||
eglStreamAttribKHR@16 @57
|
||||
eglQueryStreamKHR@16 @58
|
||||
eglQueryStreamu64KHR@16 @59
|
||||
eglStreamConsumerGLTextureExternalKHR@8 @60
|
||||
eglStreamConsumerAcquireKHR@8 @61
|
||||
eglStreamConsumerReleaseKHR@8 @62
|
||||
eglStreamConsumerGLTextureExternalAttribsNV@12 @63
|
||||
eglCreateStreamProducerD3DTextureNV12ANGLE@12 @64
|
||||
eglStreamPostD3DTextureNV12ANGLE@16 @65
|
||||
eglGetSyncValuesCHROMIUM@20 @66
|
||||
eglSwapBuffersWithDamageEXT@16 @67
|
||||
eglProgramCacheGetAttribANGLE@8 @68
|
||||
eglProgramCachePopulateANGLE@20 @69
|
||||
eglProgramCacheQueryANGLE@24 @70
|
||||
eglProgramCacheResizeANGLE@12 @71
|
||||
|
||||
; 1.5 entry points
|
||||
eglCreateSync @38
|
||||
eglDestroySync @39
|
||||
eglClientWaitSync @40
|
||||
eglGetSyncAttrib @41
|
||||
eglCreateImage @42
|
||||
eglDestroyImage @43
|
||||
eglGetPlatformDisplay @44
|
||||
eglCreatePlatformWindowSurface @45
|
||||
eglCreatePlatformPixmapSurface @46
|
||||
eglWaitSync @47
|
||||
eglCreateSync@12 @38
|
||||
eglDestroySync@8 @39
|
||||
eglClientWaitSync@20 @40
|
||||
eglGetSyncAttrib@16 @41
|
||||
eglCreateImage@20 @42
|
||||
eglDestroyImage@8 @43
|
||||
eglGetPlatformDisplay@12 @44
|
||||
eglCreatePlatformWindowSurface@16 @45
|
||||
eglCreatePlatformPixmapSurface@16 @46
|
||||
eglWaitSync@12 @47
|
||||
|
@ -1,412 +1,411 @@
|
||||
LIBRARY libGLESv2
|
||||
EXPORTS
|
||||
glActiveTexture @1
|
||||
glAttachShader @2
|
||||
glBindAttribLocation @3
|
||||
glBindBuffer @4
|
||||
glBindFramebuffer @5
|
||||
glBindRenderbuffer @6
|
||||
glBindTexture @7
|
||||
glBlendColor @8
|
||||
glBlendEquation @9
|
||||
glBlendEquationSeparate @10
|
||||
glBlendFunc @11
|
||||
glBlendFuncSeparate @12
|
||||
glBufferData @13
|
||||
glBufferSubData @14
|
||||
glCheckFramebufferStatus @15
|
||||
glClear @16
|
||||
glClearColor @17
|
||||
glClearDepthf @18
|
||||
glClearStencil @19
|
||||
glColorMask @20
|
||||
glCompileShader @21
|
||||
glCompressedTexImage2D @22
|
||||
glCompressedTexSubImage2D @23
|
||||
glCopyTexImage2D @24
|
||||
glCopyTexSubImage2D @25
|
||||
glCreateProgram @26
|
||||
glCreateShader @27
|
||||
glCullFace @28
|
||||
glDeleteBuffers @29
|
||||
glDeleteFramebuffers @30
|
||||
glDeleteProgram @32
|
||||
glDeleteRenderbuffers @33
|
||||
glDeleteShader @34
|
||||
glDeleteTextures @31
|
||||
glDepthFunc @36
|
||||
glDepthMask @37
|
||||
glDepthRangef @38
|
||||
glDetachShader @35
|
||||
glDisable @39
|
||||
glDisableVertexAttribArray @40
|
||||
glDrawArrays @41
|
||||
glDrawElements @42
|
||||
glEnable @43
|
||||
glEnableVertexAttribArray @44
|
||||
glFinish @45
|
||||
glFlush @46
|
||||
glFramebufferRenderbuffer @47
|
||||
glFramebufferTexture2D @48
|
||||
glFrontFace @49
|
||||
glGenBuffers @50
|
||||
glGenFramebuffers @52
|
||||
glGenRenderbuffers @53
|
||||
glGenTextures @54
|
||||
glGenerateMipmap @51
|
||||
glGetActiveAttrib @55
|
||||
glGetActiveUniform @56
|
||||
glGetAttachedShaders @57
|
||||
glGetAttribLocation @58
|
||||
glGetBooleanv @59
|
||||
glGetBufferParameteriv @60
|
||||
glGetError @61
|
||||
glGetFloatv @62
|
||||
glGetFramebufferAttachmentParameteriv @63
|
||||
glGetIntegerv @64
|
||||
glGetProgramInfoLog @66
|
||||
glGetProgramiv @65
|
||||
glGetRenderbufferParameteriv @67
|
||||
glGetShaderInfoLog @69
|
||||
glGetShaderPrecisionFormat @70
|
||||
glGetShaderSource @71
|
||||
glGetShaderiv @68
|
||||
glGetString @72
|
||||
glGetTexParameterfv @73
|
||||
glGetTexParameteriv @74
|
||||
glGetUniformLocation @77
|
||||
glGetUniformfv @75
|
||||
glGetUniformiv @76
|
||||
glGetVertexAttribPointerv @80
|
||||
glGetVertexAttribfv @78
|
||||
glGetVertexAttribiv @79
|
||||
glHint @81
|
||||
glIsBuffer @82
|
||||
glIsEnabled @83
|
||||
glIsFramebuffer @84
|
||||
glIsProgram @85
|
||||
glIsRenderbuffer @86
|
||||
glIsShader @87
|
||||
glIsTexture @88
|
||||
glLineWidth @89
|
||||
glLinkProgram @90
|
||||
glPixelStorei @91
|
||||
glPolygonOffset @92
|
||||
glReadPixels @93
|
||||
glReleaseShaderCompiler @94
|
||||
glRenderbufferStorage @95
|
||||
glSampleCoverage @96
|
||||
glScissor @97
|
||||
glShaderBinary @98
|
||||
glShaderSource @99
|
||||
glStencilFunc @100
|
||||
glStencilFuncSeparate @101
|
||||
glStencilMask @102
|
||||
glStencilMaskSeparate @103
|
||||
glStencilOp @104
|
||||
glStencilOpSeparate @105
|
||||
glTexImage2D @106
|
||||
glTexParameterf @107
|
||||
glTexParameterfv @108
|
||||
glTexParameteri @109
|
||||
glTexParameteriv @110
|
||||
glTexSubImage2D @111
|
||||
glUniform1f @112
|
||||
glUniform1fv @113
|
||||
glUniform1i @114
|
||||
glUniform1iv @115
|
||||
glUniform2f @116
|
||||
glUniform2fv @117
|
||||
glUniform2i @118
|
||||
glUniform2iv @119
|
||||
glUniform3f @120
|
||||
glUniform3fv @121
|
||||
glUniform3i @122
|
||||
glUniform3iv @123
|
||||
glUniform4f @124
|
||||
glUniform4fv @125
|
||||
glUniform4i @126
|
||||
glUniform4iv @127
|
||||
glUniformMatrix2fv @128
|
||||
glUniformMatrix3fv @129
|
||||
glUniformMatrix4fv @130
|
||||
glUseProgram @131
|
||||
glValidateProgram @132
|
||||
glVertexAttrib1f @133
|
||||
glVertexAttrib1fv @134
|
||||
glVertexAttrib2f @135
|
||||
glVertexAttrib2fv @136
|
||||
glVertexAttrib3f @137
|
||||
glVertexAttrib3fv @138
|
||||
glVertexAttrib4f @139
|
||||
glVertexAttrib4fv @140
|
||||
glVertexAttribPointer @141
|
||||
glViewport @142
|
||||
glActiveTexture@4 @1
|
||||
glAttachShader@8 @2
|
||||
glBindAttribLocation@12 @3
|
||||
glBindBuffer@8 @4
|
||||
glBindFramebuffer@8 @5
|
||||
glBindRenderbuffer@8 @6
|
||||
glBindTexture@8 @7
|
||||
glBlendColor@16 @8
|
||||
glBlendEquation@4 @9
|
||||
glBlendEquationSeparate@8 @10
|
||||
glBlendFunc@8 @11
|
||||
glBlendFuncSeparate@16 @12
|
||||
glBufferData@16 @13
|
||||
glBufferSubData@16 @14
|
||||
glCheckFramebufferStatus@4 @15
|
||||
glClear@4 @16
|
||||
glClearColor@16 @17
|
||||
glClearDepthf@4 @18
|
||||
glClearStencil@4 @19
|
||||
glColorMask@16 @20
|
||||
glCompileShader@4 @21
|
||||
glCompressedTexImage2D@32 @22
|
||||
glCompressedTexSubImage2D@36 @23
|
||||
glCopyTexImage2D@32 @24
|
||||
glCopyTexSubImage2D@32 @25
|
||||
glCreateProgram@0 @26
|
||||
glCreateShader@4 @27
|
||||
glCullFace@4 @28
|
||||
glDeleteBuffers@8 @29
|
||||
glDeleteFramebuffers@8 @30
|
||||
glDeleteProgram@4 @32
|
||||
glDeleteRenderbuffers@8 @33
|
||||
glDeleteShader@4 @34
|
||||
glDeleteTextures@8 @31
|
||||
glDepthFunc@4 @36
|
||||
glDepthMask@4 @37
|
||||
glDepthRangef@8 @38
|
||||
glDetachShader@8 @35
|
||||
glDisable@4 @39
|
||||
glDisableVertexAttribArray@4 @40
|
||||
glDrawArrays@12 @41
|
||||
glDrawElements@16 @42
|
||||
glEnable@4 @43
|
||||
glEnableVertexAttribArray@4 @44
|
||||
glFinish@0 @45
|
||||
glFlush@0 @46
|
||||
glFramebufferRenderbuffer@16 @47
|
||||
glFramebufferTexture2D@20 @48
|
||||
glFrontFace@4 @49
|
||||
glGenBuffers@8 @50
|
||||
glGenFramebuffers@8 @52
|
||||
glGenRenderbuffers@8 @53
|
||||
glGenTextures@8 @54
|
||||
glGenerateMipmap@4 @51
|
||||
glGetActiveAttrib@28 @55
|
||||
glGetActiveUniform@28 @56
|
||||
glGetAttachedShaders@16 @57
|
||||
glGetAttribLocation@8 @58
|
||||
glGetBooleanv@8 @59
|
||||
glGetBufferParameteriv@12 @60
|
||||
glGetError@0 @61
|
||||
glGetFloatv@8 @62
|
||||
glGetFramebufferAttachmentParameteriv@16 @63
|
||||
glGetIntegerv@8 @64
|
||||
glGetProgramInfoLog@16 @66
|
||||
glGetProgramiv@12 @65
|
||||
glGetRenderbufferParameteriv@12 @67
|
||||
glGetShaderInfoLog@16 @69
|
||||
glGetShaderPrecisionFormat@16 @70
|
||||
glGetShaderSource@16 @71
|
||||
glGetShaderiv@12 @68
|
||||
glGetString@4 @72
|
||||
glGetTexParameterfv@12 @73
|
||||
glGetTexParameteriv@12 @74
|
||||
glGetUniformLocation@8 @77
|
||||
glGetUniformfv@12 @75
|
||||
glGetUniformiv@12 @76
|
||||
glGetVertexAttribPointerv@12 @80
|
||||
glGetVertexAttribfv@12 @78
|
||||
glGetVertexAttribiv@12 @79
|
||||
glHint@8 @81
|
||||
glIsBuffer@4 @82
|
||||
glIsEnabled@4 @83
|
||||
glIsFramebuffer@4 @84
|
||||
glIsProgram@4 @85
|
||||
glIsRenderbuffer@4 @86
|
||||
glIsShader@4 @87
|
||||
glIsTexture@4 @88
|
||||
glLineWidth@4 @89
|
||||
glLinkProgram@4 @90
|
||||
glPixelStorei@8 @91
|
||||
glPolygonOffset@8 @92
|
||||
glReadPixels@28 @93
|
||||
glReleaseShaderCompiler@0 @94
|
||||
glRenderbufferStorage@16 @95
|
||||
glSampleCoverage@8 @96
|
||||
glScissor@16 @97
|
||||
glShaderBinary@20 @98
|
||||
glShaderSource@16 @99
|
||||
glStencilFunc@12 @100
|
||||
glStencilFuncSeparate@16 @101
|
||||
glStencilMask@4 @102
|
||||
glStencilMaskSeparate@8 @103
|
||||
glStencilOp@12 @104
|
||||
glStencilOpSeparate@16 @105
|
||||
glTexImage2D@36 @106
|
||||
glTexParameterf@12 @107
|
||||
glTexParameterfv@12 @108
|
||||
glTexParameteri@12 @109
|
||||
glTexParameteriv@12 @110
|
||||
glTexSubImage2D@36 @111
|
||||
glUniform1f@8 @112
|
||||
glUniform1fv@12 @113
|
||||
glUniform1i@8 @114
|
||||
glUniform1iv@12 @115
|
||||
glUniform2f@12 @116
|
||||
glUniform2fv@12 @117
|
||||
glUniform2i@12 @118
|
||||
glUniform2iv@12 @119
|
||||
glUniform3f@16 @120
|
||||
glUniform3fv@12 @121
|
||||
glUniform3i@16 @122
|
||||
glUniform3iv@12 @123
|
||||
glUniform4f@20 @124
|
||||
glUniform4fv@12 @125
|
||||
glUniform4i@20 @126
|
||||
glUniform4iv@12 @127
|
||||
glUniformMatrix2fv@16 @128
|
||||
glUniformMatrix3fv@16 @129
|
||||
glUniformMatrix4fv@16 @130
|
||||
glUseProgram@4 @131
|
||||
glValidateProgram@4 @132
|
||||
glVertexAttrib1f@8 @133
|
||||
glVertexAttrib1fv@8 @134
|
||||
glVertexAttrib2f@12 @135
|
||||
glVertexAttrib2fv@8 @136
|
||||
glVertexAttrib3f@16 @137
|
||||
glVertexAttrib3fv@8 @138
|
||||
glVertexAttrib4f@20 @139
|
||||
glVertexAttrib4fv@8 @140
|
||||
glVertexAttribPointer@24 @141
|
||||
glViewport@16 @142
|
||||
|
||||
; Extensions
|
||||
glBlitFramebufferANGLE @149
|
||||
glRenderbufferStorageMultisampleANGLE @150
|
||||
glDeleteFencesNV @151
|
||||
glFinishFenceNV @152
|
||||
glGenFencesNV @153
|
||||
glGetFenceivNV @154
|
||||
glIsFenceNV @155
|
||||
glSetFenceNV @156
|
||||
glTestFenceNV @157
|
||||
glGetTranslatedShaderSourceANGLE @159
|
||||
glTexStorage2DEXT @160
|
||||
glGetGraphicsResetStatusEXT @161
|
||||
glReadnPixelsEXT @162
|
||||
glGetnUniformfvEXT @163
|
||||
glGetnUniformivEXT @164
|
||||
glGenQueriesEXT @165
|
||||
glDeleteQueriesEXT @166
|
||||
glIsQueryEXT @167
|
||||
glBeginQueryEXT @168
|
||||
glEndQueryEXT @169
|
||||
glGetQueryivEXT @170
|
||||
glGetQueryObjectuivEXT @171
|
||||
glVertexAttribDivisorANGLE @172
|
||||
glDrawArraysInstancedANGLE @173
|
||||
glDrawElementsInstancedANGLE @174
|
||||
glProgramBinaryOES @175
|
||||
glGetProgramBinaryOES @176
|
||||
glDrawBuffersEXT @179
|
||||
glMapBufferOES @285
|
||||
glUnmapBufferOES @286
|
||||
glGetBufferPointervOES @287
|
||||
glMapBufferRangeEXT @288
|
||||
glFlushMappedBufferRangeEXT @289
|
||||
glDiscardFramebufferEXT @293
|
||||
glInsertEventMarkerEXT @294
|
||||
glPushGroupMarkerEXT @295
|
||||
glPopGroupMarkerEXT @296
|
||||
glEGLImageTargetTexture2DOES @297
|
||||
glEGLImageTargetRenderbufferStorageOES @298
|
||||
glBindVertexArrayOES @299
|
||||
glDeleteVertexArraysOES @300
|
||||
glGenVertexArraysOES @301
|
||||
glIsVertexArrayOES @302
|
||||
glDebugMessageControlKHR @303
|
||||
glDebugMessageInsertKHR @304
|
||||
glDebugMessageCallbackKHR @305
|
||||
glGetDebugMessageLogKHR @306
|
||||
glPushDebugGroupKHR @307
|
||||
glPopDebugGroupKHR @308
|
||||
glObjectLabelKHR @309
|
||||
glGetObjectLabelKHR @310
|
||||
glObjectPtrLabelKHR @311
|
||||
glGetObjectPtrLabelKHR @312
|
||||
glGetPointervKHR @313
|
||||
glQueryCounterEXT @314
|
||||
glGetQueryObjectivEXT @315
|
||||
glGetQueryObjecti64vEXT @316
|
||||
glGetQueryObjectui64vEXT @317
|
||||
glBindUniformLocationCHROMIUM @318
|
||||
glCoverageModulationCHROMIUM @319
|
||||
glBlitFramebufferANGLE@40 @149
|
||||
glRenderbufferStorageMultisampleANGLE@20 @150
|
||||
glDeleteFencesNV@8 @151
|
||||
glFinishFenceNV@4 @152
|
||||
glGenFencesNV@8 @153
|
||||
glGetFenceivNV@12 @154
|
||||
glIsFenceNV@4 @155
|
||||
glSetFenceNV@8 @156
|
||||
glTestFenceNV@4 @157
|
||||
glGetTranslatedShaderSourceANGLE@16 @159
|
||||
glTexStorage2DEXT@20 @160
|
||||
glGetGraphicsResetStatusEXT@0 @161
|
||||
glReadnPixelsEXT@32 @162
|
||||
glGetnUniformfvEXT@16 @163
|
||||
glGetnUniformivEXT@16 @164
|
||||
glGenQueriesEXT@8 @165
|
||||
glDeleteQueriesEXT@8 @166
|
||||
glIsQueryEXT@4 @167
|
||||
glBeginQueryEXT@8 @168
|
||||
glEndQueryEXT@4 @169
|
||||
glGetQueryivEXT@12 @170
|
||||
glGetQueryObjectuivEXT@12 @171
|
||||
glVertexAttribDivisorANGLE@8 @172
|
||||
glDrawArraysInstancedANGLE@16 @173
|
||||
glDrawElementsInstancedANGLE@20 @174
|
||||
glProgramBinaryOES@16 @175
|
||||
glGetProgramBinaryOES@20 @176
|
||||
glDrawBuffersEXT@8 @179
|
||||
glMapBufferOES@8 @285
|
||||
glUnmapBufferOES@4 @286
|
||||
glGetBufferPointervOES@12 @287
|
||||
glMapBufferRangeEXT@16 @288
|
||||
glFlushMappedBufferRangeEXT@12 @289
|
||||
glDiscardFramebufferEXT@12 @293
|
||||
glInsertEventMarkerEXT@8 @294
|
||||
glPushGroupMarkerEXT@8 @295
|
||||
glPopGroupMarkerEXT@0 @296
|
||||
glEGLImageTargetTexture2DOES@8 @297
|
||||
glEGLImageTargetRenderbufferStorageOES@8 @298
|
||||
glBindVertexArrayOES@4 @299
|
||||
glDeleteVertexArraysOES@8 @300
|
||||
glGenVertexArraysOES@8 @301
|
||||
glIsVertexArrayOES@4 @302
|
||||
glDebugMessageControlKHR@24 @303
|
||||
glDebugMessageInsertKHR@24 @304
|
||||
glDebugMessageCallbackKHR@8 @305
|
||||
glGetDebugMessageLogKHR@32 @306
|
||||
glPushDebugGroupKHR@16 @307
|
||||
glPopDebugGroupKHR@0 @308
|
||||
glObjectLabelKHR@16 @309
|
||||
glGetObjectLabelKHR@20 @310
|
||||
glObjectPtrLabelKHR@12 @311
|
||||
glGetObjectPtrLabelKHR@16 @312
|
||||
glGetPointervKHR@8 @313
|
||||
glQueryCounterEXT@8 @314
|
||||
glGetQueryObjectivEXT@12 @315
|
||||
glGetQueryObjecti64vEXT@12 @316
|
||||
glGetQueryObjectui64vEXT@12 @317
|
||||
glBindUniformLocationCHROMIUM@12 @318
|
||||
glCoverageModulationCHROMIUM@4 @319
|
||||
glMatrixLoadfCHROMIUM@8 @320
|
||||
glMatrixLoadIdentityCHROMIUM@4 @321
|
||||
glGenPathsCHROMIUM@4 @322
|
||||
glDeletePathsCHROMIUM@8 @323
|
||||
glIsPathCHROMIUM@4 @324
|
||||
glPathCommandsCHROMIUM@24 @325
|
||||
glPathParameterfCHROMIUM@12 @326
|
||||
glPathParameteriCHROMIUM@12 @327
|
||||
glGetPathParameterfvCHROMIUM@12 @328
|
||||
glGetPathParameterivCHROMIUM@12 @329
|
||||
glPathStencilFuncCHROMIUM@12 @330
|
||||
glStencilFillPathCHROMIUM@12 @331
|
||||
glStencilStrokePathCHROMIUM@12 @332
|
||||
glCoverFillPathCHROMIUM@8 @333
|
||||
glCoverStrokePathCHROMIUM@8 @334
|
||||
glStencilThenCoverFillPathCHROMIUM@16 @335
|
||||
glStencilThenCoverStrokePathCHROMIUM@16 @336
|
||||
glCoverFillPathInstancedCHROMIUM@28 @337
|
||||
glCoverStrokePathInstancedCHROMIUM@28 @338
|
||||
glStencilStrokePathInstancedCHROMIUM@32 @339
|
||||
glStencilFillPathInstancedCHROMIUM@32 @340
|
||||
glStencilThenCoverFillPathInstancedCHROMIUM@36 @341
|
||||
glStencilThenCoverStrokePathInstancedCHROMIUM@36 @342
|
||||
glBindFragmentInputLocationCHROMIUM@12 @343
|
||||
glProgramPathFragmentInputGenCHROMIUM@20 @344
|
||||
|
||||
glMatrixLoadfCHROMIUM @320
|
||||
glMatrixLoadIdentityCHROMIUM @321
|
||||
glGenPathsCHROMIUM @322
|
||||
glDeletePathsCHROMIUM @323
|
||||
glIsPathCHROMIUM @324
|
||||
glPathCommandsCHROMIUM @325
|
||||
glPathParameterfCHROMIUM @326
|
||||
glPathParameteriCHROMIUM @327
|
||||
glGetPathParameterfvCHROMIUM @328
|
||||
glGetPathParameterivCHROMIUM @329
|
||||
glPathStencilFuncCHROMIUM @330
|
||||
glStencilFillPathCHROMIUM @331
|
||||
glStencilStrokePathCHROMIUM @332
|
||||
glCoverFillPathCHROMIUM @333
|
||||
glCoverStrokePathCHROMIUM @334
|
||||
glStencilThenCoverFillPathCHROMIUM @335
|
||||
glStencilThenCoverStrokePathCHROMIUM @336
|
||||
glCoverFillPathInstancedCHROMIUM @337
|
||||
glCoverStrokePathInstancedCHROMIUM @338
|
||||
glStencilStrokePathInstancedCHROMIUM @339
|
||||
glStencilFillPathInstancedCHROMIUM @340
|
||||
glStencilThenCoverFillPathInstancedCHROMIUM @341
|
||||
glStencilThenCoverStrokePathInstancedCHROMIUM @342
|
||||
glBindFragmentInputLocationCHROMIUM @343
|
||||
glProgramPathFragmentInputGenCHROMIUM @344
|
||||
|
||||
glFramebufferTextureMultiviewLayeredANGLE @413
|
||||
glFramebufferTextureMultiviewSideBySideANGLE @414
|
||||
glRequestExtensionANGLE @415
|
||||
glFramebufferTextureMultiviewLayeredANGLE@24 @413
|
||||
glFramebufferTextureMultiviewSideBySideANGLE@24 @414
|
||||
glRequestExtensionANGLE@4 @415
|
||||
|
||||
; GLES 3.0 Functions
|
||||
glReadBuffer @180
|
||||
glDrawRangeElements @181
|
||||
glTexImage3D @182
|
||||
glTexSubImage3D @183
|
||||
glCopyTexSubImage3D @184
|
||||
glCompressedTexImage3D @185
|
||||
glCompressedTexSubImage3D @186
|
||||
glGenQueries @187
|
||||
glDeleteQueries @188
|
||||
glIsQuery @189
|
||||
glBeginQuery @190
|
||||
glEndQuery @191
|
||||
glGetQueryiv @192
|
||||
glGetQueryObjectuiv @193
|
||||
glUnmapBuffer @194
|
||||
glGetBufferPointerv @195
|
||||
glDrawBuffers @196
|
||||
glUniformMatrix2x3fv @197
|
||||
glUniformMatrix3x2fv @198
|
||||
glUniformMatrix2x4fv @199
|
||||
glUniformMatrix4x2fv @200
|
||||
glUniformMatrix3x4fv @201
|
||||
glUniformMatrix4x3fv @202
|
||||
glBlitFramebuffer @203
|
||||
glRenderbufferStorageMultisample @204
|
||||
glFramebufferTextureLayer @205
|
||||
glMapBufferRange @206
|
||||
glFlushMappedBufferRange @207
|
||||
glBindVertexArray @208
|
||||
glDeleteVertexArrays @209
|
||||
glGenVertexArrays @210
|
||||
glIsVertexArray @211
|
||||
glGetIntegeri_v @212
|
||||
glBeginTransformFeedback @213
|
||||
glEndTransformFeedback @214
|
||||
glBindBufferRange @215
|
||||
glBindBufferBase @216
|
||||
glTransformFeedbackVaryings @217
|
||||
glGetTransformFeedbackVarying @218
|
||||
glVertexAttribIPointer @219
|
||||
glGetVertexAttribIiv @220
|
||||
glGetVertexAttribIuiv @221
|
||||
glVertexAttribI4i @222
|
||||
glVertexAttribI4ui @223
|
||||
glVertexAttribI4iv @224
|
||||
glVertexAttribI4uiv @225
|
||||
glGetUniformuiv @226
|
||||
glGetFragDataLocation @227
|
||||
glUniform1ui @228
|
||||
glUniform2ui @229
|
||||
glUniform3ui @230
|
||||
glUniform4ui @231
|
||||
glUniform1uiv @232
|
||||
glUniform2uiv @233
|
||||
glUniform3uiv @234
|
||||
glUniform4uiv @235
|
||||
glClearBufferiv @236
|
||||
glClearBufferuiv @237
|
||||
glClearBufferfv @238
|
||||
glClearBufferfi @239
|
||||
glGetStringi @240
|
||||
glCopyBufferSubData @241
|
||||
glGetUniformIndices @242
|
||||
glGetActiveUniformsiv @243
|
||||
glGetUniformBlockIndex @244
|
||||
glGetActiveUniformBlockiv @245
|
||||
glGetActiveUniformBlockName @246
|
||||
glUniformBlockBinding @247
|
||||
glDrawArraysInstanced @248
|
||||
glDrawElementsInstanced @249
|
||||
glFenceSync @250
|
||||
glIsSync @251
|
||||
glDeleteSync @252
|
||||
glClientWaitSync @253
|
||||
glWaitSync @254
|
||||
glGetInteger64v @255
|
||||
glGetSynciv @256
|
||||
glGetInteger64i_v @257
|
||||
glGetBufferParameteri64v @258
|
||||
glGenSamplers @259
|
||||
glDeleteSamplers @260
|
||||
glIsSampler @261
|
||||
glBindSampler @262
|
||||
glSamplerParameteri @263
|
||||
glSamplerParameteriv @264
|
||||
glSamplerParameterf @265
|
||||
glSamplerParameterfv @266
|
||||
glGetSamplerParameteriv @267
|
||||
glGetSamplerParameterfv @268
|
||||
glVertexAttribDivisor @269
|
||||
glBindTransformFeedback @270
|
||||
glDeleteTransformFeedbacks @271
|
||||
glGenTransformFeedbacks @272
|
||||
glIsTransformFeedback @273
|
||||
glPauseTransformFeedback @274
|
||||
glResumeTransformFeedback @275
|
||||
glGetProgramBinary @276
|
||||
glProgramBinary @277
|
||||
glProgramParameteri @278
|
||||
glInvalidateFramebuffer @279
|
||||
glInvalidateSubFramebuffer @280
|
||||
glTexStorage2D @281
|
||||
glTexStorage3D @282
|
||||
glGetInternalformativ @283
|
||||
glReadBuffer@4 @180
|
||||
glDrawRangeElements@24 @181
|
||||
glTexImage3D@40 @182
|
||||
glTexSubImage3D@44 @183
|
||||
glCopyTexSubImage3D@36 @184
|
||||
glCompressedTexImage3D@36 @185
|
||||
glCompressedTexSubImage3D@44 @186
|
||||
glGenQueries@8 @187
|
||||
glDeleteQueries@8 @188
|
||||
glIsQuery@4 @189
|
||||
glBeginQuery@8 @190
|
||||
glEndQuery@4 @191
|
||||
glGetQueryiv@12 @192
|
||||
glGetQueryObjectuiv@12 @193
|
||||
glUnmapBuffer@4 @194
|
||||
glGetBufferPointerv@12 @195
|
||||
glDrawBuffers@8 @196
|
||||
glUniformMatrix2x3fv@16 @197
|
||||
glUniformMatrix3x2fv@16 @198
|
||||
glUniformMatrix2x4fv@16 @199
|
||||
glUniformMatrix4x2fv@16 @200
|
||||
glUniformMatrix3x4fv@16 @201
|
||||
glUniformMatrix4x3fv@16 @202
|
||||
glBlitFramebuffer@40 @203
|
||||
glRenderbufferStorageMultisample@20 @204
|
||||
glFramebufferTextureLayer@20 @205
|
||||
glMapBufferRange@16 @206
|
||||
glFlushMappedBufferRange@12 @207
|
||||
glBindVertexArray@4 @208
|
||||
glDeleteVertexArrays@8 @209
|
||||
glGenVertexArrays@8 @210
|
||||
glIsVertexArray@4 @211
|
||||
glGetIntegeri_v@12 @212
|
||||
glBeginTransformFeedback@4 @213
|
||||
glEndTransformFeedback@0 @214
|
||||
glBindBufferRange@20 @215
|
||||
glBindBufferBase@12 @216
|
||||
glTransformFeedbackVaryings@16 @217
|
||||
glGetTransformFeedbackVarying@28 @218
|
||||
glVertexAttribIPointer@20 @219
|
||||
glGetVertexAttribIiv@12 @220
|
||||
glGetVertexAttribIuiv@12 @221
|
||||
glVertexAttribI4i@20 @222
|
||||
glVertexAttribI4ui@20 @223
|
||||
glVertexAttribI4iv@8 @224
|
||||
glVertexAttribI4uiv@8 @225
|
||||
glGetUniformuiv@12 @226
|
||||
glGetFragDataLocation@8 @227
|
||||
glUniform1ui@8 @228
|
||||
glUniform2ui@12 @229
|
||||
glUniform3ui@16 @230
|
||||
glUniform4ui@20 @231
|
||||
glUniform1uiv@12 @232
|
||||
glUniform2uiv@12 @233
|
||||
glUniform3uiv@12 @234
|
||||
glUniform4uiv@12 @235
|
||||
glClearBufferiv@12 @236
|
||||
glClearBufferuiv@12 @237
|
||||
glClearBufferfv@12 @238
|
||||
glClearBufferfi@16 @239
|
||||
glGetStringi@8 @240
|
||||
glCopyBufferSubData@20 @241
|
||||
glGetUniformIndices@16 @242
|
||||
glGetActiveUniformsiv@20 @243
|
||||
glGetUniformBlockIndex@8 @244
|
||||
glGetActiveUniformBlockiv@16 @245
|
||||
glGetActiveUniformBlockName@20 @246
|
||||
glUniformBlockBinding@12 @247
|
||||
glDrawArraysInstanced@16 @248
|
||||
glDrawElementsInstanced@20 @249
|
||||
glFenceSync@8 @250
|
||||
glIsSync@4 @251
|
||||
glDeleteSync@4 @252
|
||||
glClientWaitSync@16 @253
|
||||
glWaitSync@16 @254
|
||||
glGetInteger64v@8 @255
|
||||
glGetSynciv@20 @256
|
||||
glGetInteger64i_v@12 @257
|
||||
glGetBufferParameteri64v@12 @258
|
||||
glGenSamplers@8 @259
|
||||
glDeleteSamplers@8 @260
|
||||
glIsSampler@4 @261
|
||||
glBindSampler@8 @262
|
||||
glSamplerParameteri@12 @263
|
||||
glSamplerParameteriv@12 @264
|
||||
glSamplerParameterf@12 @265
|
||||
glSamplerParameterfv@12 @266
|
||||
glGetSamplerParameteriv@12 @267
|
||||
glGetSamplerParameterfv@12 @268
|
||||
glVertexAttribDivisor@8 @269
|
||||
glBindTransformFeedback@8 @270
|
||||
glDeleteTransformFeedbacks@8 @271
|
||||
glGenTransformFeedbacks@8 @272
|
||||
glIsTransformFeedback@4 @273
|
||||
glPauseTransformFeedback@0 @274
|
||||
glResumeTransformFeedback@0 @275
|
||||
glGetProgramBinary@20 @276
|
||||
glProgramBinary@16 @277
|
||||
glProgramParameteri@12 @278
|
||||
glInvalidateFramebuffer@12 @279
|
||||
glInvalidateSubFramebuffer@28 @280
|
||||
glTexStorage2D@20 @281
|
||||
glTexStorage3D@24 @282
|
||||
glGetInternalformativ@20 @283
|
||||
|
||||
; GLES 3.1 Functions
|
||||
glDispatchCompute @345
|
||||
glDispatchComputeIndirect @346
|
||||
glDrawArraysIndirect @347
|
||||
glDrawElementsIndirect @348
|
||||
glFramebufferParameteri @349
|
||||
glGetFramebufferParameteriv @350
|
||||
glGetProgramInterfaceiv @351
|
||||
glGetProgramResourceIndex @352
|
||||
glGetProgramResourceName @353
|
||||
glGetProgramResourceiv @354
|
||||
glGetProgramResourceLocation @355
|
||||
glUseProgramStages @356
|
||||
glActiveShaderProgram @357
|
||||
glCreateShaderProgramv @358
|
||||
glBindProgramPipeline @359
|
||||
glDeleteProgramPipelines @360
|
||||
glGenProgramPipelines @361
|
||||
glIsProgramPipeline @362
|
||||
glGetProgramPipelineiv @363
|
||||
glProgramUniform1i @364
|
||||
glProgramUniform2i @365
|
||||
glProgramUniform3i @366
|
||||
glProgramUniform4i @367
|
||||
glProgramUniform1ui @368
|
||||
glProgramUniform2ui @369
|
||||
glProgramUniform3ui @370
|
||||
glProgramUniform4ui @371
|
||||
glProgramUniform1f @372
|
||||
glProgramUniform2f @373
|
||||
glProgramUniform3f @374
|
||||
glProgramUniform4f @375
|
||||
glProgramUniform1iv @376
|
||||
glProgramUniform2iv @377
|
||||
glProgramUniform3iv @378
|
||||
glProgramUniform4iv @379
|
||||
glProgramUniform1uiv @380
|
||||
glProgramUniform2uiv @381
|
||||
glProgramUniform3uiv @382
|
||||
glProgramUniform4uiv @383
|
||||
glProgramUniform1fv @384
|
||||
glProgramUniform2fv @385
|
||||
glProgramUniform3fv @386
|
||||
glProgramUniform4fv @387
|
||||
glProgramUniformMatrix2fv @388
|
||||
glProgramUniformMatrix3fv @389
|
||||
glProgramUniformMatrix4fv @390
|
||||
glProgramUniformMatrix2x3fv @391
|
||||
glProgramUniformMatrix3x2fv @392
|
||||
glProgramUniformMatrix2x4fv @393
|
||||
glProgramUniformMatrix4x2fv @394
|
||||
glProgramUniformMatrix3x4fv @395
|
||||
glProgramUniformMatrix4x3fv @396
|
||||
glValidateProgramPipeline @397
|
||||
glGetProgramPipelineInfoLog @398
|
||||
glBindImageTexture @399
|
||||
glGetBooleani_v @400
|
||||
glMemoryBarrier @401
|
||||
glMemoryBarrierByRegion @402
|
||||
glTexStorage2DMultisample @403
|
||||
glGetMultisamplefv @404
|
||||
glSampleMaski @405
|
||||
glGetTexLevelParameteriv @406
|
||||
glGetTexLevelParameterfv @407
|
||||
glBindVertexBuffer @408
|
||||
glVertexAttribFormat @409
|
||||
glVertexAttribIFormat @410
|
||||
glVertexAttribBinding @411
|
||||
glVertexBindingDivisor @412
|
||||
glDispatchCompute@12 @345
|
||||
glDispatchComputeIndirect@4 @346
|
||||
glDrawArraysIndirect@8 @347
|
||||
glDrawElementsIndirect@12 @348
|
||||
glFramebufferParameteri@12 @349
|
||||
glGetFramebufferParameteriv@12 @350
|
||||
glGetProgramInterfaceiv@16 @351
|
||||
glGetProgramResourceIndex@12 @352
|
||||
glGetProgramResourceName@24 @353
|
||||
glGetProgramResourceiv@32 @354
|
||||
glGetProgramResourceLocation@12 @355
|
||||
glUseProgramStages@12 @356
|
||||
glActiveShaderProgram@8 @357
|
||||
glCreateShaderProgramv@12 @358
|
||||
glBindProgramPipeline@4 @359
|
||||
glDeleteProgramPipelines@8 @360
|
||||
glGenProgramPipelines@8 @361
|
||||
glIsProgramPipeline@4 @362
|
||||
glGetProgramPipelineiv@12 @363
|
||||
glProgramUniform1i@12 @364
|
||||
glProgramUniform2i@16 @365
|
||||
glProgramUniform3i@20 @366
|
||||
glProgramUniform4i@24 @367
|
||||
glProgramUniform1ui@12 @368
|
||||
glProgramUniform2ui@16 @369
|
||||
glProgramUniform3ui@20 @370
|
||||
glProgramUniform4ui@24 @371
|
||||
glProgramUniform1f@12 @372
|
||||
glProgramUniform2f@16 @373
|
||||
glProgramUniform3f@20 @374
|
||||
glProgramUniform4f@24 @375
|
||||
glProgramUniform1iv@16 @376
|
||||
glProgramUniform2iv@16 @377
|
||||
glProgramUniform3iv@16 @378
|
||||
glProgramUniform4iv@16 @379
|
||||
glProgramUniform1uiv@16 @380
|
||||
glProgramUniform2uiv@16 @381
|
||||
glProgramUniform3uiv@16 @382
|
||||
glProgramUniform4uiv@16 @383
|
||||
glProgramUniform1fv@16 @384
|
||||
glProgramUniform2fv@16 @385
|
||||
glProgramUniform3fv@16 @386
|
||||
glProgramUniform4fv@16 @387
|
||||
glProgramUniformMatrix2fv@20 @388
|
||||
glProgramUniformMatrix3fv@20 @389
|
||||
glProgramUniformMatrix4fv@20 @390
|
||||
glProgramUniformMatrix2x3fv@20 @391
|
||||
glProgramUniformMatrix3x2fv@20 @392
|
||||
glProgramUniformMatrix2x4fv@20 @393
|
||||
glProgramUniformMatrix4x2fv@20 @394
|
||||
glProgramUniformMatrix3x4fv@20 @395
|
||||
glProgramUniformMatrix4x3fv@20 @396
|
||||
glValidateProgramPipeline@4 @397
|
||||
glGetProgramPipelineInfoLog@16 @398
|
||||
glBindImageTexture@28 @399
|
||||
glGetBooleani_v@12 @400
|
||||
glMemoryBarrier@4 @401
|
||||
glMemoryBarrierByRegion@4 @402
|
||||
glTexStorage2DMultisample@24 @403
|
||||
glGetMultisamplefv@12 @404
|
||||
glSampleMaski@8 @405
|
||||
glGetTexLevelParameteriv@16 @406
|
||||
glGetTexLevelParameterfv@16 @407
|
||||
glBindVertexBuffer@16 @408
|
||||
glVertexAttribFormat@20 @409
|
||||
glVertexAttribIFormat@16 @410
|
||||
glVertexAttribBinding@8 @411
|
||||
glVertexBindingDivisor@8 @412
|
||||
|
@ -1,412 +1,411 @@
|
||||
LIBRARY libGLESv2
|
||||
EXPORTS
|
||||
glActiveTexture @1
|
||||
glAttachShader @2
|
||||
glBindAttribLocation @3
|
||||
glBindBuffer @4
|
||||
glBindFramebuffer @5
|
||||
glBindRenderbuffer @6
|
||||
glBindTexture @7
|
||||
glBlendColor @8
|
||||
glBlendEquation @9
|
||||
glBlendEquationSeparate @10
|
||||
glBlendFunc @11
|
||||
glBlendFuncSeparate @12
|
||||
glBufferData @13
|
||||
glBufferSubData @14
|
||||
glCheckFramebufferStatus @15
|
||||
glClear @16
|
||||
glClearColor @17
|
||||
glClearDepthf @18
|
||||
glClearStencil @19
|
||||
glColorMask @20
|
||||
glCompileShader @21
|
||||
glCompressedTexImage2D @22
|
||||
glCompressedTexSubImage2D @23
|
||||
glCopyTexImage2D @24
|
||||
glCopyTexSubImage2D @25
|
||||
glCreateProgram @26
|
||||
glCreateShader @27
|
||||
glCullFace @28
|
||||
glDeleteBuffers @29
|
||||
glDeleteFramebuffers @30
|
||||
glDeleteProgram @32
|
||||
glDeleteRenderbuffers @33
|
||||
glDeleteShader @34
|
||||
glDeleteTextures @31
|
||||
glDepthFunc @36
|
||||
glDepthMask @37
|
||||
glDepthRangef @38
|
||||
glDetachShader @35
|
||||
glDisable @39
|
||||
glDisableVertexAttribArray @40
|
||||
glDrawArrays @41
|
||||
glDrawElements @42
|
||||
glEnable @43
|
||||
glEnableVertexAttribArray @44
|
||||
glFinish @45
|
||||
glFlush @46
|
||||
glFramebufferRenderbuffer @47
|
||||
glFramebufferTexture2D @48
|
||||
glFrontFace @49
|
||||
glGenBuffers @50
|
||||
glGenFramebuffers @52
|
||||
glGenRenderbuffers @53
|
||||
glGenTextures @54
|
||||
glGenerateMipmap @51
|
||||
glGetActiveAttrib @55
|
||||
glGetActiveUniform @56
|
||||
glGetAttachedShaders @57
|
||||
glGetAttribLocation @58
|
||||
glGetBooleanv @59
|
||||
glGetBufferParameteriv @60
|
||||
glGetError @61
|
||||
glGetFloatv @62
|
||||
glGetFramebufferAttachmentParameteriv @63
|
||||
glGetIntegerv @64
|
||||
glGetProgramInfoLog @66
|
||||
glGetProgramiv @65
|
||||
glGetRenderbufferParameteriv @67
|
||||
glGetShaderInfoLog @69
|
||||
glGetShaderPrecisionFormat @70
|
||||
glGetShaderSource @71
|
||||
glGetShaderiv @68
|
||||
glGetString @72
|
||||
glGetTexParameterfv @73
|
||||
glGetTexParameteriv @74
|
||||
glGetUniformLocation @77
|
||||
glGetUniformfv @75
|
||||
glGetUniformiv @76
|
||||
glGetVertexAttribPointerv @80
|
||||
glGetVertexAttribfv @78
|
||||
glGetVertexAttribiv @79
|
||||
glHint @81
|
||||
glIsBuffer @82
|
||||
glIsEnabled @83
|
||||
glIsFramebuffer @84
|
||||
glIsProgram @85
|
||||
glIsRenderbuffer @86
|
||||
glIsShader @87
|
||||
glIsTexture @88
|
||||
glLineWidth @89
|
||||
glLinkProgram @90
|
||||
glPixelStorei @91
|
||||
glPolygonOffset @92
|
||||
glReadPixels @93
|
||||
glReleaseShaderCompiler @94
|
||||
glRenderbufferStorage @95
|
||||
glSampleCoverage @96
|
||||
glScissor @97
|
||||
glShaderBinary @98
|
||||
glShaderSource @99
|
||||
glStencilFunc @100
|
||||
glStencilFuncSeparate @101
|
||||
glStencilMask @102
|
||||
glStencilMaskSeparate @103
|
||||
glStencilOp @104
|
||||
glStencilOpSeparate @105
|
||||
glTexImage2D @106
|
||||
glTexParameterf @107
|
||||
glTexParameterfv @108
|
||||
glTexParameteri @109
|
||||
glTexParameteriv @110
|
||||
glTexSubImage2D @111
|
||||
glUniform1f @112
|
||||
glUniform1fv @113
|
||||
glUniform1i @114
|
||||
glUniform1iv @115
|
||||
glUniform2f @116
|
||||
glUniform2fv @117
|
||||
glUniform2i @118
|
||||
glUniform2iv @119
|
||||
glUniform3f @120
|
||||
glUniform3fv @121
|
||||
glUniform3i @122
|
||||
glUniform3iv @123
|
||||
glUniform4f @124
|
||||
glUniform4fv @125
|
||||
glUniform4i @126
|
||||
glUniform4iv @127
|
||||
glUniformMatrix2fv @128
|
||||
glUniformMatrix3fv @129
|
||||
glUniformMatrix4fv @130
|
||||
glUseProgram @131
|
||||
glValidateProgram @132
|
||||
glVertexAttrib1f @133
|
||||
glVertexAttrib1fv @134
|
||||
glVertexAttrib2f @135
|
||||
glVertexAttrib2fv @136
|
||||
glVertexAttrib3f @137
|
||||
glVertexAttrib3fv @138
|
||||
glVertexAttrib4f @139
|
||||
glVertexAttrib4fv @140
|
||||
glVertexAttribPointer @141
|
||||
glViewport @142
|
||||
glActiveTexture@4 @1
|
||||
glAttachShader@8 @2
|
||||
glBindAttribLocation@12 @3
|
||||
glBindBuffer@8 @4
|
||||
glBindFramebuffer@8 @5
|
||||
glBindRenderbuffer@8 @6
|
||||
glBindTexture@8 @7
|
||||
glBlendColor@16 @8
|
||||
glBlendEquation@4 @9
|
||||
glBlendEquationSeparate@8 @10
|
||||
glBlendFunc@8 @11
|
||||
glBlendFuncSeparate@16 @12
|
||||
glBufferData@16 @13
|
||||
glBufferSubData@16 @14
|
||||
glCheckFramebufferStatus@4 @15
|
||||
glClear@4 @16
|
||||
glClearColor@16 @17
|
||||
glClearDepthf@4 @18
|
||||
glClearStencil@4 @19
|
||||
glColorMask@16 @20
|
||||
glCompileShader@4 @21
|
||||
glCompressedTexImage2D@32 @22
|
||||
glCompressedTexSubImage2D@36 @23
|
||||
glCopyTexImage2D@32 @24
|
||||
glCopyTexSubImage2D@32 @25
|
||||
glCreateProgram@0 @26
|
||||
glCreateShader@4 @27
|
||||
glCullFace@4 @28
|
||||
glDeleteBuffers@8 @29
|
||||
glDeleteFramebuffers@8 @30
|
||||
glDeleteProgram@4 @32
|
||||
glDeleteRenderbuffers@8 @33
|
||||
glDeleteShader@4 @34
|
||||
glDeleteTextures@8 @31
|
||||
glDepthFunc@4 @36
|
||||
glDepthMask@4 @37
|
||||
glDepthRangef@8 @38
|
||||
glDetachShader@8 @35
|
||||
glDisable@4 @39
|
||||
glDisableVertexAttribArray@4 @40
|
||||
glDrawArrays@12 @41
|
||||
glDrawElements@16 @42
|
||||
glEnable@4 @43
|
||||
glEnableVertexAttribArray@4 @44
|
||||
glFinish@0 @45
|
||||
glFlush@0 @46
|
||||
glFramebufferRenderbuffer@16 @47
|
||||
glFramebufferTexture2D@20 @48
|
||||
glFrontFace@4 @49
|
||||
glGenBuffers@8 @50
|
||||
glGenFramebuffers@8 @52
|
||||
glGenRenderbuffers@8 @53
|
||||
glGenTextures@8 @54
|
||||
glGenerateMipmap@4 @51
|
||||
glGetActiveAttrib@28 @55
|
||||
glGetActiveUniform@28 @56
|
||||
glGetAttachedShaders@16 @57
|
||||
glGetAttribLocation@8 @58
|
||||
glGetBooleanv@8 @59
|
||||
glGetBufferParameteriv@12 @60
|
||||
glGetError@0 @61
|
||||
glGetFloatv@8 @62
|
||||
glGetFramebufferAttachmentParameteriv@16 @63
|
||||
glGetIntegerv@8 @64
|
||||
glGetProgramInfoLog@16 @66
|
||||
glGetProgramiv@12 @65
|
||||
glGetRenderbufferParameteriv@12 @67
|
||||
glGetShaderInfoLog@16 @69
|
||||
glGetShaderPrecisionFormat@16 @70
|
||||
glGetShaderSource@16 @71
|
||||
glGetShaderiv@12 @68
|
||||
glGetString@4 @72
|
||||
glGetTexParameterfv@12 @73
|
||||
glGetTexParameteriv@12 @74
|
||||
glGetUniformLocation@8 @77
|
||||
glGetUniformfv@12 @75
|
||||
glGetUniformiv@12 @76
|
||||
glGetVertexAttribPointerv@12 @80
|
||||
glGetVertexAttribfv@12 @78
|
||||
glGetVertexAttribiv@12 @79
|
||||
glHint@8 @81
|
||||
glIsBuffer@4 @82
|
||||
glIsEnabled@4 @83
|
||||
glIsFramebuffer@4 @84
|
||||
glIsProgram@4 @85
|
||||
glIsRenderbuffer@4 @86
|
||||
glIsShader@4 @87
|
||||
glIsTexture@4 @88
|
||||
glLineWidth@4 @89
|
||||
glLinkProgram@4 @90
|
||||
glPixelStorei@8 @91
|
||||
glPolygonOffset@8 @92
|
||||
glReadPixels@28 @93
|
||||
glReleaseShaderCompiler@0 @94
|
||||
glRenderbufferStorage@16 @95
|
||||
glSampleCoverage@8 @96
|
||||
glScissor@16 @97
|
||||
glShaderBinary@20 @98
|
||||
glShaderSource@16 @99
|
||||
glStencilFunc@12 @100
|
||||
glStencilFuncSeparate@16 @101
|
||||
glStencilMask@4 @102
|
||||
glStencilMaskSeparate@8 @103
|
||||
glStencilOp@12 @104
|
||||
glStencilOpSeparate@16 @105
|
||||
glTexImage2D@36 @106
|
||||
glTexParameterf@12 @107
|
||||
glTexParameterfv@12 @108
|
||||
glTexParameteri@12 @109
|
||||
glTexParameteriv@12 @110
|
||||
glTexSubImage2D@36 @111
|
||||
glUniform1f@8 @112
|
||||
glUniform1fv@12 @113
|
||||
glUniform1i@8 @114
|
||||
glUniform1iv@12 @115
|
||||
glUniform2f@12 @116
|
||||
glUniform2fv@12 @117
|
||||
glUniform2i@12 @118
|
||||
glUniform2iv@12 @119
|
||||
glUniform3f@16 @120
|
||||
glUniform3fv@12 @121
|
||||
glUniform3i@16 @122
|
||||
glUniform3iv@12 @123
|
||||
glUniform4f@20 @124
|
||||
glUniform4fv@12 @125
|
||||
glUniform4i@20 @126
|
||||
glUniform4iv@12 @127
|
||||
glUniformMatrix2fv@16 @128
|
||||
glUniformMatrix3fv@16 @129
|
||||
glUniformMatrix4fv@16 @130
|
||||
glUseProgram@4 @131
|
||||
glValidateProgram@4 @132
|
||||
glVertexAttrib1f@8 @133
|
||||
glVertexAttrib1fv@8 @134
|
||||
glVertexAttrib2f@12 @135
|
||||
glVertexAttrib2fv@8 @136
|
||||
glVertexAttrib3f@16 @137
|
||||
glVertexAttrib3fv@8 @138
|
||||
glVertexAttrib4f@20 @139
|
||||
glVertexAttrib4fv@8 @140
|
||||
glVertexAttribPointer@24 @141
|
||||
glViewport@16 @142
|
||||
|
||||
; Extensions
|
||||
glBlitFramebufferANGLE @149
|
||||
glRenderbufferStorageMultisampleANGLE @150
|
||||
glDeleteFencesNV @151
|
||||
glFinishFenceNV @152
|
||||
glGenFencesNV @153
|
||||
glGetFenceivNV @154
|
||||
glIsFenceNV @155
|
||||
glSetFenceNV @156
|
||||
glTestFenceNV @157
|
||||
glGetTranslatedShaderSourceANGLE @159
|
||||
glTexStorage2DEXT @160
|
||||
glGetGraphicsResetStatusEXT @161
|
||||
glReadnPixelsEXT @162
|
||||
glGetnUniformfvEXT @163
|
||||
glGetnUniformivEXT @164
|
||||
glGenQueriesEXT @165
|
||||
glDeleteQueriesEXT @166
|
||||
glIsQueryEXT @167
|
||||
glBeginQueryEXT @168
|
||||
glEndQueryEXT @169
|
||||
glGetQueryivEXT @170
|
||||
glGetQueryObjectuivEXT @171
|
||||
glVertexAttribDivisorANGLE @172
|
||||
glDrawArraysInstancedANGLE @173
|
||||
glDrawElementsInstancedANGLE @174
|
||||
glProgramBinaryOES @175
|
||||
glGetProgramBinaryOES @176
|
||||
glDrawBuffersEXT @179
|
||||
glMapBufferOES @285
|
||||
glUnmapBufferOES @286
|
||||
glGetBufferPointervOES @287
|
||||
glMapBufferRangeEXT @288
|
||||
glFlushMappedBufferRangeEXT @289
|
||||
glDiscardFramebufferEXT @293
|
||||
glInsertEventMarkerEXT @294
|
||||
glPushGroupMarkerEXT @295
|
||||
glPopGroupMarkerEXT @296
|
||||
glEGLImageTargetTexture2DOES @297
|
||||
glEGLImageTargetRenderbufferStorageOES @298
|
||||
glBindVertexArrayOES @299
|
||||
glDeleteVertexArraysOES @300
|
||||
glGenVertexArraysOES @301
|
||||
glIsVertexArrayOES @302
|
||||
glDebugMessageControlKHR @303
|
||||
glDebugMessageInsertKHR @304
|
||||
glDebugMessageCallbackKHR @305
|
||||
glGetDebugMessageLogKHR @306
|
||||
glPushDebugGroupKHR @307
|
||||
glPopDebugGroupKHR @308
|
||||
glObjectLabelKHR @309
|
||||
glGetObjectLabelKHR @310
|
||||
glObjectPtrLabelKHR @311
|
||||
glGetObjectPtrLabelKHR @312
|
||||
glGetPointervKHR @313
|
||||
glQueryCounterEXT @314
|
||||
glGetQueryObjectivEXT @315
|
||||
glGetQueryObjecti64vEXT @316
|
||||
glGetQueryObjectui64vEXT @317
|
||||
glBindUniformLocationCHROMIUM @318
|
||||
glCoverageModulationCHROMIUM @319
|
||||
glBlitFramebufferANGLE@40 @149
|
||||
glRenderbufferStorageMultisampleANGLE@20 @150
|
||||
glDeleteFencesNV@8 @151
|
||||
glFinishFenceNV@4 @152
|
||||
glGenFencesNV@8 @153
|
||||
glGetFenceivNV@12 @154
|
||||
glIsFenceNV@4 @155
|
||||
glSetFenceNV@8 @156
|
||||
glTestFenceNV@4 @157
|
||||
glGetTranslatedShaderSourceANGLE@16 @159
|
||||
glTexStorage2DEXT@20 @160
|
||||
glGetGraphicsResetStatusEXT@0 @161
|
||||
glReadnPixelsEXT@32 @162
|
||||
glGetnUniformfvEXT@16 @163
|
||||
glGetnUniformivEXT@16 @164
|
||||
glGenQueriesEXT@8 @165
|
||||
glDeleteQueriesEXT@8 @166
|
||||
glIsQueryEXT@4 @167
|
||||
glBeginQueryEXT@8 @168
|
||||
glEndQueryEXT@4 @169
|
||||
glGetQueryivEXT@12 @170
|
||||
glGetQueryObjectuivEXT@12 @171
|
||||
glVertexAttribDivisorANGLE@8 @172
|
||||
glDrawArraysInstancedANGLE@16 @173
|
||||
glDrawElementsInstancedANGLE@20 @174
|
||||
glProgramBinaryOES@16 @175
|
||||
glGetProgramBinaryOES@20 @176
|
||||
glDrawBuffersEXT@8 @179
|
||||
glMapBufferOES@8 @285
|
||||
glUnmapBufferOES@4 @286
|
||||
glGetBufferPointervOES@12 @287
|
||||
glMapBufferRangeEXT@16 @288
|
||||
glFlushMappedBufferRangeEXT@12 @289
|
||||
glDiscardFramebufferEXT@12 @293
|
||||
glInsertEventMarkerEXT@8 @294
|
||||
glPushGroupMarkerEXT@8 @295
|
||||
glPopGroupMarkerEXT@0 @296
|
||||
glEGLImageTargetTexture2DOES@8 @297
|
||||
glEGLImageTargetRenderbufferStorageOES@8 @298
|
||||
glBindVertexArrayOES@4 @299
|
||||
glDeleteVertexArraysOES@8 @300
|
||||
glGenVertexArraysOES@8 @301
|
||||
glIsVertexArrayOES@4 @302
|
||||
glDebugMessageControlKHR@24 @303
|
||||
glDebugMessageInsertKHR@24 @304
|
||||
glDebugMessageCallbackKHR@8 @305
|
||||
glGetDebugMessageLogKHR@32 @306
|
||||
glPushDebugGroupKHR@16 @307
|
||||
glPopDebugGroupKHR@0 @308
|
||||
glObjectLabelKHR@16 @309
|
||||
glGetObjectLabelKHR@20 @310
|
||||
glObjectPtrLabelKHR@12 @311
|
||||
glGetObjectPtrLabelKHR@16 @312
|
||||
glGetPointervKHR@8 @313
|
||||
glQueryCounterEXT@8 @314
|
||||
glGetQueryObjectivEXT@12 @315
|
||||
glGetQueryObjecti64vEXT@12 @316
|
||||
glGetQueryObjectui64vEXT@12 @317
|
||||
glBindUniformLocationCHROMIUM@12 @318
|
||||
glCoverageModulationCHROMIUM@4 @319
|
||||
glMatrixLoadfCHROMIUM@8 @320
|
||||
glMatrixLoadIdentityCHROMIUM@4 @321
|
||||
glGenPathsCHROMIUM@4 @322
|
||||
glDeletePathsCHROMIUM@8 @323
|
||||
glIsPathCHROMIUM@4 @324
|
||||
glPathCommandsCHROMIUM@24 @325
|
||||
glPathParameterfCHROMIUM@12 @326
|
||||
glPathParameteriCHROMIUM@12 @327
|
||||
glGetPathParameterfvCHROMIUM@12 @328
|
||||
glGetPathParameterivCHROMIUM@12 @329
|
||||
glPathStencilFuncCHROMIUM@12 @330
|
||||
glStencilFillPathCHROMIUM@12 @331
|
||||
glStencilStrokePathCHROMIUM@12 @332
|
||||
glCoverFillPathCHROMIUM@8 @333
|
||||
glCoverStrokePathCHROMIUM@8 @334
|
||||
glStencilThenCoverFillPathCHROMIUM@16 @335
|
||||
glStencilThenCoverStrokePathCHROMIUM@16 @336
|
||||
glCoverFillPathInstancedCHROMIUM@28 @337
|
||||
glCoverStrokePathInstancedCHROMIUM@28 @338
|
||||
glStencilStrokePathInstancedCHROMIUM@32 @339
|
||||
glStencilFillPathInstancedCHROMIUM@32 @340
|
||||
glStencilThenCoverFillPathInstancedCHROMIUM@36 @341
|
||||
glStencilThenCoverStrokePathInstancedCHROMIUM@36 @342
|
||||
glBindFragmentInputLocationCHROMIUM@12 @343
|
||||
glProgramPathFragmentInputGenCHROMIUM@20 @344
|
||||
|
||||
glMatrixLoadfCHROMIUM @320
|
||||
glMatrixLoadIdentityCHROMIUM @321
|
||||
glGenPathsCHROMIUM @322
|
||||
glDeletePathsCHROMIUM @323
|
||||
glIsPathCHROMIUM @324
|
||||
glPathCommandsCHROMIUM @325
|
||||
glPathParameterfCHROMIUM @326
|
||||
glPathParameteriCHROMIUM @327
|
||||
glGetPathParameterfvCHROMIUM @328
|
||||
glGetPathParameterivCHROMIUM @329
|
||||
glPathStencilFuncCHROMIUM @330
|
||||
glStencilFillPathCHROMIUM @331
|
||||
glStencilStrokePathCHROMIUM @332
|
||||
glCoverFillPathCHROMIUM @333
|
||||
glCoverStrokePathCHROMIUM @334
|
||||
glStencilThenCoverFillPathCHROMIUM @335
|
||||
glStencilThenCoverStrokePathCHROMIUM @336
|
||||
glCoverFillPathInstancedCHROMIUM @337
|
||||
glCoverStrokePathInstancedCHROMIUM @338
|
||||
glStencilStrokePathInstancedCHROMIUM @339
|
||||
glStencilFillPathInstancedCHROMIUM @340
|
||||
glStencilThenCoverFillPathInstancedCHROMIUM @341
|
||||
glStencilThenCoverStrokePathInstancedCHROMIUM @342
|
||||
glBindFragmentInputLocationCHROMIUM @343
|
||||
glProgramPathFragmentInputGenCHROMIUM @344
|
||||
|
||||
glFramebufferTextureMultiviewLayeredANGLE @413
|
||||
glFramebufferTextureMultiviewSideBySideANGLE @414
|
||||
glRequestExtensionANGLE @415
|
||||
glFramebufferTextureMultiviewLayeredANGLE@24 @413
|
||||
glFramebufferTextureMultiviewSideBySideANGLE@24 @414
|
||||
glRequestExtensionANGLE@4 @415
|
||||
|
||||
; GLES 3.0 Functions
|
||||
glReadBuffer @180
|
||||
glDrawRangeElements @181
|
||||
glTexImage3D @182
|
||||
glTexSubImage3D @183
|
||||
glCopyTexSubImage3D @184
|
||||
glCompressedTexImage3D @185
|
||||
glCompressedTexSubImage3D @186
|
||||
glGenQueries @187
|
||||
glDeleteQueries @188
|
||||
glIsQuery @189
|
||||
glBeginQuery @190
|
||||
glEndQuery @191
|
||||
glGetQueryiv @192
|
||||
glGetQueryObjectuiv @193
|
||||
glUnmapBuffer @194
|
||||
glGetBufferPointerv @195
|
||||
glDrawBuffers @196
|
||||
glUniformMatrix2x3fv @197
|
||||
glUniformMatrix3x2fv @198
|
||||
glUniformMatrix2x4fv @199
|
||||
glUniformMatrix4x2fv @200
|
||||
glUniformMatrix3x4fv @201
|
||||
glUniformMatrix4x3fv @202
|
||||
glBlitFramebuffer @203
|
||||
glRenderbufferStorageMultisample @204
|
||||
glFramebufferTextureLayer @205
|
||||
glMapBufferRange @206
|
||||
glFlushMappedBufferRange @207
|
||||
glBindVertexArray @208
|
||||
glDeleteVertexArrays @209
|
||||
glGenVertexArrays @210
|
||||
glIsVertexArray @211
|
||||
glGetIntegeri_v @212
|
||||
glBeginTransformFeedback @213
|
||||
glEndTransformFeedback @214
|
||||
glBindBufferRange @215
|
||||
glBindBufferBase @216
|
||||
glTransformFeedbackVaryings @217
|
||||
glGetTransformFeedbackVarying @218
|
||||
glVertexAttribIPointer @219
|
||||
glGetVertexAttribIiv @220
|
||||
glGetVertexAttribIuiv @221
|
||||
glVertexAttribI4i @222
|
||||
glVertexAttribI4ui @223
|
||||
glVertexAttribI4iv @224
|
||||
glVertexAttribI4uiv @225
|
||||
glGetUniformuiv @226
|
||||
glGetFragDataLocation @227
|
||||
glUniform1ui @228
|
||||
glUniform2ui @229
|
||||
glUniform3ui @230
|
||||
glUniform4ui @231
|
||||
glUniform1uiv @232
|
||||
glUniform2uiv @233
|
||||
glUniform3uiv @234
|
||||
glUniform4uiv @235
|
||||
glClearBufferiv @236
|
||||
glClearBufferuiv @237
|
||||
glClearBufferfv @238
|
||||
glClearBufferfi @239
|
||||
glGetStringi @240
|
||||
glCopyBufferSubData @241
|
||||
glGetUniformIndices @242
|
||||
glGetActiveUniformsiv @243
|
||||
glGetUniformBlockIndex @244
|
||||
glGetActiveUniformBlockiv @245
|
||||
glGetActiveUniformBlockName @246
|
||||
glUniformBlockBinding @247
|
||||
glDrawArraysInstanced @248
|
||||
glDrawElementsInstanced @249
|
||||
glFenceSync @250
|
||||
glIsSync @251
|
||||
glDeleteSync @252
|
||||
glClientWaitSync @253
|
||||
glWaitSync @254
|
||||
glGetInteger64v @255
|
||||
glGetSynciv @256
|
||||
glGetInteger64i_v @257
|
||||
glGetBufferParameteri64v @258
|
||||
glGenSamplers @259
|
||||
glDeleteSamplers @260
|
||||
glIsSampler @261
|
||||
glBindSampler @262
|
||||
glSamplerParameteri @263
|
||||
glSamplerParameteriv @264
|
||||
glSamplerParameterf @265
|
||||
glSamplerParameterfv @266
|
||||
glGetSamplerParameteriv @267
|
||||
glGetSamplerParameterfv @268
|
||||
glVertexAttribDivisor @269
|
||||
glBindTransformFeedback @270
|
||||
glDeleteTransformFeedbacks @271
|
||||
glGenTransformFeedbacks @272
|
||||
glIsTransformFeedback @273
|
||||
glPauseTransformFeedback @274
|
||||
glResumeTransformFeedback @275
|
||||
glGetProgramBinary @276
|
||||
glProgramBinary @277
|
||||
glProgramParameteri @278
|
||||
glInvalidateFramebuffer @279
|
||||
glInvalidateSubFramebuffer @280
|
||||
glTexStorage2D @281
|
||||
glTexStorage3D @282
|
||||
glGetInternalformativ @283
|
||||
glReadBuffer@4 @180
|
||||
glDrawRangeElements@24 @181
|
||||
glTexImage3D@40 @182
|
||||
glTexSubImage3D@44 @183
|
||||
glCopyTexSubImage3D@36 @184
|
||||
glCompressedTexImage3D@36 @185
|
||||
glCompressedTexSubImage3D@44 @186
|
||||
glGenQueries@8 @187
|
||||
glDeleteQueries@8 @188
|
||||
glIsQuery@4 @189
|
||||
glBeginQuery@8 @190
|
||||
glEndQuery@4 @191
|
||||
glGetQueryiv@12 @192
|
||||
glGetQueryObjectuiv@12 @193
|
||||
glUnmapBuffer@4 @194
|
||||
glGetBufferPointerv@12 @195
|
||||
glDrawBuffers@8 @196
|
||||
glUniformMatrix2x3fv@16 @197
|
||||
glUniformMatrix3x2fv@16 @198
|
||||
glUniformMatrix2x4fv@16 @199
|
||||
glUniformMatrix4x2fv@16 @200
|
||||
glUniformMatrix3x4fv@16 @201
|
||||
glUniformMatrix4x3fv@16 @202
|
||||
glBlitFramebuffer@40 @203
|
||||
glRenderbufferStorageMultisample@20 @204
|
||||
glFramebufferTextureLayer@20 @205
|
||||
glMapBufferRange@16 @206
|
||||
glFlushMappedBufferRange@12 @207
|
||||
glBindVertexArray@4 @208
|
||||
glDeleteVertexArrays@8 @209
|
||||
glGenVertexArrays@8 @210
|
||||
glIsVertexArray@4 @211
|
||||
glGetIntegeri_v@12 @212
|
||||
glBeginTransformFeedback@4 @213
|
||||
glEndTransformFeedback@0 @214
|
||||
glBindBufferRange@20 @215
|
||||
glBindBufferBase@12 @216
|
||||
glTransformFeedbackVaryings@16 @217
|
||||
glGetTransformFeedbackVarying@28 @218
|
||||
glVertexAttribIPointer@20 @219
|
||||
glGetVertexAttribIiv@12 @220
|
||||
glGetVertexAttribIuiv@12 @221
|
||||
glVertexAttribI4i@20 @222
|
||||
glVertexAttribI4ui@20 @223
|
||||
glVertexAttribI4iv@8 @224
|
||||
glVertexAttribI4uiv@8 @225
|
||||
glGetUniformuiv@12 @226
|
||||
glGetFragDataLocation@8 @227
|
||||
glUniform1ui@8 @228
|
||||
glUniform2ui@12 @229
|
||||
glUniform3ui@16 @230
|
||||
glUniform4ui@20 @231
|
||||
glUniform1uiv@12 @232
|
||||
glUniform2uiv@12 @233
|
||||
glUniform3uiv@12 @234
|
||||
glUniform4uiv@12 @235
|
||||
glClearBufferiv@12 @236
|
||||
glClearBufferuiv@12 @237
|
||||
glClearBufferfv@12 @238
|
||||
glClearBufferfi@16 @239
|
||||
glGetStringi@8 @240
|
||||
glCopyBufferSubData@20 @241
|
||||
glGetUniformIndices@16 @242
|
||||
glGetActiveUniformsiv@20 @243
|
||||
glGetUniformBlockIndex@8 @244
|
||||
glGetActiveUniformBlockiv@16 @245
|
||||
glGetActiveUniformBlockName@20 @246
|
||||
glUniformBlockBinding@12 @247
|
||||
glDrawArraysInstanced@16 @248
|
||||
glDrawElementsInstanced@20 @249
|
||||
glFenceSync@8 @250
|
||||
glIsSync@4 @251
|
||||
glDeleteSync@4 @252
|
||||
glClientWaitSync@16 @253
|
||||
glWaitSync@16 @254
|
||||
glGetInteger64v@8 @255
|
||||
glGetSynciv@20 @256
|
||||
glGetInteger64i_v@12 @257
|
||||
glGetBufferParameteri64v@12 @258
|
||||
glGenSamplers@8 @259
|
||||
glDeleteSamplers@8 @260
|
||||
glIsSampler@4 @261
|
||||
glBindSampler@8 @262
|
||||
glSamplerParameteri@12 @263
|
||||
glSamplerParameteriv@12 @264
|
||||
glSamplerParameterf@12 @265
|
||||
glSamplerParameterfv@12 @266
|
||||
glGetSamplerParameteriv@12 @267
|
||||
glGetSamplerParameterfv@12 @268
|
||||
glVertexAttribDivisor@8 @269
|
||||
glBindTransformFeedback@8 @270
|
||||
glDeleteTransformFeedbacks@8 @271
|
||||
glGenTransformFeedbacks@8 @272
|
||||
glIsTransformFeedback@4 @273
|
||||
glPauseTransformFeedback@0 @274
|
||||
glResumeTransformFeedback@0 @275
|
||||
glGetProgramBinary@20 @276
|
||||
glProgramBinary@16 @277
|
||||
glProgramParameteri@12 @278
|
||||
glInvalidateFramebuffer@12 @279
|
||||
glInvalidateSubFramebuffer@28 @280
|
||||
glTexStorage2D@20 @281
|
||||
glTexStorage3D@24 @282
|
||||
glGetInternalformativ@20 @283
|
||||
|
||||
; GLES 3.1 Functions
|
||||
glDispatchCompute @345
|
||||
glDispatchComputeIndirect @346
|
||||
glDrawArraysIndirect @347
|
||||
glDrawElementsIndirect @348
|
||||
glFramebufferParameteri @349
|
||||
glGetFramebufferParameteriv @350
|
||||
glGetProgramInterfaceiv @351
|
||||
glGetProgramResourceIndex @352
|
||||
glGetProgramResourceName @353
|
||||
glGetProgramResourceiv @354
|
||||
glGetProgramResourceLocation @355
|
||||
glUseProgramStages @356
|
||||
glActiveShaderProgram @357
|
||||
glCreateShaderProgramv @358
|
||||
glBindProgramPipeline @359
|
||||
glDeleteProgramPipelines @360
|
||||
glGenProgramPipelines @361
|
||||
glIsProgramPipeline @362
|
||||
glGetProgramPipelineiv @363
|
||||
glProgramUniform1i @364
|
||||
glProgramUniform2i @365
|
||||
glProgramUniform3i @366
|
||||
glProgramUniform4i @367
|
||||
glProgramUniform1ui @368
|
||||
glProgramUniform2ui @369
|
||||
glProgramUniform3ui @370
|
||||
glProgramUniform4ui @371
|
||||
glProgramUniform1f @372
|
||||
glProgramUniform2f @373
|
||||
glProgramUniform3f @374
|
||||
glProgramUniform4f @375
|
||||
glProgramUniform1iv @376
|
||||
glProgramUniform2iv @377
|
||||
glProgramUniform3iv @378
|
||||
glProgramUniform4iv @379
|
||||
glProgramUniform1uiv @380
|
||||
glProgramUniform2uiv @381
|
||||
glProgramUniform3uiv @382
|
||||
glProgramUniform4uiv @383
|
||||
glProgramUniform1fv @384
|
||||
glProgramUniform2fv @385
|
||||
glProgramUniform3fv @386
|
||||
glProgramUniform4fv @387
|
||||
glProgramUniformMatrix2fv @388
|
||||
glProgramUniformMatrix3fv @389
|
||||
glProgramUniformMatrix4fv @390
|
||||
glProgramUniformMatrix2x3fv @391
|
||||
glProgramUniformMatrix3x2fv @392
|
||||
glProgramUniformMatrix2x4fv @393
|
||||
glProgramUniformMatrix4x2fv @394
|
||||
glProgramUniformMatrix3x4fv @395
|
||||
glProgramUniformMatrix4x3fv @396
|
||||
glValidateProgramPipeline @397
|
||||
glGetProgramPipelineInfoLog @398
|
||||
glBindImageTexture @399
|
||||
glGetBooleani_v @400
|
||||
glMemoryBarrier @401
|
||||
glMemoryBarrierByRegion @402
|
||||
glTexStorage2DMultisample @403
|
||||
glGetMultisamplefv @404
|
||||
glSampleMaski @405
|
||||
glGetTexLevelParameteriv @406
|
||||
glGetTexLevelParameterfv @407
|
||||
glBindVertexBuffer @408
|
||||
glVertexAttribFormat @409
|
||||
glVertexAttribIFormat @410
|
||||
glVertexAttribBinding @411
|
||||
glVertexBindingDivisor @412
|
||||
glDispatchCompute@12 @345
|
||||
glDispatchComputeIndirect@4 @346
|
||||
glDrawArraysIndirect@8 @347
|
||||
glDrawElementsIndirect@12 @348
|
||||
glFramebufferParameteri@12 @349
|
||||
glGetFramebufferParameteriv@12 @350
|
||||
glGetProgramInterfaceiv@16 @351
|
||||
glGetProgramResourceIndex@12 @352
|
||||
glGetProgramResourceName@24 @353
|
||||
glGetProgramResourceiv@32 @354
|
||||
glGetProgramResourceLocation@12 @355
|
||||
glUseProgramStages@12 @356
|
||||
glActiveShaderProgram@8 @357
|
||||
glCreateShaderProgramv@12 @358
|
||||
glBindProgramPipeline@4 @359
|
||||
glDeleteProgramPipelines@8 @360
|
||||
glGenProgramPipelines@8 @361
|
||||
glIsProgramPipeline@4 @362
|
||||
glGetProgramPipelineiv@12 @363
|
||||
glProgramUniform1i@12 @364
|
||||
glProgramUniform2i@16 @365
|
||||
glProgramUniform3i@20 @366
|
||||
glProgramUniform4i@24 @367
|
||||
glProgramUniform1ui@12 @368
|
||||
glProgramUniform2ui@16 @369
|
||||
glProgramUniform3ui@20 @370
|
||||
glProgramUniform4ui@24 @371
|
||||
glProgramUniform1f@12 @372
|
||||
glProgramUniform2f@16 @373
|
||||
glProgramUniform3f@20 @374
|
||||
glProgramUniform4f@24 @375
|
||||
glProgramUniform1iv@16 @376
|
||||
glProgramUniform2iv@16 @377
|
||||
glProgramUniform3iv@16 @378
|
||||
glProgramUniform4iv@16 @379
|
||||
glProgramUniform1uiv@16 @380
|
||||
glProgramUniform2uiv@16 @381
|
||||
glProgramUniform3uiv@16 @382
|
||||
glProgramUniform4uiv@16 @383
|
||||
glProgramUniform1fv@16 @384
|
||||
glProgramUniform2fv@16 @385
|
||||
glProgramUniform3fv@16 @386
|
||||
glProgramUniform4fv@16 @387
|
||||
glProgramUniformMatrix2fv@20 @388
|
||||
glProgramUniformMatrix3fv@20 @389
|
||||
glProgramUniformMatrix4fv@20 @390
|
||||
glProgramUniformMatrix2x3fv@20 @391
|
||||
glProgramUniformMatrix3x2fv@20 @392
|
||||
glProgramUniformMatrix2x4fv@20 @393
|
||||
glProgramUniformMatrix4x2fv@20 @394
|
||||
glProgramUniformMatrix3x4fv@20 @395
|
||||
glProgramUniformMatrix4x3fv@20 @396
|
||||
glValidateProgramPipeline@4 @397
|
||||
glGetProgramPipelineInfoLog@16 @398
|
||||
glBindImageTexture@28 @399
|
||||
glGetBooleani_v@12 @400
|
||||
glMemoryBarrier@4 @401
|
||||
glMemoryBarrierByRegion@4 @402
|
||||
glTexStorage2DMultisample@24 @403
|
||||
glGetMultisamplefv@12 @404
|
||||
glSampleMaski@8 @405
|
||||
glGetTexLevelParameteriv@16 @406
|
||||
glGetTexLevelParameterfv@16 @407
|
||||
glBindVertexBuffer@16 @408
|
||||
glVertexAttribFormat@20 @409
|
||||
glVertexAttribIFormat@16 @410
|
||||
glVertexAttribBinding@8 @411
|
||||
glVertexBindingDivisor@8 @412
|
||||
|
4
src/3rdparty/sqlite/qt_attribution.json
vendored
4
src/3rdparty/sqlite/qt_attribution.json
vendored
@ -6,8 +6,8 @@
|
||||
|
||||
"Description": "SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.",
|
||||
"Homepage": "https://www.sqlite.org/",
|
||||
"Version": "3.27.1",
|
||||
"DownloadLocation": "https://www.sqlite.org/2018/sqlite-amalgamation-3270100.zip",
|
||||
"Version": "3.28.0",
|
||||
"DownloadLocation": "https://www.sqlite.org/2019/sqlite-amalgamation-3280000.zip",
|
||||
"License": "Public Domain",
|
||||
"Copyright": "The authors disclaim copyright to the source code. However, a license can be obtained if needed."
|
||||
}
|
||||
|
8745
src/3rdparty/sqlite/sqlite3.c
vendored
8745
src/3rdparty/sqlite/sqlite3.c
vendored
File diff suppressed because it is too large
Load Diff
61
src/3rdparty/sqlite/sqlite3.h
vendored
61
src/3rdparty/sqlite/sqlite3.h
vendored
@ -123,9 +123,9 @@ extern "C" {
|
||||
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
||||
** [sqlite_version()] and [sqlite_source_id()].
|
||||
*/
|
||||
#define SQLITE_VERSION "3.27.1"
|
||||
#define SQLITE_VERSION_NUMBER 3027001
|
||||
#define SQLITE_SOURCE_ID "2019-02-08 13:17:39 0eca3dd3d38b31c92b49ca2d311128b74584714d9e7de895b1a6286ef959a1dd"
|
||||
#define SQLITE_VERSION "3.28.0"
|
||||
#define SQLITE_VERSION_NUMBER 3028000
|
||||
#define SQLITE_SOURCE_ID "2019-04-16 19:49:53 884b4b7e502b4e991677b53971277adfaf0a04a284f8e483e2553d0f83156b50"
|
||||
|
||||
/*
|
||||
** CAPI3REF: Run-Time Library Version Numbers
|
||||
@ -189,6 +189,9 @@ SQLITE_API int sqlite3_libversion_number(void);
|
||||
#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
|
||||
SQLITE_API int sqlite3_compileoption_used(const char *zOptName);
|
||||
SQLITE_API const char *sqlite3_compileoption_get(int N);
|
||||
#else
|
||||
# define sqlite3_compileoption_used(X) 0
|
||||
# define sqlite3_compileoption_get(X) ((void*)0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -2086,8 +2089,8 @@ struct sqlite3_mem_methods {
|
||||
**
|
||||
** [[SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER]]
|
||||
** <dt>SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</dt>
|
||||
** <dd> ^This option is used to enable or disable the two-argument
|
||||
** version of the [fts3_tokenizer()] function which is part of the
|
||||
** <dd> ^This option is used to enable or disable the
|
||||
** [fts3_tokenizer()] function which is part of the
|
||||
** [FTS3] full-text search engine extension.
|
||||
** There should be two additional arguments.
|
||||
** The first argument is an integer which is 0 to disable fts3_tokenizer() or
|
||||
@ -2199,6 +2202,17 @@ struct sqlite3_mem_methods {
|
||||
** <li> Direct writes to [shadow tables].
|
||||
** </ul>
|
||||
** </dd>
|
||||
**
|
||||
** [[SQLITE_DBCONFIG_WRITABLE_SCHEMA]] <dt>SQLITE_DBCONFIG_WRITABLE_SCHEMA</dt>
|
||||
** <dd>The SQLITE_DBCONFIG_WRITABLE_SCHEMA option activates or deactivates the
|
||||
** "writable_schema" flag. This has the same effect and is logically equivalent
|
||||
** to setting [PRAGMA writable_schema=ON] or [PRAGMA writable_schema=OFF].
|
||||
** The first argument to this setting is an integer which is 0 to disable
|
||||
** the writable_schema, positive to enable writable_schema, or negative to
|
||||
** leave the setting unchanged. The second parameter is a pointer to an
|
||||
** integer into which is written 0 or 1 to indicate whether the writable_schema
|
||||
** is enabled or disabled following this call.
|
||||
** </dd>
|
||||
** </dl>
|
||||
*/
|
||||
#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
|
||||
@ -2212,7 +2226,8 @@ struct sqlite3_mem_methods {
|
||||
#define SQLITE_DBCONFIG_TRIGGER_EQP 1008 /* int int* */
|
||||
#define SQLITE_DBCONFIG_RESET_DATABASE 1009 /* int int* */
|
||||
#define SQLITE_DBCONFIG_DEFENSIVE 1010 /* int int* */
|
||||
#define SQLITE_DBCONFIG_MAX 1010 /* Largest DBCONFIG */
|
||||
#define SQLITE_DBCONFIG_WRITABLE_SCHEMA 1011 /* int int* */
|
||||
#define SQLITE_DBCONFIG_MAX 1011 /* Largest DBCONFIG */
|
||||
|
||||
/*
|
||||
** CAPI3REF: Enable Or Disable Extended Result Codes
|
||||
@ -2369,7 +2384,7 @@ SQLITE_API int sqlite3_changes(sqlite3*);
|
||||
** not. ^Changes to a view that are intercepted by INSTEAD OF triggers
|
||||
** are not counted.
|
||||
**
|
||||
** This the [sqlite3_total_changes(D)] interface only reports the number
|
||||
** The [sqlite3_total_changes(D)] interface only reports the number
|
||||
** of rows that changed due to SQL statement run against database
|
||||
** connection D. Any changes by other database connections are ignored.
|
||||
** To detect changes against a database file from other database
|
||||
@ -3894,6 +3909,18 @@ SQLITE_API const char *sqlite3_normalized_sql(sqlite3_stmt *pStmt);
|
||||
*/
|
||||
SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Query The EXPLAIN Setting For A Prepared Statement
|
||||
** METHOD: sqlite3_stmt
|
||||
**
|
||||
** ^The sqlite3_stmt_isexplain(S) interface returns 1 if the
|
||||
** prepared statement S is an EXPLAIN statement, or 2 if the
|
||||
** statement S is an EXPLAIN QUERY PLAN.
|
||||
** ^The sqlite3_stmt_isexplain(S) interface returns 0 if S is
|
||||
** an ordinary statement or a NULL pointer.
|
||||
*/
|
||||
SQLITE_API int sqlite3_stmt_isexplain(sqlite3_stmt *pStmt);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Determine If A Prepared Statement Has Been Reset
|
||||
** METHOD: sqlite3_stmt
|
||||
@ -4033,7 +4060,9 @@ typedef struct sqlite3_context sqlite3_context;
|
||||
** ^The fifth argument to the BLOB and string binding interfaces
|
||||
** is a destructor used to dispose of the BLOB or
|
||||
** string after SQLite has finished with it. ^The destructor is called
|
||||
** to dispose of the BLOB or string even if the call to bind API fails.
|
||||
** to dispose of the BLOB or string even if the call to the bind API fails,
|
||||
** except the destructor is not called if the third parameter is a NULL
|
||||
** pointer or the fourth parameter is negative.
|
||||
** ^If the fifth argument is
|
||||
** the special value [SQLITE_STATIC], then SQLite assumes that the
|
||||
** information is in static, unmanaged space and does not need to be freed.
|
||||
@ -4950,6 +4979,8 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
|
||||
** <tr><td><b>sqlite3_value_nochange </b>
|
||||
** <td>→ <td>True if the column is unchanged in an UPDATE
|
||||
** against a virtual table.
|
||||
** <tr><td><b>sqlite3_value_frombind </b>
|
||||
** <td>→ <td>True if value originated from a [bound parameter]
|
||||
** </table></blockquote>
|
||||
**
|
||||
** <b>Details:</b>
|
||||
@ -5011,6 +5042,11 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
|
||||
** than within an [xUpdate] method call for an UPDATE statement, then
|
||||
** the return value is arbitrary and meaningless.
|
||||
**
|
||||
** ^The sqlite3_value_frombind(X) interface returns non-zero if the
|
||||
** value X originated from one of the [sqlite3_bind_int|sqlite3_bind()]
|
||||
** interfaces. ^If X comes from an SQL literal value, or a table column,
|
||||
** and expression, then sqlite3_value_frombind(X) returns zero.
|
||||
**
|
||||
** Please pay particular attention to the fact that the pointer returned
|
||||
** from [sqlite3_value_blob()], [sqlite3_value_text()], or
|
||||
** [sqlite3_value_text16()] can be invalidated by a subsequent call to
|
||||
@ -5056,6 +5092,7 @@ SQLITE_API int sqlite3_value_bytes16(sqlite3_value*);
|
||||
SQLITE_API int sqlite3_value_type(sqlite3_value*);
|
||||
SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
|
||||
SQLITE_API int sqlite3_value_nochange(sqlite3_value*);
|
||||
SQLITE_API int sqlite3_value_frombind(sqlite3_value*);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Finding The Subtype Of SQL Values
|
||||
@ -5791,7 +5828,7 @@ SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
|
||||
** associated with database N of connection D. ^The main database file
|
||||
** has the name "main". If there is no attached database N on the database
|
||||
** connection D, or if database N is a temporary or in-memory database, then
|
||||
** a NULL pointer is returned.
|
||||
** this function will return either a NULL pointer or an empty string.
|
||||
**
|
||||
** ^The filename returned by this function is the output of the
|
||||
** xFullPathname method of the [VFS]. ^In other words, the filename
|
||||
@ -10892,7 +10929,7 @@ SQLITE_API int sqlite3rebaser_configure(
|
||||
** in size. This function allocates and populates a buffer with a copy
|
||||
** of the changeset rebased rebased according to the configuration of the
|
||||
** rebaser object passed as the first argument. If successful, (*ppOut)
|
||||
** is set to point to the new buffer containing the rebased changset and
|
||||
** is set to point to the new buffer containing the rebased changeset and
|
||||
** (*pnOut) to its size in bytes and SQLITE_OK returned. It is the
|
||||
** responsibility of the caller to eventually free the new buffer using
|
||||
** sqlite3_free(). Otherwise, if an error occurs, (*ppOut) and (*pnOut)
|
||||
@ -11301,7 +11338,7 @@ struct Fts5PhraseIter {
|
||||
** Save the pointer passed as the second argument as the extension functions
|
||||
** "auxiliary data". The pointer may then be retrieved by the current or any
|
||||
** future invocation of the same fts5 extension function made as part of
|
||||
** of the same MATCH query using the xGetAuxdata() API.
|
||||
** the same MATCH query using the xGetAuxdata() API.
|
||||
**
|
||||
** Each extension function is allocated a single auxiliary data slot for
|
||||
** each FTS query (MATCH expression). If the extension function is invoked
|
||||
@ -11316,7 +11353,7 @@ struct Fts5PhraseIter {
|
||||
** The xDelete callback, if one is specified, is also invoked on the
|
||||
** auxiliary data pointer after the FTS5 query has finished.
|
||||
**
|
||||
** If an error (e.g. an OOM condition) occurs within this function, an
|
||||
** If an error (e.g. an OOM condition) occurs within this function,
|
||||
** the auxiliary data is set to NULL and an error code returned. If the
|
||||
** xDelete parameter was not NULL, it is invoked on the auxiliary data
|
||||
** pointer before returning.
|
||||
|
@ -44,7 +44,7 @@ android {
|
||||
java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java']
|
||||
aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl']
|
||||
res.srcDirs = [qt5AndroidDir + '/res', 'res']
|
||||
resources.srcDirs = ['src']
|
||||
resources.srcDirs = ['resources']
|
||||
renderscript.srcDirs = ['src']
|
||||
assets.srcDirs = ['assets']
|
||||
jniLibs.srcDirs = ['libs']
|
||||
|
@ -206,9 +206,9 @@ public:
|
||||
bool shouldStartThread() override
|
||||
{
|
||||
if (forIteration)
|
||||
return (currentIndex.load() < iterationCount) && !this->shouldThrottleThread();
|
||||
return (currentIndex.loadRelaxed() < iterationCount) && !this->shouldThrottleThread();
|
||||
else // whileIteration
|
||||
return (iteratorThreads.load() == 0);
|
||||
return (iteratorThreads.loadRelaxed() == 0);
|
||||
}
|
||||
|
||||
ThreadFunctionResult threadFunction() override
|
||||
@ -230,7 +230,7 @@ public:
|
||||
|
||||
const int currentBlockSize = blockSizeManager.blockSize();
|
||||
|
||||
if (currentIndex.load() >= iterationCount)
|
||||
if (currentIndex.loadRelaxed() >= iterationCount)
|
||||
break;
|
||||
|
||||
// Atomically reserve a block of iterationCount for this thread.
|
||||
@ -261,7 +261,7 @@ public:
|
||||
// Report progress if progress reporting enabled.
|
||||
if (progressReportingEnabled) {
|
||||
completed.fetchAndAddAcquire(finalBlockSize);
|
||||
this->setProgressValue(this->completed.load());
|
||||
this->setProgressValue(this->completed.loadRelaxed());
|
||||
}
|
||||
|
||||
if (this->shouldThrottleThread())
|
||||
|
@ -138,10 +138,10 @@
|
||||
T is the same type as the return value of \a function. Non-void return
|
||||
values can be accessed via the QFuture::result() function.
|
||||
|
||||
Note that the QFuture returned by QtConcurrent::run() does not support
|
||||
canceling, pausing, or progress reporting. The QFuture returned can only
|
||||
be used to query for the running/finished status and the return value of
|
||||
the function.
|
||||
\note The QFuture returned can only be used to query for the
|
||||
running/finished status and the return value of the function. In particular,
|
||||
canceling or pausing can be issued only if the computations behind the future
|
||||
has not been started.
|
||||
|
||||
\sa {Concurrent Run}
|
||||
*/
|
||||
@ -157,10 +157,10 @@
|
||||
T is the same type as the return value of \a function. Non-void return
|
||||
values can be accessed via the QFuture::result() function.
|
||||
|
||||
Note that the QFuture returned by QtConcurrent::run() does not support
|
||||
canceling, pausing, or progress reporting. The QFuture returned can only
|
||||
be used to query for the running/finished status and the return value of
|
||||
the function.
|
||||
\note The QFuture returned can only be used to query for the
|
||||
running/finished status and the return value of the function. In particular,
|
||||
canceling or pausing can be issued only if the computations behind the future
|
||||
has not been started.
|
||||
|
||||
\sa {Concurrent Run}
|
||||
*/
|
||||
|
@ -91,7 +91,7 @@ ThreadEngineBarrier::ThreadEngineBarrier()
|
||||
void ThreadEngineBarrier::acquire()
|
||||
{
|
||||
forever {
|
||||
int localCount = count.load();
|
||||
int localCount = count.loadRelaxed();
|
||||
if (localCount < 0) {
|
||||
if (count.testAndSetOrdered(localCount, localCount -1))
|
||||
return;
|
||||
@ -105,7 +105,7 @@ void ThreadEngineBarrier::acquire()
|
||||
int ThreadEngineBarrier::release()
|
||||
{
|
||||
forever {
|
||||
int localCount = count.load();
|
||||
int localCount = count.loadRelaxed();
|
||||
if (localCount == -1) {
|
||||
if (count.testAndSetOrdered(-1, 0)) {
|
||||
semaphore.release();
|
||||
@ -125,7 +125,7 @@ int ThreadEngineBarrier::release()
|
||||
void ThreadEngineBarrier::wait()
|
||||
{
|
||||
forever {
|
||||
int localCount = count.load();
|
||||
int localCount = count.loadRelaxed();
|
||||
if (localCount == 0)
|
||||
return;
|
||||
|
||||
@ -139,7 +139,7 @@ void ThreadEngineBarrier::wait()
|
||||
|
||||
int ThreadEngineBarrier::currentCount()
|
||||
{
|
||||
return count.load();
|
||||
return count.loadRelaxed();
|
||||
}
|
||||
|
||||
// releases a thread, unless this is the last thread.
|
||||
@ -147,7 +147,7 @@ int ThreadEngineBarrier::currentCount()
|
||||
bool ThreadEngineBarrier::releaseUnlessLast()
|
||||
{
|
||||
forever {
|
||||
int localCount = count.load();
|
||||
int localCount = count.loadRelaxed();
|
||||
if (qAbs(localCount) == 1) {
|
||||
return false;
|
||||
} else if (localCount < 0) {
|
||||
|
@ -296,6 +296,9 @@ endfunction()
|
||||
# qt5_add_big_resources(outfiles inputfile ... )
|
||||
|
||||
function(QT5_ADD_BIG_RESOURCES outfiles )
|
||||
if (CMAKE_VERSION VERSION_LESS 3.9)
|
||||
message(FATAL_ERROR, "qt5_add_big_resources requires CMake 3.9 or newer")
|
||||
endif()
|
||||
|
||||
set(options)
|
||||
set(oneValueArgs)
|
||||
@ -326,6 +329,8 @@ function(QT5_ADD_BIG_RESOURCES outfiles )
|
||||
set_target_properties(rcc_object_${outfilename} PROPERTIES AUTOMOC OFF)
|
||||
set_target_properties(rcc_object_${outfilename} PROPERTIES AUTOUIC OFF)
|
||||
add_dependencies(rcc_object_${outfilename} big_resources_${outfilename})
|
||||
# The modification of TARGET_OBJECTS needs the following change in cmake
|
||||
# https://gitlab.kitware.com/cmake/cmake/commit/93c89bc75ceee599ba7c08b8fe1ac5104942054f
|
||||
add_custom_command(OUTPUT ${outfile}
|
||||
COMMAND ${Qt5Core_RCC_EXECUTABLE}
|
||||
ARGS ${rcc_options} --name ${outfilename} --pass 2 --temp $<TARGET_OBJECTS:rcc_object_${outfilename}> --output ${outfile} ${infile}
|
||||
|
@ -1063,10 +1063,12 @@ QAbstractAnimation::~QAbstractAnimation()
|
||||
if (d->state != Stopped) {
|
||||
QAbstractAnimation::State oldState = d->state;
|
||||
d->state = Stopped;
|
||||
emit stateChanged(oldState, d->state);
|
||||
emit stateChanged(d->state, oldState);
|
||||
if (oldState == QAbstractAnimation::Running)
|
||||
QAnimationTimer::unregisterAnimation(this);
|
||||
}
|
||||
if (d->group)
|
||||
d->group->removeAnimation(this);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -113,6 +113,11 @@ QAnimationGroup::QAnimationGroup(QAnimationGroupPrivate &dd, QObject *parent)
|
||||
*/
|
||||
QAnimationGroup::~QAnimationGroup()
|
||||
{
|
||||
Q_D(QAnimationGroup);
|
||||
// We need to clear the animations now while we are still a valid QAnimationGroup.
|
||||
// If we wait until ~QObject() the QAbstractAnimation's pointer back to us would
|
||||
// point to a QObject, not a valid QAnimationGroup.
|
||||
d->clear(true);
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -256,7 +261,7 @@ QAbstractAnimation *QAnimationGroup::takeAnimation(int index)
|
||||
void QAnimationGroup::clear()
|
||||
{
|
||||
Q_D(QAnimationGroup);
|
||||
qDeleteAll(d->animations);
|
||||
d->clear(false);
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -284,6 +289,24 @@ bool QAnimationGroup::event(QEvent *event)
|
||||
return QAbstractAnimation::event(event);
|
||||
}
|
||||
|
||||
void QAnimationGroupPrivate::clear(bool onDestruction)
|
||||
{
|
||||
const QList<QAbstractAnimation *> animationsCopy = animations; // taking a copy
|
||||
animations.clear();
|
||||
// Clearing backwards so the indices doesn't change while we remove animations.
|
||||
for (int i = animationsCopy.count() - 1; i >= 0; --i) {
|
||||
QAbstractAnimation *animation = animationsCopy.at(i);
|
||||
animation->setParent(nullptr);
|
||||
QAbstractAnimationPrivate::get(animation)->group = nullptr;
|
||||
// If we are in ~QAnimationGroup() it is not safe to called the virtual
|
||||
// animationRemoved method, which can still be a method in a
|
||||
// QAnimationGroupPrivate derived class that assumes q_ptr is still
|
||||
// a valid derived class of QAnimationGroup.
|
||||
if (!onDestruction)
|
||||
animationRemoved(i, animation);
|
||||
delete animation;
|
||||
}
|
||||
}
|
||||
|
||||
void QAnimationGroupPrivate::animationRemoved(int index, QAbstractAnimation *)
|
||||
{
|
||||
|
@ -73,6 +73,8 @@ public:
|
||||
virtual void animationInsertedAt(int) { }
|
||||
virtual void animationRemoved(int, QAbstractAnimation *);
|
||||
|
||||
void clear(bool onDestruction);
|
||||
|
||||
void disconnectUncontrolledAnimation(QAbstractAnimation *anim)
|
||||
{
|
||||
//0 for the signal here because we might be called from the animation destructor
|
||||
|
@ -532,7 +532,8 @@ void QSequentialAnimationGroupPrivate::animationRemoved(int index, QAbstractAnim
|
||||
Q_Q(QSequentialAnimationGroup);
|
||||
QAnimationGroupPrivate::animationRemoved(index, anim);
|
||||
|
||||
Q_ASSERT(currentAnimation); // currentAnimation should always be set
|
||||
if (!currentAnimation)
|
||||
return;
|
||||
|
||||
if (actualDuration.size() > index)
|
||||
actualDuration.removeAt(index);
|
||||
|
@ -283,11 +283,11 @@ void QVariantAnimationPrivate::setCurrentValueForProgress(const qreal progress)
|
||||
qSwap(currentValue, ret);
|
||||
q->updateCurrentValue(currentValue);
|
||||
static QBasicAtomicInt changedSignalIndex = Q_BASIC_ATOMIC_INITIALIZER(0);
|
||||
if (!changedSignalIndex.load()) {
|
||||
if (!changedSignalIndex.loadRelaxed()) {
|
||||
//we keep the mask so that we emit valueChanged only when needed (for performance reasons)
|
||||
changedSignalIndex.testAndSetRelaxed(0, signalIndex("valueChanged(QVariant)"));
|
||||
}
|
||||
if (isSignalConnected(changedSignalIndex.load()) && currentValue != ret) {
|
||||
if (isSignalConnected(changedSignalIndex.loadRelaxed()) && currentValue != ret) {
|
||||
//the value has changed
|
||||
emit q->valueChanged(currentValue);
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ QLatin1Codec::~QLatin1Codec()
|
||||
|
||||
QString QLatin1Codec::convertToUnicode(const char *chars, int len, ConverterState *) const
|
||||
{
|
||||
if (chars == 0)
|
||||
if (chars == nullptr)
|
||||
return QString();
|
||||
|
||||
return QString::fromLatin1(chars, len);
|
||||
@ -104,7 +104,7 @@ QLatin15Codec::~QLatin15Codec()
|
||||
|
||||
QString QLatin15Codec::convertToUnicode(const char* chars, int len, ConverterState *) const
|
||||
{
|
||||
if (chars == 0)
|
||||
if (chars == nullptr)
|
||||
return QString();
|
||||
|
||||
QString str = QString::fromLatin1(chars, len);
|
||||
|
@ -610,7 +610,7 @@ QSimpleTextCodec::QSimpleTextCodec(int i) : forwardIndex(i), reverseMap(0)
|
||||
|
||||
QSimpleTextCodec::~QSimpleTextCodec()
|
||||
{
|
||||
delete reverseMap.load();
|
||||
delete reverseMap.loadAcquire();
|
||||
}
|
||||
|
||||
static QByteArray *buildReverseMap(int forwardIndex)
|
||||
@ -662,12 +662,12 @@ QByteArray QSimpleTextCodec::convertFromUnicode(const QChar *in, int length, Con
|
||||
const char replacement = (state && state->flags & ConvertInvalidToNull) ? 0 : '?';
|
||||
int invalid = 0;
|
||||
|
||||
QByteArray *rmap = reverseMap.load();
|
||||
QByteArray *rmap = reverseMap.loadAcquire();
|
||||
if (!rmap){
|
||||
rmap = buildReverseMap(this->forwardIndex);
|
||||
if (!reverseMap.testAndSetRelease(0, rmap)) {
|
||||
delete rmap;
|
||||
rmap = reverseMap.load();
|
||||
rmap = reverseMap.loadAcquire();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -159,7 +159,7 @@ static QTextCodec *setupLocaleMapper()
|
||||
{
|
||||
QCoreGlobalData *globalData = QCoreGlobalData::instance();
|
||||
|
||||
QTextCodec *locale = 0;
|
||||
QTextCodec *locale = nullptr;
|
||||
|
||||
{
|
||||
QMutexLocker locker(textCodecsMutex());
|
||||
@ -208,7 +208,7 @@ static QTextCodec *setupLocaleMapper()
|
||||
// First part is getting that locale name. First try setlocale() which
|
||||
// definitely knows it, but since we cannot fully trust it, get ready
|
||||
// to fall back to environment variables.
|
||||
const QByteArray ctype = setlocale(LC_CTYPE, 0);
|
||||
const QByteArray ctype = setlocale(LC_CTYPE, nullptr);
|
||||
|
||||
// Get the first nonempty value from $LC_ALL, $LC_CTYPE, and $LANG
|
||||
// environment variables.
|
||||
@ -532,13 +532,13 @@ QTextCodec::~QTextCodec()
|
||||
QTextCodec *QTextCodec::codecForName(const QByteArray &name)
|
||||
{
|
||||
if (name.isEmpty())
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
QMutexLocker locker(textCodecsMutex());
|
||||
|
||||
QCoreGlobalData *globalData = QCoreGlobalData::instance();
|
||||
if (!globalData)
|
||||
return 0;
|
||||
return nullptr;
|
||||
setup();
|
||||
|
||||
#if !QT_CONFIG(icu)
|
||||
@ -567,7 +567,7 @@ QTextCodec *QTextCodec::codecForName(const QByteArray &name)
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
#else
|
||||
return QIcuCodec::codecForNameUnlocked(name);
|
||||
#endif
|
||||
@ -585,7 +585,7 @@ QTextCodec* QTextCodec::codecForMib(int mib)
|
||||
|
||||
QCoreGlobalData *globalData = QCoreGlobalData::instance();
|
||||
if (!globalData)
|
||||
return 0;
|
||||
return nullptr;
|
||||
if (globalData->allCodecs.isEmpty())
|
||||
setup();
|
||||
|
||||
@ -611,7 +611,7 @@ QTextCodec* QTextCodec::codecForMib(int mib)
|
||||
#if QT_CONFIG(icu)
|
||||
return QIcuCodec::codecForMibUnlocked(mib);
|
||||
#else
|
||||
return 0;
|
||||
return nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -704,7 +704,7 @@ QTextCodec* QTextCodec::codecForLocale()
|
||||
{
|
||||
QCoreGlobalData *globalData = QCoreGlobalData::instance();
|
||||
if (!globalData)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
QTextCodec *codec = globalData->codecForLocale.loadAcquire();
|
||||
if (!codec) {
|
||||
@ -830,7 +830,7 @@ QTextEncoder* QTextCodec::makeEncoder(QTextCodec::ConversionFlags flags) const
|
||||
*/
|
||||
QByteArray QTextCodec::fromUnicode(const QString& str) const
|
||||
{
|
||||
return convertFromUnicode(str.constData(), str.length(), 0);
|
||||
return convertFromUnicode(str.constData(), str.length(), nullptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -863,7 +863,7 @@ QByteArray QTextCodec::fromUnicode(QStringView str) const
|
||||
*/
|
||||
QString QTextCodec::toUnicode(const QByteArray& a) const
|
||||
{
|
||||
return convertToUnicode(a.constData(), a.length(), 0);
|
||||
return convertToUnicode(a.constData(), a.length(), nullptr);
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -915,7 +915,7 @@ bool QTextCodec::canEncode(QStringView s) const
|
||||
QString QTextCodec::toUnicode(const char *chars) const
|
||||
{
|
||||
int len = qstrlen(chars);
|
||||
return convertToUnicode(chars, len, 0);
|
||||
return convertToUnicode(chars, len, nullptr);
|
||||
}
|
||||
|
||||
|
||||
@ -1110,7 +1110,7 @@ QString QTextDecoder::toUnicode(const QByteArray &ba)
|
||||
QTextCodec *QTextCodec::codecForHtml(const QByteArray &ba, QTextCodec *defaultCodec)
|
||||
{
|
||||
// determine charset
|
||||
QTextCodec *c = QTextCodec::codecForUtfText(ba, 0);
|
||||
QTextCodec *c = QTextCodec::codecForUtfText(ba, nullptr);
|
||||
if (!c) {
|
||||
static Q_RELAXED_CONSTEXPR auto matcher = qMakeStaticByteArrayMatcher("meta ");
|
||||
QByteArray header = ba.left(1024).toLower();
|
||||
|
@ -286,15 +286,11 @@ if (!invalidRe.isValid()) {
|
||||
|
||||
{
|
||||
//! [24]
|
||||
QRegularExpression re("^this pattern must match exactly$");
|
||||
//! [24]
|
||||
}
|
||||
|
||||
{
|
||||
//! [25]
|
||||
QString p("a .*|pattern");
|
||||
QRegularExpression re("\\A(?:" + p + ")\\z"); // re matches exactly the pattern string p
|
||||
//! [25]
|
||||
|
||||
// re matches exactly the pattern string p
|
||||
QRegularExpression re(QRegularExpression::anchoredPattern(p));
|
||||
//! [24]
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -131,6 +131,8 @@ files (\c .o, \c .obj) files instead of C++ source code. This allows to
|
||||
embed bigger resources, where compiling to C++ sources and then to
|
||||
binaries would be too time consuming or memory intensive.
|
||||
|
||||
Note that this macro is only available if using \c{CMake} 3.9 or later.
|
||||
|
||||
\section1 Arguments
|
||||
|
||||
You can set additional \c{OPTIONS} that should be added to the \c{rcc} calls.
|
||||
|
41
src/corelib/doc/src/dontdocument.qdoc
Normal file
41
src/corelib/doc/src/dontdocument.qdoc
Normal file
@ -0,0 +1,41 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2019 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:FDL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Free Documentation License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Free
|
||||
** Documentation License version 1.3 as published by the Free Software
|
||||
** Foundation and appearing in the file included in the packaging of
|
||||
** this file. Please review the following information to ensure
|
||||
** the GNU Free Documentation License version 1.3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
/*!
|
||||
\dontdocument (QMacAutoReleasePool QIncompatibleFlag QGenericAtomicOps QAtomicTraits
|
||||
QAtomicOps QBasicAtomicInteger QBasicAtomicPointer QBasicMutex QInternal
|
||||
QArgument QReturnArgument QArrayData QTypedArrayData QStaticByteArrayData
|
||||
QByteRef QStaticStringData QListSpecialMethods QListData QScopedPointerDeleter
|
||||
QScopedPointerArrayDeleter QScopedPointerPodDeleter QScopedPointerObjectDeleteLater
|
||||
QMetaTypeId2 QObjectData QObjectUserData QMapNodeBase QMapNode QMapDataBase
|
||||
QMapData QHashData QHashNode QArrayDataPointer QTextStreamManipulator
|
||||
QContiguousCacheData QContiguousCacheTypedData QNoDebug QUrlTwoFlags
|
||||
QCborValueRef qfloat16 QDeferredDeleteEvent QSpecialInteger QLittleEndianStorageType
|
||||
QBigEndianStorageType QFactoryInterface QFutureWatcherBase QJsonValuePtr
|
||||
QJsonValueRefPtr QLinkedListNode QAbstractConcatenable QStringBuilderCommon
|
||||
QTextCodec::ConverterState QThreadStorageData)
|
||||
*/
|
@ -40,6 +40,10 @@ SOURCES += \
|
||||
global/qrandom.cpp \
|
||||
global/qhooks.cpp
|
||||
|
||||
# To get listed in IDEs
|
||||
false: SOURCES += \
|
||||
global/qfloat16tables.cpp
|
||||
|
||||
# Only add global/qfloat16_f16c.c if qfloat16.cpp can't #include it.
|
||||
# Any compiler: if it is already generating F16C code, let qfloat16.cpp do it
|
||||
# Clang: ICE if not generating F16C code, so use qfloat16_f16c.c
|
||||
@ -124,14 +128,3 @@ gcc:ltcg {
|
||||
} else {
|
||||
SOURCES += $$VERSIONTAGGING_SOURCES
|
||||
}
|
||||
|
||||
QMAKE_QFLOAT16_TABLES_GENERATE = global/qfloat16.h
|
||||
|
||||
qtPrepareTool(QMAKE_QFLOAT16_TABLES, qfloat16-tables)
|
||||
|
||||
qfloat16_tables.commands = $$QMAKE_QFLOAT16_TABLES ${QMAKE_FILE_OUT}
|
||||
qfloat16_tables.output = global/qfloat16tables.cpp
|
||||
qfloat16_tables.depends = $$QMAKE_QFLOAT16_TABLES_EXE
|
||||
qfloat16_tables.input = QMAKE_QFLOAT16_TABLES_GENERATE
|
||||
qfloat16_tables.variable_out = SOURCES
|
||||
QMAKE_EXTRA_COMPILERS += qfloat16_tables
|
||||
|
@ -239,6 +239,7 @@ Q_CORE_EXPORT void qFloatFromFloat16(float *out, const qfloat16 *in, qsizetype l
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#include "qfloat16tables.cpp"
|
||||
#ifdef QFLOAT16_INCLUDE_FAST
|
||||
# include "qfloat16_f16c.c"
|
||||
#endif
|
||||
|
3266
src/corelib/global/qfloat16tables.cpp
Normal file
3266
src/corelib/global/qfloat16tables.cpp
Normal file
File diff suppressed because it is too large
Load Diff
@ -1552,6 +1552,13 @@ bool qSharedBuild() noexcept
|
||||
Defined on Any UNIX BSD/SYSV system.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\macro Q_OS_WASM
|
||||
\relates <QtGlobal>
|
||||
|
||||
Defined on Web Assembly.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\macro Q_CC_SYM
|
||||
\relates <QtGlobal>
|
||||
@ -2945,6 +2952,7 @@ QString QSysInfo::machineHostName()
|
||||
struct utsname u;
|
||||
if (uname(&u) == 0)
|
||||
return QString::fromLocal8Bit(u.nodename);
|
||||
return QString();
|
||||
#else
|
||||
# ifdef Q_OS_WIN
|
||||
// Important: QtNetwork depends on machineHostName() initializing ws2_32.dll
|
||||
@ -2957,7 +2965,6 @@ QString QSysInfo::machineHostName()
|
||||
hostName[sizeof(hostName) - 1] = '\0';
|
||||
return QString::fromLocal8Bit(hostName);
|
||||
#endif
|
||||
return QString();
|
||||
}
|
||||
#endif // QT_BOOTSTRAPPED
|
||||
|
||||
@ -3612,7 +3619,7 @@ bool qEnvironmentVariableIsSet(const char *varName) noexcept
|
||||
(void)getenv_s(&requiredSize, 0, 0, varName);
|
||||
return requiredSize != 0;
|
||||
#else
|
||||
return ::getenv(varName) != 0;
|
||||
return ::getenv(varName) != nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1097,7 +1097,7 @@ for (auto _container_ = QtPrivate::qMakeForeachContainer(container); \
|
||||
#endif
|
||||
|
||||
template <typename T> inline T *qGetPtrHelper(T *ptr) { return ptr; }
|
||||
template <typename Ptr> inline auto qGetPtrHelper(const Ptr &ptr) -> decltype(ptr.operator->()) { return ptr.operator->(); }
|
||||
template <typename Ptr> inline auto qGetPtrHelper(Ptr &ptr) -> decltype(ptr.operator->()) { return ptr.operator->(); }
|
||||
|
||||
// The body must be a statement:
|
||||
#define Q_CAST_IGNORE_ALIGN(body) QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Wcast-align") body QT_WARNING_POP
|
||||
|
@ -80,15 +80,15 @@ enum GuardValues {
|
||||
{ \
|
||||
struct HolderBase { \
|
||||
~HolderBase() noexcept \
|
||||
{ if (guard.load() == QtGlobalStatic::Initialized) \
|
||||
guard.store(QtGlobalStatic::Destroyed); } \
|
||||
{ if (guard.loadRelaxed() == QtGlobalStatic::Initialized) \
|
||||
guard.storeRelaxed(QtGlobalStatic::Destroyed); } \
|
||||
}; \
|
||||
static struct Holder : public HolderBase { \
|
||||
Type value; \
|
||||
Holder() \
|
||||
noexcept(noexcept(Type ARGS)) \
|
||||
: value ARGS \
|
||||
{ guard.store(QtGlobalStatic::Initialized); } \
|
||||
{ guard.storeRelaxed(QtGlobalStatic::Initialized); } \
|
||||
} holder; \
|
||||
return &holder.value; \
|
||||
}
|
||||
@ -108,12 +108,12 @@ QT_BEGIN_NAMESPACE
|
||||
int x = guard.loadAcquire(); \
|
||||
if (Q_UNLIKELY(x >= QtGlobalStatic::Uninitialized)) { \
|
||||
QMutexLocker locker(&mutex); \
|
||||
if (guard.load() == QtGlobalStatic::Uninitialized) { \
|
||||
if (guard.loadRelaxed() == QtGlobalStatic::Uninitialized) { \
|
||||
d = new Type ARGS; \
|
||||
static struct Cleanup { \
|
||||
~Cleanup() { \
|
||||
delete d; \
|
||||
guard.store(QtGlobalStatic::Destroyed); \
|
||||
guard.storeRelaxed(QtGlobalStatic::Destroyed); \
|
||||
} \
|
||||
} cleanup; \
|
||||
guard.storeRelease(QtGlobalStatic::Initialized); \
|
||||
@ -129,8 +129,8 @@ struct QGlobalStatic
|
||||
{
|
||||
typedef T Type;
|
||||
|
||||
bool isDestroyed() const { return guard.load() <= QtGlobalStatic::Destroyed; }
|
||||
bool exists() const { return guard.load() == QtGlobalStatic::Initialized; }
|
||||
bool isDestroyed() const { return guard.loadRelaxed() <= QtGlobalStatic::Destroyed; }
|
||||
bool exists() const { return guard.loadRelaxed() == QtGlobalStatic::Initialized; }
|
||||
operator Type *() { if (isDestroyed()) return nullptr; return innerFunction(); }
|
||||
Type *operator()() { if (isDestroyed()) return nullptr; return innerFunction(); }
|
||||
Type *operator->()
|
||||
|
@ -432,7 +432,24 @@ void QLibraryInfo::reload()
|
||||
{
|
||||
QLibraryInfoPrivate::reload();
|
||||
}
|
||||
#endif
|
||||
|
||||
void QLibraryInfo::sysrootify(QString *path)
|
||||
{
|
||||
if (!QVariant::fromValue(rawLocation(SysrootifyPrefixPath, FinalPaths)).toBool())
|
||||
return;
|
||||
|
||||
const QString sysroot = rawLocation(SysrootPath, FinalPaths);
|
||||
if (sysroot.isEmpty())
|
||||
return;
|
||||
|
||||
if (path->length() > 2 && path->at(1) == QLatin1Char(':')
|
||||
&& (path->at(2) == QLatin1Char('/') || path->at(2) == QLatin1Char('\\'))) {
|
||||
path->replace(0, 2, sysroot); // Strip out the drive on Windows targets
|
||||
} else {
|
||||
path->prepend(sysroot);
|
||||
}
|
||||
}
|
||||
#endif // QT_BUILD_QMAKE
|
||||
|
||||
/*!
|
||||
Returns the location specified by \a loc.
|
||||
@ -444,18 +461,8 @@ QLibraryInfo::location(LibraryLocation loc)
|
||||
QString ret = rawLocation(loc, FinalPaths);
|
||||
|
||||
// Automatically prepend the sysroot to target paths
|
||||
if (loc < SysrootPath || loc > LastHostPath) {
|
||||
QString sysroot = rawLocation(SysrootPath, FinalPaths);
|
||||
if (!sysroot.isEmpty()
|
||||
&& QVariant::fromValue(rawLocation(SysrootifyPrefixPath, FinalPaths)).toBool()) {
|
||||
if (ret.length() > 2 && ret.at(1) == QLatin1Char(':')
|
||||
&& (ret.at(2) == QLatin1Char('/') || ret.at(2) == QLatin1Char('\\'))) {
|
||||
ret.replace(0, 2, sysroot); // Strip out the drive on Windows targets
|
||||
} else {
|
||||
ret.prepend(sysroot);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (loc < SysrootPath || loc > LastHostPath)
|
||||
sysrootify(&ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -598,6 +605,8 @@ QLibraryInfo::rawLocation(LibraryLocation loc, PathGroup group)
|
||||
} else {
|
||||
// we make any other path absolute to the prefix directory
|
||||
baseDir = rawLocation(PrefixPath, group);
|
||||
if (group == EffectivePaths)
|
||||
sysrootify(&baseDir);
|
||||
}
|
||||
#else
|
||||
if (loc == PrefixPath) {
|
||||
|
@ -107,6 +107,7 @@ public:
|
||||
enum PathGroup { FinalPaths, EffectivePaths, EffectiveSourcePaths, DevicePaths };
|
||||
static QString rawLocation(LibraryLocation, PathGroup);
|
||||
static void reload();
|
||||
static void sysrootify(QString *path);
|
||||
#endif
|
||||
|
||||
static QStringList platformPluginArguments(const QString &platformName);
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include "qlogging_p.h"
|
||||
#include "qlist.h"
|
||||
#include "qbytearray.h"
|
||||
#include "qscopeguard.h"
|
||||
#include "qstring.h"
|
||||
#include "qvarlengtharray.h"
|
||||
#include "qdebug.h"
|
||||
@ -158,6 +159,9 @@ static QT_PREPEND_NAMESPACE(qint64) qt_gettid()
|
||||
#endif // !QT_BOOTSTRAPPED
|
||||
|
||||
#include <cstdlib>
|
||||
#include <algorithm>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
@ -194,7 +198,7 @@ static bool isFatal(QtMsgType msgType)
|
||||
|
||||
// it's fatal if the current value is exactly 1,
|
||||
// otherwise decrement if it's non-zero
|
||||
return fatalCriticals.load() && fatalCriticals.fetchAndAddRelaxed(-1) == 1;
|
||||
return fatalCriticals.loadRelaxed() && fatalCriticals.fetchAndAddRelaxed(-1) == 1;
|
||||
}
|
||||
|
||||
if (msgType == QtWarningMsg || msgType == QtCriticalMsg) {
|
||||
@ -202,7 +206,7 @@ static bool isFatal(QtMsgType msgType)
|
||||
|
||||
// it's fatal if the current value is exactly 1,
|
||||
// otherwise decrement if it's non-zero
|
||||
return fatalWarnings.load() && fatalWarnings.fetchAndAddRelaxed(-1) == 1;
|
||||
return fatalWarnings.loadRelaxed() && fatalWarnings.fetchAndAddRelaxed(-1) == 1;
|
||||
}
|
||||
|
||||
return false;
|
||||
@ -1076,8 +1080,8 @@ struct QMessagePattern {
|
||||
void setPattern(const QString &pattern);
|
||||
|
||||
// 0 terminated arrays of literal tokens / literal or placeholder tokens
|
||||
const char **literals;
|
||||
const char **tokens;
|
||||
std::unique_ptr<std::unique_ptr<const char[]>[]> literals;
|
||||
std::unique_ptr<const char*[]> tokens;
|
||||
QList<QString> timeArgs; // timeFormats in sequence of %{time
|
||||
#ifndef QT_BOOTSTRAPPED
|
||||
QElapsedTimer timer;
|
||||
@ -1100,9 +1104,6 @@ Q_DECLARE_TYPEINFO(QMessagePattern::BacktraceParams, Q_MOVABLE_TYPE);
|
||||
QBasicMutex QMessagePattern::mutex;
|
||||
|
||||
QMessagePattern::QMessagePattern()
|
||||
: literals(0)
|
||||
, tokens(0)
|
||||
, fromEnvironment(false)
|
||||
{
|
||||
#ifndef QT_BOOTSTRAPPED
|
||||
timer.start();
|
||||
@ -1110,6 +1111,7 @@ QMessagePattern::QMessagePattern()
|
||||
const QString envPattern = QString::fromLocal8Bit(qgetenv("QT_MESSAGE_PATTERN"));
|
||||
if (envPattern.isEmpty()) {
|
||||
setPattern(QLatin1String(defaultPattern));
|
||||
fromEnvironment = false;
|
||||
} else {
|
||||
setPattern(envPattern);
|
||||
fromEnvironment = true;
|
||||
@ -1117,23 +1119,10 @@ QMessagePattern::QMessagePattern()
|
||||
}
|
||||
|
||||
QMessagePattern::~QMessagePattern()
|
||||
{
|
||||
for (int i = 0; literals[i]; ++i)
|
||||
delete [] literals[i];
|
||||
delete [] literals;
|
||||
literals = 0;
|
||||
delete [] tokens;
|
||||
tokens = 0;
|
||||
}
|
||||
= default;
|
||||
|
||||
void QMessagePattern::setPattern(const QString &pattern)
|
||||
{
|
||||
if (literals) {
|
||||
for (int i = 0; literals[i]; ++i)
|
||||
delete [] literals[i];
|
||||
delete [] literals;
|
||||
}
|
||||
delete [] tokens;
|
||||
timeArgs.clear();
|
||||
#ifdef QLOGGING_HAVE_BACKTRACE
|
||||
backtraceArgs.clear();
|
||||
@ -1171,9 +1160,9 @@ void QMessagePattern::setPattern(const QString &pattern)
|
||||
lexemes.append(lexeme);
|
||||
|
||||
// tokenizer
|
||||
QVarLengthArray<const char*> literalsVar;
|
||||
tokens = new const char*[lexemes.size() + 1];
|
||||
tokens[lexemes.size()] = 0;
|
||||
std::vector<std::unique_ptr<const char[]>> literalsVar;
|
||||
tokens.reset(new const char*[lexemes.size() + 1]);
|
||||
tokens[lexemes.size()] = nullptr;
|
||||
|
||||
bool nestedIfError = false;
|
||||
bool inIf = false;
|
||||
@ -1267,7 +1256,7 @@ void QMessagePattern::setPattern(const QString &pattern)
|
||||
char *literal = new char[lexeme.size() + 1];
|
||||
strncpy(literal, lexeme.toLatin1().constData(), lexeme.size());
|
||||
literal[lexeme.size()] = '\0';
|
||||
literalsVar.append(literal);
|
||||
literalsVar.emplace_back(literal);
|
||||
tokens[i] = literal;
|
||||
}
|
||||
}
|
||||
@ -1279,9 +1268,8 @@ void QMessagePattern::setPattern(const QString &pattern)
|
||||
if (!error.isEmpty())
|
||||
qt_message_print(error);
|
||||
|
||||
literals = new const char*[literalsVar.size() + 1];
|
||||
literals[literalsVar.size()] = 0;
|
||||
memcpy(literals, literalsVar.constData(), literalsVar.size() * sizeof(const char*));
|
||||
literals.reset(new std::unique_ptr<const char[]>[literalsVar.size() + 1]);
|
||||
std::move(literalsVar.begin(), literalsVar.end(), &literals[0]);
|
||||
}
|
||||
|
||||
#if defined(QLOGGING_HAVE_BACKTRACE) && !defined(QT_BOOTSTRAPPED)
|
||||
@ -1406,7 +1394,7 @@ QString qFormatLogMessage(QtMsgType type, const QMessageLogContext &context, con
|
||||
#endif
|
||||
|
||||
// we do not convert file, function, line literals to local encoding due to overhead
|
||||
for (int i = 0; pattern->tokens[i] != 0; ++i) {
|
||||
for (int i = 0; pattern->tokens[i]; ++i) {
|
||||
const char *token = pattern->tokens[i];
|
||||
if (token == endifTokenC) {
|
||||
skip = false;
|
||||
@ -1512,9 +1500,9 @@ static void qDefaultMsgHandler(QtMsgType type, const char *buf);
|
||||
static void qDefaultMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &buf);
|
||||
|
||||
// pointer to QtMsgHandler debug handler (without context)
|
||||
static QBasicAtomicPointer<void (QtMsgType, const char*)> msgHandler = Q_BASIC_ATOMIC_INITIALIZER(qDefaultMsgHandler);
|
||||
static QBasicAtomicPointer<void (QtMsgType, const char*)> msgHandler = Q_BASIC_ATOMIC_INITIALIZER(nullptr);
|
||||
// pointer to QtMessageHandler debug handler (with context)
|
||||
static QBasicAtomicPointer<void (QtMsgType, const QMessageLogContext &, const QString &)> messageHandler = Q_BASIC_ATOMIC_INITIALIZER(qDefaultMessageHandler);
|
||||
static QBasicAtomicPointer<void (QtMsgType, const QMessageLogContext &, const QString &)> messageHandler = Q_BASIC_ATOMIC_INITIALIZER(nullptr);
|
||||
|
||||
// ------------------------ Alternate logging sinks -------------------------
|
||||
|
||||
@ -1826,14 +1814,15 @@ static void qt_message_print(QtMsgType msgType, const QMessageLogContext &contex
|
||||
// prevent recursion in case the message handler generates messages
|
||||
// itself, e.g. by using Qt API
|
||||
if (grabMessageHandler()) {
|
||||
const auto ungrab = qScopeGuard([]{ ungrabMessageHandler(); });
|
||||
auto oldStyle = msgHandler.loadAcquire();
|
||||
auto newStye = messageHandler.loadAcquire();
|
||||
// prefer new message handler over the old one
|
||||
if (msgHandler.load() == qDefaultMsgHandler
|
||||
|| messageHandler.load() != qDefaultMessageHandler) {
|
||||
(*messageHandler.load())(msgType, context, message);
|
||||
if (newStye || !oldStyle) {
|
||||
(newStye ? newStye : qDefaultMessageHandler)(msgType, context, message);
|
||||
} else {
|
||||
(*msgHandler.load())(msgType, message.toLocal8Bit().constData());
|
||||
(oldStyle ? oldStyle : qDefaultMsgHandler)(msgType, message.toLocal8Bit().constData());
|
||||
}
|
||||
ungrabMessageHandler();
|
||||
} else {
|
||||
fprintf(stderr, "%s\n", message.toLocal8Bit().constData());
|
||||
}
|
||||
@ -2084,18 +2073,20 @@ void qErrnoWarning(int code, const char *msg, ...)
|
||||
|
||||
QtMessageHandler qInstallMessageHandler(QtMessageHandler h)
|
||||
{
|
||||
if (!h)
|
||||
h = qDefaultMessageHandler;
|
||||
//set 'h' and return old message handler
|
||||
return messageHandler.fetchAndStoreRelaxed(h);
|
||||
const auto old = messageHandler.fetchAndStoreOrdered(h);
|
||||
if (old)
|
||||
return old;
|
||||
else
|
||||
return qDefaultMessageHandler;
|
||||
}
|
||||
|
||||
QtMsgHandler qInstallMsgHandler(QtMsgHandler h)
|
||||
{
|
||||
if (!h)
|
||||
h = qDefaultMsgHandler;
|
||||
//set 'h' and return old message handler
|
||||
return msgHandler.fetchAndStoreRelaxed(h);
|
||||
const auto old = msgHandler.fetchAndStoreOrdered(h);
|
||||
if (old)
|
||||
return old;
|
||||
else
|
||||
return qDefaultMsgHandler;
|
||||
}
|
||||
|
||||
void qSetMessagePattern(const QString &pattern)
|
||||
|
@ -74,18 +74,18 @@ void *qRealloc(void *ptr, size_t size)
|
||||
|
||||
void *qMallocAligned(size_t size, size_t alignment)
|
||||
{
|
||||
return qReallocAligned(0, size, 0, alignment);
|
||||
return qReallocAligned(nullptr, size, 0, alignment);
|
||||
}
|
||||
|
||||
void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t alignment)
|
||||
{
|
||||
// fake an aligned allocation
|
||||
void *actualptr = oldptr ? static_cast<void **>(oldptr)[-1] : 0;
|
||||
void *actualptr = oldptr ? static_cast<void **>(oldptr)[-1] : nullptr;
|
||||
if (alignment <= sizeof(void*)) {
|
||||
// special, fast case
|
||||
void **newptr = static_cast<void **>(realloc(actualptr, newsize + sizeof(void*)));
|
||||
if (!newptr)
|
||||
return 0;
|
||||
return nullptr;
|
||||
if (newptr == actualptr) {
|
||||
// realloc succeeded without reallocating
|
||||
return oldptr;
|
||||
@ -105,7 +105,7 @@ void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t align
|
||||
|
||||
void *real = realloc(actualptr, newsize + alignment);
|
||||
if (!real)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
quintptr faked = reinterpret_cast<quintptr>(real) + alignment;
|
||||
faked &= ~(alignment - 1);
|
||||
|
@ -186,7 +186,7 @@ struct QRandomGenerator::SystemGenerator
|
||||
#endif
|
||||
static void closeDevice()
|
||||
{
|
||||
int fd = self().fdp1.load() - 1;
|
||||
int fd = self().fdp1.loadRelaxed() - 1;
|
||||
if (fd >= 0)
|
||||
qt_safe_close(fd);
|
||||
}
|
||||
@ -310,7 +310,7 @@ static void fallback_fill(quint32 *ptr, qsizetype left) noexcept
|
||||
*end++ = quint32(nsecs); // 5
|
||||
#endif
|
||||
|
||||
if (quint32 v = seed.load())
|
||||
if (quint32 v = seed.loadRelaxed())
|
||||
*end++ = v; // 6
|
||||
|
||||
#if QT_CONFIG(getauxval)
|
||||
|
@ -159,7 +159,7 @@ QAbstractFileEngineHandler::~QAbstractFileEngineHandler()
|
||||
*/
|
||||
QAbstractFileEngine *qt_custom_file_engine_handler_create(const QString &path)
|
||||
{
|
||||
QAbstractFileEngine *engine = 0;
|
||||
QAbstractFileEngine *engine = nullptr;
|
||||
|
||||
if (qt_file_engine_handlers_in_use) {
|
||||
QReadLocker locker(fileEngineHandlerMutex());
|
||||
@ -658,7 +658,7 @@ QStringList QAbstractFileEngine::entryList(QDir::Filters filters, const QStringL
|
||||
QAbstractFileEngine::FileFlags QAbstractFileEngine::fileFlags(FileFlags type) const
|
||||
{
|
||||
Q_UNUSED(type);
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -838,7 +838,7 @@ uchar *QAbstractFileEngine::map(qint64 offset, qint64 size, QFile::MemoryMapFlag
|
||||
option.flags = flags;
|
||||
MapExtensionReturn r;
|
||||
if (!extension(MapExtension, &option, &r))
|
||||
return 0;
|
||||
return nullptr;
|
||||
return r.address;
|
||||
}
|
||||
|
||||
@ -1118,7 +1118,7 @@ QAbstractFileEngine::Iterator *QAbstractFileEngine::beginEntryList(QDir::Filters
|
||||
{
|
||||
Q_UNUSED(filters);
|
||||
Q_UNUSED(filterNames);
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/*!
|
||||
@ -1126,7 +1126,7 @@ QAbstractFileEngine::Iterator *QAbstractFileEngine::beginEntryList(QDir::Filters
|
||||
*/
|
||||
QAbstractFileEngine::Iterator *QAbstractFileEngine::endEntryList()
|
||||
{
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -50,7 +50,7 @@ class QBufferPrivate : public QIODevicePrivate
|
||||
|
||||
public:
|
||||
QBufferPrivate()
|
||||
: buf(0)
|
||||
: buf(nullptr)
|
||||
#ifndef QT_NO_QOBJECT
|
||||
, writtenSinceLastEmit(0), signalConnectionCount(0), signalsEmitted(false)
|
||||
#endif
|
||||
|
@ -147,7 +147,7 @@ using QtMiscUtils::fromHex;
|
||||
// Has been defined in the header / inlined before Qt 5.4
|
||||
QDebug::~QDebug()
|
||||
{
|
||||
if (!--stream->ref) {
|
||||
if (stream && !--stream->ref) {
|
||||
if (stream->space && stream->buffer.endsWith(QLatin1Char(' ')))
|
||||
stream->buffer.chop(1);
|
||||
if (stream->message_output) {
|
||||
@ -843,36 +843,34 @@ QDebug &QDebug::resetFormat()
|
||||
class QDebugStateSaverPrivate
|
||||
{
|
||||
public:
|
||||
QDebugStateSaverPrivate(QDebug &dbg)
|
||||
: m_dbg(dbg),
|
||||
m_spaces(dbg.autoInsertSpaces()),
|
||||
m_flags(0),
|
||||
m_streamParams(dbg.stream->ts.d_ptr->params)
|
||||
QDebugStateSaverPrivate(QDebug::Stream *stream)
|
||||
: m_stream(stream),
|
||||
m_spaces(stream->space),
|
||||
m_flags(stream->context.version > 1 ? stream->flags : 0),
|
||||
m_streamParams(stream->ts.d_ptr->params)
|
||||
{
|
||||
if (m_dbg.stream->context.version > 1)
|
||||
m_flags = m_dbg.stream->flags;
|
||||
}
|
||||
void restoreState()
|
||||
{
|
||||
const bool currentSpaces = m_dbg.autoInsertSpaces();
|
||||
const bool currentSpaces = m_stream->space;
|
||||
if (currentSpaces && !m_spaces)
|
||||
if (m_dbg.stream->buffer.endsWith(QLatin1Char(' ')))
|
||||
m_dbg.stream->buffer.chop(1);
|
||||
if (m_stream->buffer.endsWith(QLatin1Char(' ')))
|
||||
m_stream->buffer.chop(1);
|
||||
|
||||
m_dbg.setAutoInsertSpaces(m_spaces);
|
||||
m_dbg.stream->ts.d_ptr->params = m_streamParams;
|
||||
if (m_dbg.stream->context.version > 1)
|
||||
m_dbg.stream->flags = m_flags;
|
||||
m_stream->space = m_spaces;
|
||||
m_stream->ts.d_ptr->params = m_streamParams;
|
||||
if (m_stream->context.version > 1)
|
||||
m_stream->flags = m_flags;
|
||||
|
||||
if (!currentSpaces && m_spaces)
|
||||
m_dbg.stream->ts << ' ';
|
||||
m_stream->ts << ' ';
|
||||
}
|
||||
|
||||
QDebug &m_dbg;
|
||||
QDebug::Stream *m_stream;
|
||||
|
||||
// QDebug state
|
||||
const bool m_spaces;
|
||||
int m_flags;
|
||||
const int m_flags;
|
||||
|
||||
// QTextStream state
|
||||
const QTextStreamPrivate::Params m_streamParams;
|
||||
@ -886,7 +884,7 @@ public:
|
||||
\sa QDebug::setAutoInsertSpaces(), QDebug::autoInsertSpaces()
|
||||
*/
|
||||
QDebugStateSaver::QDebugStateSaver(QDebug &dbg)
|
||||
: d(new QDebugStateSaverPrivate(dbg))
|
||||
: d(new QDebugStateSaverPrivate(dbg.stream))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -65,6 +65,7 @@ QT_BEGIN_NAMESPACE
|
||||
class Q_CORE_EXPORT QDebug
|
||||
{
|
||||
friend class QMessageLogger;
|
||||
friend class QDebugStateSaver;
|
||||
friend class QDebugStateSaverPrivate;
|
||||
struct Stream {
|
||||
enum { VerbosityShift = 29, VerbosityMask = 0x7 };
|
||||
@ -114,7 +115,10 @@ public:
|
||||
inline QDebug(QString *string) : stream(new Stream(string)) {}
|
||||
inline QDebug(QtMsgType t) : stream(new Stream(t)) {}
|
||||
inline QDebug(const QDebug &o):stream(o.stream) { ++stream->ref; }
|
||||
QDebug(QDebug &&other) noexcept : stream{qExchange(other.stream, nullptr)} {}
|
||||
inline QDebug &operator=(const QDebug &other);
|
||||
QDebug &operator=(QDebug &&other) noexcept
|
||||
{ QDebug{std::move(other)}.swap(*this); return *this; }
|
||||
~QDebug();
|
||||
inline void swap(QDebug &other) noexcept { qSwap(stream, other.stream); }
|
||||
|
||||
@ -203,10 +207,7 @@ public:
|
||||
|
||||
inline QDebug &QDebug::operator=(const QDebug &other)
|
||||
{
|
||||
if (this != &other) {
|
||||
QDebug copy(other);
|
||||
qSwap(stream, copy.stream);
|
||||
}
|
||||
QDebug{other}.swap(*this);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -1431,7 +1431,7 @@ QStringList QDir::entryList(const QStringList &nameFilters, Filters filters,
|
||||
l.append(it.fileInfo());
|
||||
}
|
||||
QStringList ret;
|
||||
d->sortFileList(sort, l, &ret, 0);
|
||||
d->sortFileList(sort, l, &ret, nullptr);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1473,7 +1473,7 @@ QFileInfoList QDir::entryInfoList(const QStringList &nameFilters, Filters filter
|
||||
l.append(it.fileInfo());
|
||||
}
|
||||
QFileInfoList ret;
|
||||
d->sortFileList(sort, l, 0, &ret);
|
||||
d->sortFileList(sort, l, nullptr, &ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -86,7 +86,7 @@ QFilePrivate::openExternalFile(int flags, int fd, QFile::FileHandleFlags handleF
|
||||
return false;
|
||||
#else
|
||||
delete fileEngine;
|
||||
fileEngine = 0;
|
||||
fileEngine = nullptr;
|
||||
QFSFileEngine *fe = new QFSFileEngine;
|
||||
fileEngine = fe;
|
||||
return fe->open(QIODevice::OpenMode(flags), fd, handleFlags);
|
||||
@ -102,7 +102,7 @@ QFilePrivate::openExternalFile(int flags, FILE *fh, QFile::FileHandleFlags handl
|
||||
return false;
|
||||
#else
|
||||
delete fileEngine;
|
||||
fileEngine = 0;
|
||||
fileEngine = nullptr;
|
||||
QFSFileEngine *fe = new QFSFileEngine;
|
||||
fileEngine = fe;
|
||||
return fe->open(QIODevice::OpenMode(flags), fh, handleFlags);
|
||||
@ -336,7 +336,7 @@ QFile::setFileName(const QString &name)
|
||||
}
|
||||
if(d->fileEngine) { //get a new file engine later
|
||||
delete d->fileEngine;
|
||||
d->fileEngine = 0;
|
||||
d->fileEngine = nullptr;
|
||||
}
|
||||
d->fileName = name;
|
||||
}
|
||||
@ -810,7 +810,7 @@ QFile::copy(const QString &newName)
|
||||
error = true;
|
||||
d->setError(QFile::CopyError, tr("Cannot open %1 for input").arg(d->fileName));
|
||||
} else {
|
||||
QString fileTemplate = QLatin1String("%1/qt_temp.XXXXXX");
|
||||
const auto fileTemplate = QLatin1String("%1/qt_temp.XXXXXX");
|
||||
#ifdef QT_NO_TEMPORARYFILE
|
||||
QFile out(fileTemplate.arg(QFileInfo(newName).path()));
|
||||
if (!out.open(QIODevice::ReadWrite))
|
||||
|
@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE
|
||||
#endif
|
||||
|
||||
QFileDevicePrivate::QFileDevicePrivate()
|
||||
: fileEngine(0),
|
||||
: fileEngine(nullptr),
|
||||
cachedSize(0),
|
||||
error(QFile::NoError), lastWasWrite(false)
|
||||
{
|
||||
@ -63,7 +63,7 @@ QFileDevicePrivate::QFileDevicePrivate()
|
||||
QFileDevicePrivate::~QFileDevicePrivate()
|
||||
{
|
||||
delete fileEngine;
|
||||
fileEngine = 0;
|
||||
fileEngine = nullptr;
|
||||
}
|
||||
|
||||
QAbstractFileEngine * QFileDevicePrivate::engine() const
|
||||
|
@ -52,7 +52,7 @@ QString QFileInfoPrivate::getFileName(QAbstractFileEngine::FileName name) const
|
||||
return fileNames[(int)name];
|
||||
|
||||
QString ret;
|
||||
if (fileEngine == 0) { // local file; use the QFileSystemEngine directly
|
||||
if (fileEngine == nullptr) { // local file; use the QFileSystemEngine directly
|
||||
switch (name) {
|
||||
case QAbstractFileEngine::CanonicalName:
|
||||
case QAbstractFileEngine::CanonicalPathName: {
|
||||
@ -103,7 +103,7 @@ QString QFileInfoPrivate::getFileOwner(QAbstractFileEngine::FileOwner own) const
|
||||
if (cache_enabled && !fileOwners[(int)own].isNull())
|
||||
return fileOwners[(int)own];
|
||||
QString ret;
|
||||
if (fileEngine == 0) {
|
||||
if (fileEngine == nullptr) {
|
||||
switch (own) {
|
||||
case QAbstractFileEngine::OwnerUser:
|
||||
ret = QFileSystemEngine::resolveUserName(fileEntry, metaData);
|
||||
@ -134,7 +134,7 @@ uint QFileInfoPrivate::getFileFlags(QAbstractFileEngine::FileFlags request) cons
|
||||
// extra syscall. Bundle detecton on Mac can be slow, expecially on network
|
||||
// paths, so we separate out that as well.
|
||||
|
||||
QAbstractFileEngine::FileFlags req = 0;
|
||||
QAbstractFileEngine::FileFlags req = nullptr;
|
||||
uint cachedFlags = 0;
|
||||
|
||||
if (request & (QAbstractFileEngine::FlagsMask | QAbstractFileEngine::TypesMask)) {
|
||||
@ -434,7 +434,7 @@ bool QFileInfo::operator==(const QFileInfo &fileinfo) const
|
||||
return true;
|
||||
|
||||
Qt::CaseSensitivity sensitive;
|
||||
if (d->fileEngine == 0 || fileinfo.d_ptr->fileEngine == 0) {
|
||||
if (d->fileEngine == nullptr || fileinfo.d_ptr->fileEngine == nullptr) {
|
||||
if (d->fileEngine != fileinfo.d_ptr->fileEngine) // one is native, the other is a custom file-engine
|
||||
return false;
|
||||
|
||||
@ -649,7 +649,7 @@ bool QFileInfo::isRelative() const
|
||||
Q_D(const QFileInfo);
|
||||
if (d->isDefaultConstructed)
|
||||
return true;
|
||||
if (d->fileEngine == 0)
|
||||
if (d->fileEngine == nullptr)
|
||||
return d->fileEntry.isRelative();
|
||||
return d->fileEngine->isRelativePath();
|
||||
}
|
||||
@ -682,7 +682,7 @@ bool QFileInfo::exists() const
|
||||
Q_D(const QFileInfo);
|
||||
if (d->isDefaultConstructed)
|
||||
return false;
|
||||
if (d->fileEngine == 0) {
|
||||
if (d->fileEngine == nullptr) {
|
||||
if (!d->cache_enabled || !d->metaData.hasFlags(QFileSystemMetaData::ExistsAttribute))
|
||||
QFileSystemEngine::fillMetaData(d->fileEntry, d->metaData, QFileSystemMetaData::ExistsAttribute);
|
||||
return d->metaData.exists();
|
||||
@ -982,7 +982,7 @@ bool QFileInfo::isNativePath() const
|
||||
Q_D(const QFileInfo);
|
||||
if (d->isDefaultConstructed)
|
||||
return false;
|
||||
if (d->fileEngine == 0)
|
||||
if (d->fileEngine == nullptr)
|
||||
return true;
|
||||
return d->getFileFlags(QAbstractFileEngine::LocalDiskFlag);
|
||||
}
|
||||
@ -1075,7 +1075,7 @@ bool QFileInfo::isRoot() const
|
||||
Q_D(const QFileInfo);
|
||||
if (d->isDefaultConstructed)
|
||||
return false;
|
||||
if (d->fileEngine == 0) {
|
||||
if (d->fileEngine == nullptr) {
|
||||
if (d->fileEntry.isRoot()) {
|
||||
#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
|
||||
//the path is a drive root, but the drive may not exist
|
||||
|
@ -228,7 +228,18 @@ QUrl QFileSelector::select(const QUrl &filePath) const
|
||||
QString selectedPath = d->select(equivalentPath);
|
||||
ret.setPath(selectedPath.remove(0, scheme.size()));
|
||||
} else {
|
||||
// we need to store the original query and fragment, since toLocalFile() will strip it off
|
||||
QString frag;
|
||||
if (ret.hasFragment())
|
||||
frag = ret.fragment();
|
||||
QString query;
|
||||
if (ret.hasQuery())
|
||||
query= ret.query();
|
||||
ret = QUrl::fromLocalFile(d->select(ret.toLocalFile()));
|
||||
if (!frag.isNull())
|
||||
ret.setFragment(frag);
|
||||
if (!query.isNull())
|
||||
ret.setQuery(query);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ static inline bool _q_checkEntry(QAbstractFileEngine *&engine, bool resolvingEnt
|
||||
if (resolvingEntry) {
|
||||
if (!(engine->fileFlags(QAbstractFileEngine::FlagsMask) & QAbstractFileEngine::ExistsFlag)) {
|
||||
delete engine;
|
||||
engine = 0;
|
||||
engine = nullptr;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -191,7 +191,7 @@ static bool _q_resolveEntryAndCreateLegacyEngine_recursive(QFileSystemEntry &ent
|
||||
QAbstractFileEngine *QFileSystemEngine::resolveEntryAndCreateLegacyEngine(
|
||||
QFileSystemEntry &entry, QFileSystemMetaData &data) {
|
||||
QFileSystemEntry copy = entry;
|
||||
QAbstractFileEngine *engine = 0;
|
||||
QAbstractFileEngine *engine = nullptr;
|
||||
|
||||
if (_q_resolveEntryAndCreateLegacyEngine_recursive(copy, data, engine))
|
||||
// Reset entry to resolved copy.
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user