summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-09-23 13:06:36 +0200
committerLiang Qi <liang.qi@qt.io>2016-09-23 14:00:51 +0200
commit86515f2a650c8e6acc6906d5308061c8cd064408 (patch)
treefc6e8baa2a78f05d2dbccac8bfd013b8aec93feb
parent9fa5b516f49bb252d6c57d14d54151d8ee3bf9d1 (diff)
parent21fa3e04b0febc0fa0a84d01eacd3831fd6628f8 (diff)
downloadqtactiveqt-86515f2a650c8e6acc6906d5308061c8cd064408.tar.gz
Merge remote-tracking branch 'origin/5.8' into dev
Conflicts: src/tools/idc/main.cpp Change-Id: Id1b539313912cfc5a3e94d997761f0cc737f7024
-rw-r--r--dist/changes-5.6.226
-rw-r--r--src/activeqt/container/qaxbase.h3
-rw-r--r--src/tools/idc/main.cpp15
-rw-r--r--tools/testcon/mainwindow.cpp10
-rw-r--r--tools/testcon/mainwindow.h2
-rw-r--r--tools/testcon/mainwindow.ui6
6 files changed, 56 insertions, 6 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/activeqt/container/qaxbase.h b/src/activeqt/container/qaxbase.h
index f83c920..fa8e3ee 100644
--- a/src/activeqt/container/qaxbase.h
+++ b/src/activeqt/container/qaxbase.h
@@ -194,13 +194,12 @@ inline QString QAxBase::generateDocumentation()
inline QDataStream &operator >>(QDataStream &s, QAxBase &c)
{
QAxBase::PropertyBag bag;
- c.qObject()->blockSignals(true);
+ const QSignalBlocker blocker(c.qObject());
QString control;
s >> control;
c.setControl(control);
s >> bag;
c.setPropertyBag(bag);
- c.qObject()->blockSignals(false);
return s;
}
diff --git a/src/tools/idc/main.cpp b/src/tools/idc/main.cpp
index 43d814f..cceae07 100644
--- a/src/tools/idc/main.cpp
+++ b/src/tools/idc/main.cpp
@@ -176,9 +176,14 @@ 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());
// 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)
@@ -230,7 +235,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);
@@ -373,7 +380,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>&amp;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" >