Workaround for Windows XP: It appears that QThread::isRunning() may return TRUE even after the QThread object has already emitted the "finished" signal. For some reason this only occurs on Windows XP, but never occurs on my Windows 7 machine. As a workaround we will call QThread::yieldCurrentThread() and then try again. This seems to fix the issue on my Windows XP machine.
This commit is contained in:
parent
9e5fbdaaff
commit
18094c66f0
@ -30,7 +30,7 @@
|
|||||||
#define VER_LAMEXP_MINOR_LO 4
|
#define VER_LAMEXP_MINOR_LO 4
|
||||||
#define VER_LAMEXP_TYPE Beta
|
#define VER_LAMEXP_TYPE Beta
|
||||||
#define VER_LAMEXP_PATCH 7
|
#define VER_LAMEXP_PATCH 7
|
||||||
#define VER_LAMEXP_BUILD 912
|
#define VER_LAMEXP_BUILD 914
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Tool versions (minimum expected versions!)
|
// Tool versions (minimum expected versions!)
|
||||||
|
@ -117,15 +117,19 @@ void SplashScreen::showSplash(QThread *thread)
|
|||||||
//Start the timer
|
//Start the timer
|
||||||
timer->start(30720);
|
timer->start(30720);
|
||||||
|
|
||||||
//Loop while thread is running
|
//Loop while thread is still running
|
||||||
while(thread->isRunning())
|
while(thread->isRunning())
|
||||||
{
|
{
|
||||||
loop->exec();
|
loop->exec();
|
||||||
if(thread->isRunning())
|
if(thread->isRunning())
|
||||||
|
{
|
||||||
|
QThread::yieldCurrentThread();
|
||||||
|
if(thread->isRunning())
|
||||||
{
|
{
|
||||||
qWarning("Potential deadlock in initialization thread!");
|
qWarning("Potential deadlock in initialization thread!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Stop the timer
|
//Stop the timer
|
||||||
timer->stop();
|
timer->stop();
|
||||||
|
Loading…
Reference in New Issue
Block a user