From 8124f0bc1893e0997989913044665fa1c5cf79d7 Mon Sep 17 00:00:00 2001 From: Szabolcs David Date: Thu, 25 Oct 2018 16:36:12 +0200 Subject: Move printing operation to a new thread MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Printing operations were blocking the UI thread, so applications were irresponsive when printing in large size or high resolution. Introduce a new worker for the painting logic and use shared pointers to carry the data around and avoid copying PDF data between threads. Task-number: QTBUG-68561 Change-Id: I30633380b75acd14f1a1df87985c99540168a9f1 Reviewed-by: Michael BrĂ¼ning --- src/webengine/api/qquickwebengineview.cpp | 4 ++-- src/webengine/api/qquickwebengineview_p_p.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/webengine') diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index d9667a643..e2a8b562d 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -1130,12 +1130,12 @@ void QQuickWebEngineViewPrivate::didFindText(quint64 requestId, int matchCount) callback.call(args); } -void QQuickWebEngineViewPrivate::didPrintPage(quint64 requestId, const QByteArray &result) +void QQuickWebEngineViewPrivate::didPrintPage(quint64 requestId, QSharedPointer result) { Q_Q(QQuickWebEngineView); QJSValue callback = m_callbacks.take(requestId); QJSValueList args; - args.append(qmlEngine(q)->toScriptValue(result)); + args.append(qmlEngine(q)->toScriptValue(*(result.data()))); callback.call(args); } diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index cbba9b568..88a670867 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -128,7 +128,7 @@ public: void didFetchDocumentMarkup(quint64, const QString&) override { } void didFetchDocumentInnerText(quint64, const QString&) override { } void didFindText(quint64, int) override; - void didPrintPage(quint64 requestId, const QByteArray &result) override; + void didPrintPage(quint64 requestId, QSharedPointer) override; void didPrintPageToPdf(const QString &filePath, bool success) override; void passOnFocus(bool reverse) override; void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString& message, int lineNumber, const QString& sourceID) override; -- cgit v1.2.3