deskflow/src/apps/deskflow-daemon/deskflow-daemon.cpp

70 lines
1.7 KiB
C++
Raw Normal View History

2012-06-10 16:50:54 +00:00
/*
* Deskflow -- mouse and keyboard sharing utility
* 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
*/
#include "arch/Arch.h"
#include "base/EventQueue.h"
#include "base/Log.h"
#include "deskflow/DaemonApp.h"
#include "arch/Arch.h"
#include "base/EventQueue.h"
#include "base/Log.h"
#if SYSAPI_WIN32
2012-06-10 16:50:54 +00:00
#include "arch/win32/ArchMiscWindows.h"
2012-06-10 16:50:54 +00:00
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#endif
#include <QCoreApplication>
#include <QThread>
int main(int argc, char **argv)
{
#if SYSAPI_WIN32
// Save window instance for later use, e.g. `GetModuleFileName` which is used when installing the daemon.
ArchMiscWindows::setInstanceWin32(GetModuleHandle(nullptr));
#endif
Arch arch;
arch.init();
Log log;
EventQueue events;
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
}
#if SYSAPI_WIN32
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
return main(__argc, __argv);
}
2012-06-10 16:50:54 +00:00
#endif