diff options
author | Lucile Quirion <lucile.quirion@savoirfairelinux.com> | 2014-05-01 10:16:42 -0400 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@digia.com> | 2014-06-16 13:25:53 +0200 |
commit | 59d6871ae3a9978d5578811c50a94f5cb3fc704d (patch) | |
tree | f9bd78e1739a05dc321796c4dd36b61709206d29 | |
parent | 3f39c0f76cec121181ab9d6a0cf057c1b1aeb25c (diff) |
directfb: fix QThread destroyed while running
Commit cf092abdfc888f19a607a43c9b4bac776b5c1f8e introduces a virtual
"void initialize()" in QPlatformIntegration class.
"void initialize()" was already implemented in QDirectFbIntegration
since commit 6534898cc69e22115cf158f71a1e0edd7f13877b allowing
initialization steps to be overridden by QDirectFbIntegrationEGL.
Therefore the QScopePointer "m_input" handling a QThread is reset twice.
The QThread firstly created is forcibly terminated. The application
displays the error message "QThread: Destroyed while thread is still
running" and sometimes crash with a SIGSEGV.
This commit rename QDirectFbIntegration::initialize() into
QDirectFbIntegration::connectToDirectFb() to fix this issue.
Task-number: QTBUG-38710
Change-Id: I3ca07c373af7c47abf08da2b45bbcf7a6cf573ad
Reviewed-by: Holger Freyther <holger+qt@freyther.de>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
-rw-r--r-- | src/plugins/platforms/directfb/main.cpp | 3 | ||||
-rw-r--r-- | src/plugins/platforms/directfb/qdirectfbintegration.cpp | 2 | ||||
-rw-r--r-- | src/plugins/platforms/directfb/qdirectfbintegration.h | 2 |
3 files changed, 4 insertions, 3 deletions
diff --git a/src/plugins/platforms/directfb/main.cpp b/src/plugins/platforms/directfb/main.cpp index 423e33efd5..b0354c236d 100644 --- a/src/plugins/platforms/directfb/main.cpp +++ b/src/plugins/platforms/directfb/main.cpp @@ -75,7 +75,8 @@ QPlatformIntegration * QDirectFbIntegrationPlugin::create(const QString& system, if (!integration) return 0; - integration->initialize(); + integration->connectToDirectFb(); + return integration; } diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.cpp b/src/plugins/platforms/directfb/qdirectfbintegration.cpp index 7ca7da8bcd..3d1b79ef38 100644 --- a/src/plugins/platforms/directfb/qdirectfbintegration.cpp +++ b/src/plugins/platforms/directfb/qdirectfbintegration.cpp @@ -64,7 +64,7 @@ QDirectFbIntegration::QDirectFbIntegration() { } -void QDirectFbIntegration::initialize() +void QDirectFbIntegration::connectToDirectFb() { initializeDirectFB(); initializeScreen(); diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.h b/src/plugins/platforms/directfb/qdirectfbintegration.h index 5822202eea..b49600bed9 100644 --- a/src/plugins/platforms/directfb/qdirectfbintegration.h +++ b/src/plugins/platforms/directfb/qdirectfbintegration.h @@ -60,7 +60,7 @@ public: QDirectFbIntegration(); ~QDirectFbIntegration(); - void initialize(); + void connectToDirectFb(); QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const; QPlatformWindow *createPlatformWindow(QWindow *window) const; |