Fixed a bug that could lead to an infinite loop when trying to install an update from auto-update and the WMA decoder component was not installed yet.
This commit is contained in:
parent
9b31e95690
commit
5902f1822d
@ -25,7 +25,7 @@
|
|||||||
#define VER_LAMEXP_MAJOR 4
|
#define VER_LAMEXP_MAJOR 4
|
||||||
#define VER_LAMEXP_MINOR_HI 0
|
#define VER_LAMEXP_MINOR_HI 0
|
||||||
#define VER_LAMEXP_MINOR_LO 0
|
#define VER_LAMEXP_MINOR_LO 0
|
||||||
#define VER_LAMEXP_BUILD 317
|
#define VER_LAMEXP_BUILD 319
|
||||||
#define VER_LAMEXP_SUFFIX RC-2
|
#define VER_LAMEXP_SUFFIX RC-2
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -439,11 +439,13 @@ void MainWindow::addFiles(const QStringList &files)
|
|||||||
/*
|
/*
|
||||||
* Download and install WMA Decoder component
|
* Download and install WMA Decoder component
|
||||||
*/
|
*/
|
||||||
void MainWindow::installWMADecoder(void)
|
bool MainWindow::installWMADecoder(void)
|
||||||
{
|
{
|
||||||
static const char *download_url = "http://www.nch.com.au/components/wmawav.exe";
|
static const char *download_url = "http://www.nch.com.au/components/wmawav.exe";
|
||||||
static const char *download_hash = "52a3b0e6690faf3f830c336d3c0eadfb7a4e9bc6";
|
static const char *download_hash = "52a3b0e6690faf3f830c336d3c0eadfb7a4e9bc6";
|
||||||
|
|
||||||
|
bool bResult = false;
|
||||||
|
|
||||||
QString binaryWGet = lamexp_lookup_tool("wget.exe");
|
QString binaryWGet = lamexp_lookup_tool("wget.exe");
|
||||||
QString binaryElevator = lamexp_lookup_tool("elevator.exe");
|
QString binaryElevator = lamexp_lookup_tool("elevator.exe");
|
||||||
|
|
||||||
@ -473,7 +475,7 @@ void MainWindow::installWMADecoder(void)
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFile setupFileContent(setupFile);
|
QFile setupFileContent(setupFile);
|
||||||
@ -494,7 +496,7 @@ void MainWindow::installWMADecoder(void)
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||||
@ -505,10 +507,32 @@ void MainWindow::installWMADecoder(void)
|
|||||||
|
|
||||||
if(QMessageBox::information(this, tr("WMA Decoder"), tr("The WMA File Decoder has been installed. Please restart LameXP now!"), tr("Quit LameXP"), tr("Postpone")) == 0)
|
if(QMessageBox::information(this, tr("WMA Decoder"), tr("The WMA File Decoder has been installed. Please restart LameXP now!"), tr("Quit LameXP"), tr("Postpone")) == 0)
|
||||||
{
|
{
|
||||||
QApplication::quit();
|
bResult = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return bResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check for updates
|
||||||
|
*/
|
||||||
|
bool MainWindow::checkForUpdates(void)
|
||||||
|
{
|
||||||
|
bool bReadyToInstall = false;
|
||||||
|
|
||||||
|
UpdateDialog *updateDialog = new UpdateDialog(m_settings, this);
|
||||||
|
updateDialog->exec();
|
||||||
|
|
||||||
|
if(updateDialog->getSuccess())
|
||||||
|
{
|
||||||
|
m_settings->autoUpdateLastCheck(QDate::currentDate().toString(Qt::ISODate));
|
||||||
|
bReadyToInstall = updateDialog->updateReadyToInstall();
|
||||||
|
}
|
||||||
|
|
||||||
|
LAMEXP_DELETE(updateDialog);
|
||||||
|
return bReadyToInstall;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
@ -739,7 +763,7 @@ void MainWindow::windowShown(void)
|
|||||||
PlaySound(MAKEINTRESOURCE(IDR_WAVE_WHAMMY), GetModuleHandle(NULL), SND_RESOURCE | SND_SYNC);
|
PlaySound(MAKEINTRESOURCE(IDR_WAVE_WHAMMY), GetModuleHandle(NULL), SND_RESOURCE | SND_SYNC);
|
||||||
if(QMessageBox::warning(this, tr("LameXP - Expired"), QString("<nobr>%1<br>%2</nobr>").arg(tr("This demo (pre-release) version of LameXP has expired at %1.").arg(lamexp_version_expires().toString(Qt::ISODate)), tr("LameXP is free software and release versions won't expire.")), tr("Check for Updates"), tr("Exit Program")) == 0)
|
if(QMessageBox::warning(this, tr("LameXP - Expired"), QString("<nobr>%1<br>%2</nobr>").arg(tr("This demo (pre-release) version of LameXP has expired at %1.").arg(lamexp_version_expires().toString(Qt::ISODate)), tr("LameXP is free software and release versions won't expire.")), tr("Check for Updates"), tr("Exit Program")) == 0)
|
||||||
{
|
{
|
||||||
checkUpdatesActionActivated();
|
checkForUpdates();
|
||||||
}
|
}
|
||||||
QApplication::quit();
|
QApplication::quit();
|
||||||
return;
|
return;
|
||||||
@ -752,7 +776,11 @@ void MainWindow::windowShown(void)
|
|||||||
qWarning("Binary is more than a year old, time to update!");
|
qWarning("Binary is more than a year old, time to update!");
|
||||||
if(QMessageBox::warning(this, tr("Urgent Update"), QString("<nobr>%1</nobr>").arg(tr("Your version of LameXP is more than a year old. Time for an update!")), tr("Check for Updates"), tr("Exit Program")) == 0)
|
if(QMessageBox::warning(this, tr("Urgent Update"), QString("<nobr>%1</nobr>").arg(tr("Your version of LameXP is more than a year old. Time for an update!")), tr("Check for Updates"), tr("Exit Program")) == 0)
|
||||||
{
|
{
|
||||||
checkUpdatesActionActivated();
|
if(checkForUpdates())
|
||||||
|
{
|
||||||
|
QApplication::quit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -767,7 +795,11 @@ void MainWindow::windowShown(void)
|
|||||||
{
|
{
|
||||||
if(QMessageBox::information(this, tr("Update Reminder"), QString("<nobr>%1</nobr>").arg(lastUpdateCheck.isValid() ? tr("Your last update check was more than 14 days ago. Check for updates now?") : tr("Your did not check for LameXP updates yet. Check for updates now?")), tr("Check for Updates"), tr("Postpone")) == 0)
|
if(QMessageBox::information(this, tr("Update Reminder"), QString("<nobr>%1</nobr>").arg(lastUpdateCheck.isValid() ? tr("Your last update check was more than 14 days ago. Check for updates now?") : tr("Your did not check for LameXP updates yet. Check for updates now?")), tr("Check for Updates"), tr("Postpone")) == 0)
|
||||||
{
|
{
|
||||||
checkUpdatesActionActivated();
|
if(checkForUpdates())
|
||||||
|
{
|
||||||
|
QApplication::quit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -814,7 +846,11 @@ void MainWindow::windowShown(void)
|
|||||||
messageText += QString("%1</nobr>").arg(tr("Do you want to download and install the WMA File Decoder component now?"));
|
messageText += QString("%1</nobr>").arg(tr("Do you want to download and install the WMA File Decoder component now?"));
|
||||||
if(QMessageBox::information(this, tr("WMA Decoder Missing"), messageText, tr("Download && Install"), tr("Postpone")) == 0)
|
if(QMessageBox::information(this, tr("WMA Decoder Missing"), messageText, tr("Download && Install"), tr("Postpone")) == 0)
|
||||||
{
|
{
|
||||||
installWMADecoder();
|
if(installWMADecoder())
|
||||||
|
{
|
||||||
|
QApplication::quit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1453,13 +1489,10 @@ void MainWindow::checkUpdatesActionActivated(void)
|
|||||||
|
|
||||||
TEMP_HIDE_DROPBOX
|
TEMP_HIDE_DROPBOX
|
||||||
(
|
(
|
||||||
UpdateDialog *updateDialog = new UpdateDialog(m_settings, this);
|
if(checkForUpdates())
|
||||||
updateDialog->exec();
|
|
||||||
if(updateDialog->getSuccess())
|
|
||||||
{
|
{
|
||||||
m_settings->autoUpdateLastCheck(QDate::currentDate().toString(Qt::ISODate));
|
QApplication::quit();
|
||||||
}
|
}
|
||||||
LAMEXP_DELETE(updateDialog);
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2185,7 +2218,11 @@ void MainWindow::installWMADecoderActionTriggered(bool checked)
|
|||||||
{
|
{
|
||||||
if(QMessageBox::question(this, tr("Install WMA Decoder"), tr("Do you want to download and install the WMA File Decoder component now?"), tr("Download && Install"), tr("Cancel")) == 0)
|
if(QMessageBox::question(this, tr("Install WMA Decoder"), tr("Do you want to download and install the WMA File Decoder component now?"), tr("Download && Install"), tr("Cancel")) == 0)
|
||||||
{
|
{
|
||||||
installWMADecoder();
|
if(installWMADecoder())
|
||||||
|
{
|
||||||
|
QApplication::quit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,7 +124,8 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void addFiles(const QStringList &files);
|
void addFiles(const QStringList &files);
|
||||||
void installWMADecoder(void);
|
bool installWMADecoder(void);
|
||||||
|
bool checkForUpdates(void);
|
||||||
|
|
||||||
bool m_accepted;
|
bool m_accepted;
|
||||||
bool m_firstTimeShown;
|
bool m_firstTimeShown;
|
||||||
|
@ -111,7 +111,8 @@ UpdateDialog::UpdateDialog(SettingsModel *settings, QWidget *parent)
|
|||||||
m_updateInfo(NULL),
|
m_updateInfo(NULL),
|
||||||
m_settings(settings),
|
m_settings(settings),
|
||||||
m_logFile(new QStringList()),
|
m_logFile(new QStringList()),
|
||||||
m_success(false)
|
m_success(false),
|
||||||
|
m_updateReadyToInstall(false)
|
||||||
{
|
{
|
||||||
if(m_binaryWGet.isEmpty() || m_binaryGnuPG.isEmpty() || m_binaryUpdater.isEmpty() || m_binaryKeys.isEmpty())
|
if(m_binaryWGet.isEmpty() || m_binaryGnuPG.isEmpty() || m_binaryUpdater.isEmpty() || m_binaryKeys.isEmpty())
|
||||||
{
|
{
|
||||||
@ -565,7 +566,7 @@ void UpdateDialog::applyUpdate(void)
|
|||||||
if(process.exitCode() == 0)
|
if(process.exitCode() == 0)
|
||||||
{
|
{
|
||||||
statusLabel->setText("Update ready to install. Applicaion will quit...");
|
statusLabel->setText("Update ready to install. Applicaion will quit...");
|
||||||
QApplication::quit();
|
m_updateReadyToInstall = true;
|
||||||
accept();
|
accept();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -37,6 +37,7 @@ public:
|
|||||||
~UpdateDialog(void);
|
~UpdateDialog(void);
|
||||||
|
|
||||||
bool getSuccess(void) { return m_success; }
|
bool getSuccess(void) { return m_success; }
|
||||||
|
bool updateReadyToInstall(void) { return m_updateReadyToInstall; }
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void updateInit(void);
|
void updateInit(void);
|
||||||
@ -66,4 +67,5 @@ private:
|
|||||||
const QString m_binaryKeys;
|
const QString m_binaryKeys;
|
||||||
|
|
||||||
bool m_success;
|
bool m_success;
|
||||||
|
bool m_updateReadyToInstall;
|
||||||
};
|
};
|
||||||
|
@ -443,19 +443,26 @@ lamexp_cpu_t lamexp_detect_cpu_features(void)
|
|||||||
/*
|
/*
|
||||||
* Check for debugger
|
* Check for debugger
|
||||||
*/
|
*/
|
||||||
void WINAPI debugThreadProc(__in LPVOID lpParameter)
|
#if !defined(_DEBUG) || defined(NDEBUG)
|
||||||
|
void WINAPI lamexp_debug_thread_proc(__in LPVOID lpParameter)
|
||||||
{
|
{
|
||||||
BOOL remoteDebuggerPresent = FALSE;
|
while(!IsDebuggerPresent())
|
||||||
//CheckRemoteDebuggerPresent(GetCurrentProcess, &remoteDebuggerPresent);
|
|
||||||
|
|
||||||
while(!IsDebuggerPresent() && !remoteDebuggerPresent)
|
|
||||||
{
|
{
|
||||||
Sleep(333);
|
Sleep(333);
|
||||||
//CheckRemoteDebuggerPresent(GetCurrentProcess, &remoteDebuggerPresent);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TerminateProcess(GetCurrentProcess(), -1);
|
TerminateProcess(GetCurrentProcess(), -1);
|
||||||
}
|
}
|
||||||
|
HANDLE lamexp_debug_thread_init(void)
|
||||||
|
{
|
||||||
|
if(IsDebuggerPresent())
|
||||||
|
{
|
||||||
|
FatalAppExit(0, L"Not a debug build. Please unload debugger and try again!");
|
||||||
|
TerminateProcess(GetCurrentProcess(), -1);
|
||||||
|
}
|
||||||
|
return CreateThread(NULL, NULL, reinterpret_cast<LPTHREAD_START_ROUTINE>(&lamexp_debug_thread_proc), NULL, NULL, NULL);
|
||||||
|
}
|
||||||
|
static const HANDLE g_debug_thread = lamexp_debug_thread_init();
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check for compatibility mode
|
* Check for compatibility mode
|
||||||
|
@ -130,12 +130,7 @@ SIZE_T lamexp_dbg_private_bytes(void);
|
|||||||
qWarning("---------------------------------------------------------\n");
|
qWarning("---------------------------------------------------------\n");
|
||||||
#else
|
#else
|
||||||
#define LAMEXP_DEBUG 0
|
#define LAMEXP_DEBUG 0
|
||||||
#define LAMEXP_CHECK_DEBUG_BUILD \
|
#define LAMEXP_CHECK_DEBUG_BUILD
|
||||||
if(IsDebuggerPresent()) { \
|
|
||||||
FatalAppExit(0, L"Not a debug build. Please unload debugger and try again!"); \
|
|
||||||
TerminateProcess(GetCurrentProcess, -1); } \
|
|
||||||
CreateThread(NULL, NULL, reinterpret_cast<LPTHREAD_START_ROUTINE>(&debugThreadProc), NULL, NULL, NULL);
|
|
||||||
void WINAPI debugThreadProc(__in LPVOID lpParameter);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//Memory check
|
//Memory check
|
||||||
|
Loading…
Reference in New Issue
Block a user