From 59d6871ae3a9978d5578811c50a94f5cb3fc704d Mon Sep 17 00:00:00 2001 From: Lucile Quirion Date: Thu, 1 May 2014 10:16:42 -0400 Subject: 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 Reviewed-by: Laszlo Agocs --- src/plugins/platforms/directfb/main.cpp | 3 ++- src/plugins/platforms/directfb/qdirectfbintegration.cpp | 2 +- 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; -- cgit v1.2.3