2012-06-10 16:50:54 +00:00
|
|
|
/*
|
2024-09-17 19:00:25 +00:00
|
|
|
* Deskflow -- mouse and keyboard sharing utility
|
2025-01-24 00:11:17 +00:00
|
|
|
* SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd.
|
|
|
|
|
* SPDX-FileCopyrightText: (C) 2012 Nick Bolton
|
|
|
|
|
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
|
2012-06-10 16:50:54 +00:00
|
|
|
*/
|
|
|
|
|
|
2025-02-06 18:13:54 +00:00
|
|
|
#include "arch/Arch.h"
|
|
|
|
|
#include "base/EventQueue.h"
|
|
|
|
|
#include "base/Log.h"
|
2024-09-17 19:00:25 +00:00
|
|
|
#include "deskflow/DaemonApp.h"
|
2014-02-28 12:36:45 +00:00
|
|
|
|
2025-02-28 12:46:12 +00:00
|
|
|
#include "arch/Arch.h"
|
|
|
|
|
#include "base/EventQueue.h"
|
|
|
|
|
#include "base/Log.h"
|
|
|
|
|
|
|
|
|
|
#if SYSAPI_WIN32
|
2012-06-10 16:50:54 +00:00
|
|
|
|
2025-02-06 12:03:51 +00:00
|
|
|
#include "arch/win32/ArchMiscWindows.h"
|
2012-06-10 16:50:54 +00:00
|
|
|
|
|
|
|
|
#define WIN32_LEAN_AND_MEAN
|
|
|
|
|
#include <Windows.h>
|
|
|
|
|
|
2025-02-06 12:03:51 +00:00
|
|
|
#endif
|
|
|
|
|
|
2025-02-06 18:13:54 +00:00
|
|
|
#include <QCoreApplication>
|
|
|
|
|
#include <QThread>
|
|
|
|
|
|
2025-02-06 12:03:51 +00:00
|
|
|
int main(int argc, char **argv)
|
2024-10-17 18:04:35 +00:00
|
|
|
{
|
2025-02-28 12:46:12 +00:00
|
|
|
#if SYSAPI_WIN32
|
2025-02-06 18:13:54 +00:00
|
|
|
// Save window instance for later use, e.g. `GetModuleFileName` which is used when installing the daemon.
|
2025-02-28 12:46:12 +00:00
|
|
|
ArchMiscWindows::setInstanceWin32(GetModuleHandle(nullptr));
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
Arch arch;
|
|
|
|
|
arch.init();
|
|
|
|
|
|
|
|
|
|
Log log;
|
|
|
|
|
EventQueue events;
|
|
|
|
|
|
2025-02-06 18:13:54 +00:00
|
|
|
LOG((CLOG_PRINT "%s daemon (v%s)", kAppName, kVersion));
|
|
|
|
|
|
|
|
|
|
QCoreApplication app(argc, argv);
|
|
|
|
|
|
|
|
|
|
// Must be on the heap, as we're moving it to a thread.
|
|
|
|
|
DaemonApp *pDaemon = new DaemonApp(&events);
|
|
|
|
|
QObject::connect(pDaemon, &DaemonApp::serviceInstalled, &app, &QCoreApplication::quit);
|
|
|
|
|
QObject::connect(pDaemon, &DaemonApp::serviceUninstalled, &app, &QCoreApplication::quit);
|
|
|
|
|
pDaemon->init(argc, argv);
|
|
|
|
|
|
|
|
|
|
QThread *thread = new QThread();
|
|
|
|
|
pDaemon->moveToThread(thread);
|
|
|
|
|
QObject::connect(thread, &QThread::started, pDaemon, &DaemonApp::run);
|
|
|
|
|
QObject::connect(thread, &QThread::finished, pDaemon, &QObject::deleteLater);
|
|
|
|
|
QObject::connect(thread, &QThread::finished, thread, &QThread::deleteLater);
|
|
|
|
|
thread->start();
|
|
|
|
|
|
|
|
|
|
return QCoreApplication::exec();
|
2012-06-10 16:50:54 +00:00
|
|
|
}
|
|
|
|
|
|
2025-02-06 12:03:51 +00:00
|
|
|
#if SYSAPI_WIN32
|
|
|
|
|
|
|
|
|
|
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
|
|
|
|
{
|
|
|
|
|
return main(__argc, __argv);
|
|
|
|
|
}
|
|
|
|
|
|
2012-06-10 16:50:54 +00:00
|
|
|
#endif
|