diff options
author | Tobias Markmann <tm@ayena.de> | 2016-07-19 18:39:11 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2016-07-19 18:39:11 (GMT) |
commit | 791a5c87a7df396bc00eb8202585561b40bb8adc (patch) | |
tree | 1a7e960b84a3b6585864a19cbb7fae9e8d918152 | |
parent | 8dce1cd03729624a25a98dd2c0d026b93e452f86 (diff) | |
download | swift-791a5c87a7df396bc00eb8202585561b40bb8adc.zip swift-791a5c87a7df396bc00eb8202585561b40bb8adc.tar.bz2 |
Fix Swift UI sometimes getting stuck during login
In some cases during the login the helper QEventLoop in
QtWebKitChatView takes over the event handling of the
application and never retirms from it. Qt events are still
handled in this case but any other new events are only queued
up. The user would still have a responsible UI, but all network
traffic or other non-Qt events would not be handled correctly.
Test-Information:
Without the patch Swift would get stuck during login in 5 of
10 runs. With this patch it did not get stuck anymore in 10
runs.
Tested on OS X 10.11.5 with Qt 5.5.1.
Change-Id: Ie17a8e01cc9c52cc784e223974ec21e604dcccab
-rw-r--r-- | Swift/QtUI/QtWebKitChatView.cpp | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/Swift/QtUI/QtWebKitChatView.cpp b/Swift/QtUI/QtWebKitChatView.cpp index aec8589..afa2d5e 100644 --- a/Swift/QtUI/QtWebKitChatView.cpp +++ b/Swift/QtUI/QtWebKitChatView.cpp @@ -329,11 +329,7 @@ void QtWebKitChatView::resetView() { connect(webView_, SIGNAL(loadFinished(bool)), &syncLoop, SLOT(quit())); webPage_->mainFrame()->setHtml(pageHTML); while (!viewReady_) { - QTimer t; - t.setSingleShot(true); - connect(&t, SIGNAL(timeout()), &syncLoop, SLOT(quit())); - t.start(50); - syncLoop.exec(); + syncLoop.processEvents(QEventLoop::AllEvents, 50); } document_ = webPage_->mainFrame()->documentElement(); |