|
|
@ -146,6 +146,13 @@ Application::Application(const QString &id, int &argc, char **argv) |
|
|
|
Logger::instance()->addMessage(tr("qBittorrent %1 started", "qBittorrent v3.2.0alpha started").arg(QBT_VERSION)); |
|
|
|
Logger::instance()->addMessage(tr("qBittorrent %1 started", "qBittorrent v3.2.0alpha started").arg(QBT_VERSION)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Application::~Application() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// we still need to call cleanup()
|
|
|
|
|
|
|
|
// in case the App failed to start
|
|
|
|
|
|
|
|
cleanup(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#ifndef DISABLE_GUI |
|
|
|
#ifndef DISABLE_GUI |
|
|
|
QPointer<MainWindow> Application::mainWindow() |
|
|
|
QPointer<MainWindow> Application::mainWindow() |
|
|
|
{ |
|
|
|
{ |
|
|
@ -483,7 +490,12 @@ int Application::exec(const QStringList ¶ms) |
|
|
|
|
|
|
|
|
|
|
|
#ifndef DISABLE_WEBUI |
|
|
|
#ifndef DISABLE_WEBUI |
|
|
|
m_webui = new WebUI; |
|
|
|
m_webui = new WebUI; |
|
|
|
#endif |
|
|
|
#ifdef DISABLE_GUI |
|
|
|
|
|
|
|
if (m_webui->isErrored()) |
|
|
|
|
|
|
|
return 1; |
|
|
|
|
|
|
|
connect(m_webui, &WebUI::fatalError, this, []() { QCoreApplication::exit(1); }); |
|
|
|
|
|
|
|
#endif // DISABLE_GUI
|
|
|
|
|
|
|
|
#endif // DISABLE_WEBUI
|
|
|
|
|
|
|
|
|
|
|
|
new RSS::Session; // create RSS::Session singleton
|
|
|
|
new RSS::Session; // create RSS::Session singleton
|
|
|
|
new RSS::AutoDownloader; // create RSS::AutoDownloader singleton
|
|
|
|
new RSS::AutoDownloader; // create RSS::AutoDownloader singleton
|
|
|
@ -642,14 +654,13 @@ void Application::shutdownCleanup(QSessionManager &manager) |
|
|
|
|
|
|
|
|
|
|
|
void Application::cleanup() |
|
|
|
void Application::cleanup() |
|
|
|
{ |
|
|
|
{ |
|
|
|
#ifndef DISABLE_GUI |
|
|
|
|
|
|
|
#ifdef Q_OS_WIN |
|
|
|
|
|
|
|
// cleanup() can be called multiple times during shutdown. We only need it once.
|
|
|
|
// cleanup() can be called multiple times during shutdown. We only need it once.
|
|
|
|
static QAtomicInt alreadyDone; |
|
|
|
static QAtomicInt alreadyDone; |
|
|
|
if (!alreadyDone.testAndSetAcquire(0, 1)) |
|
|
|
if (!alreadyDone.testAndSetAcquire(0, 1)) |
|
|
|
return; |
|
|
|
return; |
|
|
|
#endif // Q_OS_WIN
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef DISABLE_GUI |
|
|
|
|
|
|
|
if (m_window) { |
|
|
|
// Hide the window and not leave it on screen as
|
|
|
|
// Hide the window and not leave it on screen as
|
|
|
|
// unresponsive. Also for Windows take the WinId
|
|
|
|
// unresponsive. Also for Windows take the WinId
|
|
|
|
// after it's hidden, because hide() may cause a
|
|
|
|
// after it's hidden, because hide() may cause a
|
|
|
@ -672,7 +683,7 @@ void Application::cleanup() |
|
|
|
// otherwise the system shutdown will continue even
|
|
|
|
// otherwise the system shutdown will continue even
|
|
|
|
// though we created a ShutdownBlockReason
|
|
|
|
// though we created a ShutdownBlockReason
|
|
|
|
m_window->cleanup(); |
|
|
|
m_window->cleanup(); |
|
|
|
|
|
|
|
} |
|
|
|
#endif // DISABLE_GUI
|
|
|
|
#endif // DISABLE_GUI
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef DISABLE_WEBUI |
|
|
|
#ifndef DISABLE_WEBUI |
|
|
@ -697,6 +708,7 @@ void Application::cleanup() |
|
|
|
Utils::Fs::removeDirRecursive(Utils::Fs::tempPath()); |
|
|
|
Utils::Fs::removeDirRecursive(Utils::Fs::tempPath()); |
|
|
|
|
|
|
|
|
|
|
|
#ifndef DISABLE_GUI |
|
|
|
#ifndef DISABLE_GUI |
|
|
|
|
|
|
|
if (m_window) { |
|
|
|
#ifdef Q_OS_WIN |
|
|
|
#ifdef Q_OS_WIN |
|
|
|
typedef BOOL (WINAPI *PSHUTDOWNBRDESTROY)(HWND); |
|
|
|
typedef BOOL (WINAPI *PSHUTDOWNBRDESTROY)(HWND); |
|
|
|
PSHUTDOWNBRDESTROY shutdownBRDestroy = (PSHUTDOWNBRDESTROY)::GetProcAddress(::GetModuleHandleW(L"User32.dll"), "ShutdownBlockReasonDestroy"); |
|
|
|
PSHUTDOWNBRDESTROY shutdownBRDestroy = (PSHUTDOWNBRDESTROY)::GetProcAddress(::GetModuleHandleW(L"User32.dll"), "ShutdownBlockReasonDestroy"); |
|
|
@ -705,6 +717,7 @@ void Application::cleanup() |
|
|
|
shutdownBRDestroy((HWND)m_window->effectiveWinId()); |
|
|
|
shutdownBRDestroy((HWND)m_window->effectiveWinId()); |
|
|
|
#endif // Q_OS_WIN
|
|
|
|
#endif // Q_OS_WIN
|
|
|
|
delete m_window; |
|
|
|
delete m_window; |
|
|
|
|
|
|
|
} |
|
|
|
#endif // DISABLE_GUI
|
|
|
|
#endif // DISABLE_GUI
|
|
|
|
|
|
|
|
|
|
|
|
if (m_shutdownAct != ShutdownDialogAction::Exit) { |
|
|
|
if (m_shutdownAct != ShutdownDialogAction::Exit) { |
|
|
|