mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +08:00
[FSD] Thread utility function to "call function in its own thread"
This commit is contained in:
committed by
Mat Sutcliffe
parent
928a76a042
commit
f620147fe6
@@ -12,6 +12,8 @@
|
||||
#include <QObject>
|
||||
#include <QThread>
|
||||
#include <QtGlobal>
|
||||
#include <QPointer>
|
||||
#include <QTimer>
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
@@ -87,4 +89,18 @@ namespace BlackMisc
|
||||
{
|
||||
return threadInfo(QThread::currentThread());
|
||||
}
|
||||
|
||||
bool CThreadUtils::callInObjectThread(QObject *object, std::function<void()> callFunct)
|
||||
{
|
||||
if (!object) { return false; }
|
||||
if (CThreadUtils::isCurrentThreadObjectThread(object)) { return false; }
|
||||
|
||||
QPointer<QObject> myself(object);
|
||||
QTimer::singleShot(0, object, [ = ]
|
||||
{
|
||||
if (!myself) { return; }
|
||||
callFunct();
|
||||
});
|
||||
return true;
|
||||
}
|
||||
} // ns
|
||||
|
||||
@@ -12,7 +12,9 @@
|
||||
#define BLACKMISC_CTHREADUTILS_H
|
||||
|
||||
#include "blackmisc/blackmiscexport.h"
|
||||
|
||||
#include <QThread>
|
||||
#include <functional>
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
@@ -52,6 +54,9 @@ namespace BlackMisc
|
||||
|
||||
//! Info about current thread
|
||||
static const QString currentThreadInfo();
|
||||
|
||||
//! Call in object's thread IF not already in object's thread
|
||||
static bool callInObjectThread(QObject *object, std::function<void()> callFunct);
|
||||
};
|
||||
} // ns
|
||||
|
||||
|
||||
Reference in New Issue
Block a user