mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-14 06:57:01 +00:00
8718c455a6
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35981 a592a061-630c-0410-9148-cb99ea01b6c8
59 lines
1.1 KiB
C++
59 lines
1.1 KiB
C++
/**
|
|
* \file InGuiThread.cpp
|
|
* This file is part of LyX, the document processor.
|
|
* Licence details can be found in the file COPYING.
|
|
*
|
|
* \author Peter Kümmel
|
|
*
|
|
* Full author contact details are available in file CREDITS.
|
|
*/
|
|
|
|
#include <config.h>
|
|
|
|
#include "InGuiThread.h"
|
|
|
|
#include "frontends/Application.h"
|
|
|
|
#include <QThread>
|
|
#include <QEventLoop>
|
|
#include <QApplication>
|
|
#include <QMutexLocker>
|
|
|
|
|
|
namespace lyx {
|
|
namespace frontend {
|
|
|
|
|
|
IntoGuiThreadMover::IntoGuiThreadMover()
|
|
{
|
|
}
|
|
|
|
|
|
void IntoGuiThreadMover::callInGuiThread()
|
|
{
|
|
if (!theApp() || !QApplication::instance() ||
|
|
QThread::currentThread() == QApplication::instance()->thread()) {
|
|
synchronousFunctionCall();
|
|
} else {
|
|
moveToThread(QApplication::instance()->thread());
|
|
connect(this, SIGNAL(triggerFunctionCall()),
|
|
this, SLOT(doFunctionCall()), Qt::QueuedConnection);
|
|
QMutexLocker lock(&sync_mutex_);
|
|
Q_EMIT triggerFunctionCall();
|
|
condition_.wait(&sync_mutex_);
|
|
}
|
|
}
|
|
|
|
|
|
void IntoGuiThreadMover::doFunctionCall()
|
|
{
|
|
synchronousFunctionCall();
|
|
condition_.wakeOne();
|
|
}
|
|
|
|
|
|
} // namespace frontend
|
|
} // namespace lyx
|
|
|
|
#include "moc_InGuiThread.cpp"
|