diff options
author | Liang Qi <liang.qi@qt.io> | 2016-09-18 13:11:50 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-09-18 13:11:56 +0200 |
commit | 46454bd6e0892ab6a9ac971a454f24b1f2535f14 (patch) | |
tree | e625a7141929cc55e9b24bda5f3000c1abd71f54 | |
parent | 45cd9f66f42c595ff429475170b6e623669363a6 (diff) | |
parent | 4329879b4d73936fe757591f19cb2a86cae1d6b7 (diff) | |
download | qtactiveqt-46454bd6e0892ab6a9ac971a454f24b1f2535f14.tar.gz |
Merge remote-tracking branch 'origin/5.7' into 5.8
Change-Id: Iac8c9e49fd96c80fff85277e02b7deb6a8a1b28e
-rw-r--r-- | dist/changes-5.6.2 | 26 | ||||
-rw-r--r-- | src/tools/idc/main.cpp | 17 | ||||
-rw-r--r-- | tools/testcon/mainwindow.cpp | 10 | ||||
-rw-r--r-- | tools/testcon/mainwindow.h | 2 | ||||
-rw-r--r-- | tools/testcon/mainwindow.ui | 6 |
5 files changed, 56 insertions, 5 deletions
diff --git a/dist/changes-5.6.2 b/dist/changes-5.6.2 new file mode 100644 index 0000000..7d6ba5f --- /dev/null +++ b/dist/changes-5.6.2 @@ -0,0 +1,26 @@ +Qt 5.6.2 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.6.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + + http://doc.qt.io/qt-5/index.html + +The Qt version 5.6 series is binary compatible with the 5.5.x series. +Applications compiled for 5.5 will continue to run with 5.6. + +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. + +**************************************************************************** +* Library * +**************************************************************************** + + - idc: + * [QTBUG-55332] idc can now handle library path names with space + characters. diff --git a/src/tools/idc/main.cpp b/src/tools/idc/main.cpp index 60ec1e4..7d0c888 100644 --- a/src/tools/idc/main.cpp +++ b/src/tools/idc/main.cpp @@ -176,12 +176,17 @@ static bool attachTypeLibrary(const QString &applicationName, int resource, cons static HMODULE loadLibraryQt(const QString &input) { + const wchar_t *inputC = reinterpret_cast<const wchar_t *>(input.utf16()); if (QSysInfo::windowsVersion() < QSysInfo::WV_VISTA) - return LoadLibrary(reinterpret_cast<const wchar_t *>(input.utf16())); // fallback for Windows XP and older + return LoadLibrary(inputC); // fallback for Windows XP and older // Load DLL with the folder containing the DLL temporarily added to the search path when loading dependencies - return LoadLibraryEx(reinterpret_cast<const wchar_t *>(input.utf16()), NULL, - LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_SEARCH_DEFAULT_DIRS); + HMODULE result = + LoadLibraryEx(inputC, NULL, LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_SEARCH_DEFAULT_DIRS); + // If that fails, call with flags=0 to get LoadLibrary() behavior (search %PATH%). + if (!result) + result = LoadLibraryEx(inputC, NULL, 0); + return result; } static bool registerServer(const QString &input) @@ -233,7 +238,9 @@ static HRESULT dumpIdl(const QString &input, const QString &idlfile, const QStri HRESULT res = E_FAIL; if (hasExeExtension(input)) { - if (runWithQtInEnvironment(quotePath(input) + QLatin1String(" -dumpidl ") + idlfile + QLatin1String(" -version ") + version)) + const QString command = quotePath(input) + QLatin1String(" -dumpidl ") + + quotePath(idlfile) + QLatin1String(" -version ") + version; + if (runWithQtInEnvironment(command)) res = S_OK; } else { HMODULE hdll = loadLibraryQt(input); @@ -376,7 +383,7 @@ int runIdc(int argc, char **argv) fprintf(stderr, "%s\n", qPrintable(error)); return ok ? 0 : 4; } else if (!idlfile.isEmpty()) { - idlfile = quotePath(QDir::toNativeSeparators(idlfile)); + idlfile = QDir::toNativeSeparators(idlfile); fprintf(stderr, "\n\n%s\n\n", qPrintable(idlfile)); const HRESULT res = dumpIdl(input, idlfile, version); diff --git a/tools/testcon/mainwindow.cpp b/tools/testcon/mainwindow.cpp index 0b0f9fc..bc69264 100644 --- a/tools/testcon/mainwindow.cpp +++ b/tools/testcon/mainwindow.cpp @@ -357,6 +357,16 @@ void MainWindow::on_actionScriptingRun_triggered() #endif } +void MainWindow::on_actionFreeUnusedDLLs_triggered() +{ + // Explicitly unload unused DLLs with no remaining references. + // This is also done automatically after 10min and in low memory situations. + + // must call twice due to DllCanUnloadNow implementation in qaxserverdll + CoFreeUnusedLibrariesEx(0, 0); + CoFreeUnusedLibrariesEx(0, 0); +} + #ifdef QT_NO_QAXSCRIPT static inline void noScriptMessage(QWidget *parent) { diff --git a/tools/testcon/mainwindow.h b/tools/testcon/mainwindow.h index 6f713c7..2c8d687 100644 --- a/tools/testcon/mainwindow.h +++ b/tools/testcon/mainwindow.h @@ -83,6 +83,8 @@ protected slots: void on_actionScriptingLoad_triggered(); void on_actionScriptingRun_triggered(); + void on_actionFreeUnusedDLLs_triggered(); + private: QAxWidget *activeAxWidget() const; QList<QAxWidget *> axWidgets() const; diff --git a/tools/testcon/mainwindow.ui b/tools/testcon/mainwindow.ui index 0320f7f..ad3443c 100644 --- a/tools/testcon/mainwindow.ui +++ b/tools/testcon/mainwindow.ui @@ -364,6 +364,7 @@ <addaction name="actionFreezeEvents" /> <addaction name="actionGroupLogging" /> <addaction name="LoggingMenu" /> + <addaction name="actionFreeUnusedDLLs"/> </widget> <addaction name="FileMenu" /> <addaction name="ContainerMenu" /> @@ -602,6 +603,11 @@ <string>&Run Macro...</string> </property> </action> + <action name="actionFreeUnusedDLLs"> + <property name="text" > + <string>Free Unused DLLs</string> + </property> + </action> <actiongroup name="actionGroupLogging" > <action name="actionLogSignals" > <property name="objectName" > |