From e10ce5440e23795952aa50a32b8c7c4d8acec401 Mon Sep 17 00:00:00 2001 From: Adam Jorgensen Date: Tue, 13 Aug 2019 20:22:01 +0200 Subject: [PATCH] #2: Removed PDCurses and switch main project in solution --- .gitmodules | 3 - PDCurses | 1 - .../GeneratedFiles/qrc_XBOFSWinQT5GUI.cpp | 46 ++++++++ .../GeneratedFiles/ui_XBOFSWinQT5GUI.h | 66 +++++++++++ XBOFS.win.sln | 4 + XBOFS.win/PDCursesUIManager.cpp | 103 ------------------ XBOFS.win/PDCursesUIManager.h | 27 ----- XBOFS.win/XBOFS.win.vcxproj | 3 - XBOFS.win/XBOFS.win.vcxproj.filters | 9 -- XBOFS.win/main.cpp | 20 ---- pre-build.cmd | 5 +- 11 files changed, 117 insertions(+), 170 deletions(-) delete mode 160000 PDCurses create mode 100644 XBOFS.win.qt5/GeneratedFiles/qrc_XBOFSWinQT5GUI.cpp create mode 100644 XBOFS.win.qt5/GeneratedFiles/ui_XBOFSWinQT5GUI.h delete mode 100644 XBOFS.win/PDCursesUIManager.cpp delete mode 100644 XBOFS.win/PDCursesUIManager.h delete mode 100644 XBOFS.win/main.cpp diff --git a/.gitmodules b/.gitmodules index 3c4c637..f30108b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ [submodule "ViGEmClient"] path = ViGEmClient url = https://github.com/ViGEm/ViGEmClient -[submodule "PDCurses"] - path = PDCurses - url = https://github.com/wmcbrine/PDCurses diff --git a/PDCurses b/PDCurses deleted file mode 160000 index 2467ab2..0000000 --- a/PDCurses +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2467ab2b6c07163d0171b80ad6c252c29da28173 diff --git a/XBOFS.win.qt5/GeneratedFiles/qrc_XBOFSWinQT5GUI.cpp b/XBOFS.win.qt5/GeneratedFiles/qrc_XBOFSWinQT5GUI.cpp new file mode 100644 index 0000000..3d478ba --- /dev/null +++ b/XBOFS.win.qt5/GeneratedFiles/qrc_XBOFSWinQT5GUI.cpp @@ -0,0 +1,46 @@ +/**************************************************************************** +** Resource object code +** +** Created by: The Resource Compiler for Qt version 5.13.0 +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#ifdef QT_NAMESPACE +# define QT_RCC_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name +# define QT_RCC_MANGLE_NAMESPACE0(x) x +# define QT_RCC_MANGLE_NAMESPACE1(a, b) a##_##b +# define QT_RCC_MANGLE_NAMESPACE2(a, b) QT_RCC_MANGLE_NAMESPACE1(a,b) +# define QT_RCC_MANGLE_NAMESPACE(name) QT_RCC_MANGLE_NAMESPACE2( \ + QT_RCC_MANGLE_NAMESPACE0(name), QT_RCC_MANGLE_NAMESPACE0(QT_NAMESPACE)) +#else +# define QT_RCC_PREPEND_NAMESPACE(name) name +# define QT_RCC_MANGLE_NAMESPACE(name) name +#endif + +#ifdef QT_NAMESPACE +namespace QT_NAMESPACE { +#endif + +#ifdef QT_NAMESPACE +} +#endif + +int QT_RCC_MANGLE_NAMESPACE(qInitResources_XBOFSWinQT5GUI)(); +int QT_RCC_MANGLE_NAMESPACE(qInitResources_XBOFSWinQT5GUI)() +{ + return 1; +} + +int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_XBOFSWinQT5GUI)(); +int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_XBOFSWinQT5GUI)() +{ + return 1; +} + +namespace { + struct initializer { + initializer() { QT_RCC_MANGLE_NAMESPACE(qInitResources_XBOFSWinQT5GUI)(); } + ~initializer() { QT_RCC_MANGLE_NAMESPACE(qCleanupResources_XBOFSWinQT5GUI)(); } + } dummy; +} diff --git a/XBOFS.win.qt5/GeneratedFiles/ui_XBOFSWinQT5GUI.h b/XBOFS.win.qt5/GeneratedFiles/ui_XBOFSWinQT5GUI.h new file mode 100644 index 0000000..2341c1a --- /dev/null +++ b/XBOFS.win.qt5/GeneratedFiles/ui_XBOFSWinQT5GUI.h @@ -0,0 +1,66 @@ +/******************************************************************************** +** Form generated from reading UI file 'XBOFSWinQT5GUI.ui' +** +** Created by: Qt User Interface Compiler version 5.13.0 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_XBOFSWINQT5GUI_H +#define UI_XBOFSWINQT5GUI_H + +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_XBOFSWinQT5GUIClass +{ +public: + QMenuBar *menuBar; + QToolBar *mainToolBar; + QWidget *centralWidget; + QStatusBar *statusBar; + + void setupUi(QMainWindow *XBOFSWinQT5GUIClass) + { + if (XBOFSWinQT5GUIClass->objectName().isEmpty()) + XBOFSWinQT5GUIClass->setObjectName(QString::fromUtf8("XBOFSWinQT5GUIClass")); + XBOFSWinQT5GUIClass->resize(600, 400); + menuBar = new QMenuBar(XBOFSWinQT5GUIClass); + menuBar->setObjectName(QString::fromUtf8("menuBar")); + XBOFSWinQT5GUIClass->setMenuBar(menuBar); + mainToolBar = new QToolBar(XBOFSWinQT5GUIClass); + mainToolBar->setObjectName(QString::fromUtf8("mainToolBar")); + XBOFSWinQT5GUIClass->addToolBar(mainToolBar); + centralWidget = new QWidget(XBOFSWinQT5GUIClass); + centralWidget->setObjectName(QString::fromUtf8("centralWidget")); + XBOFSWinQT5GUIClass->setCentralWidget(centralWidget); + statusBar = new QStatusBar(XBOFSWinQT5GUIClass); + statusBar->setObjectName(QString::fromUtf8("statusBar")); + XBOFSWinQT5GUIClass->setStatusBar(statusBar); + + retranslateUi(XBOFSWinQT5GUIClass); + + QMetaObject::connectSlotsByName(XBOFSWinQT5GUIClass); + } // setupUi + + void retranslateUi(QMainWindow *XBOFSWinQT5GUIClass) + { + XBOFSWinQT5GUIClass->setWindowTitle(QCoreApplication::translate("XBOFSWinQT5GUIClass", "XBOFSWinQT5GUI", nullptr)); + } // retranslateUi + +}; + +namespace Ui { + class XBOFSWinQT5GUIClass: public Ui_XBOFSWinQT5GUIClass {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_XBOFSWINQT5GUI_H diff --git a/XBOFS.win.sln b/XBOFS.win.sln index f492d8d..30a3aba 100644 --- a/XBOFS.win.sln +++ b/XBOFS.win.sln @@ -33,6 +33,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "presets", "presets", "{98CB EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XBOFS.win.qt5", "XBOFS.win.qt5\XBOFS.win.qt5.vcxproj", "{B12702AD-ABFB-343A-A199-8E24837244A3}" + ProjectSection(ProjectDependencies) = postProject + {F6104731-5815-4BBA-A558-E859DD039413} = {F6104731-5815-4BBA-A558-E859DD039413} + {7DB06674-1F4F-464B-8E1C-172E9587F9DC} = {7DB06674-1F4F-464B-8E1C-172E9587F9DC} + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/XBOFS.win/PDCursesUIManager.cpp b/XBOFS.win/PDCursesUIManager.cpp deleted file mode 100644 index 58c4ef0..0000000 --- a/XBOFS.win/PDCursesUIManager.cpp +++ /dev/null @@ -1,103 +0,0 @@ -#include "PDCursesUIManager.h" - -#include - -PDCursesUIManager::PDCursesUIManager(DWORD parentThreadId) -: Thread("PDCursesUIManager", "PDCursesUIManager", parentThreadId, parentThreadId) -{ -} - -void PDCursesUIManager::wait() -{ - WaitForSingleObject(this->threadHandle, INFINITE); -} - -int PDCursesUIManager::checkMailbox() -{ - MSG message; - int messageCount = 0; - while (PeekMessage(&message, NULL, WM_USER, WM_APP, PM_REMOVE) != FALSE) { - messageCount++; - DWORD threadId = message.wParam; - THREAD_MESSAGES threadMessage = (THREAD_MESSAGES)message.message; - switch (threadMessage) { - case RAWUVEF_WIN_USB_DEVICE_MANAGER_STARTED: - case RAWUVEF_WIN_USB_DEVICE_MANAGER_SCANNING: - case RAWUVEF_WIN_USB_DEVICE_MANAGER_SLEEPING: - case RAWUVEF_WIN_USB_DEVICE_MANAGER_TERMINATING: - case RAWUVEF_WIN_USB_DEVICE_MANAGER_ERROR: - this->winUsbDeviceManagerStatus = threadMessage; - break; - case RAWUVEF_WIN_USB_DEVICE_STARTED: - case RAWUVEF_WIN_USB_DEVICE_VIGEM_CONNECT: - case RAWUVEF_WIN_USB_DEVICE_VIGEM_TARGET_ADD: - case RAWUVEF_WIN_USB_DEVICE_OPEN: - case RAWUVEF_WIN_USB_DEVICE_INIT: - case RAWUVEF_WIN_USB_DEVICE_READ_INPUT: - case RAWUVEF_WIN_USB_DEVICE_TERMINATING: - case RAWUVEF_WIN_USB_DEVICE_ERROR: - if (this->winUsbDeviceStatusMap.find(threadId) == this->winUsbDeviceStatusMap.end()) this->winUsbDeviceThreadIdList.push_back(threadId); - this->winUsbDeviceStatusMap.insert_or_assign(threadId, threadMessage); - break; - case RAWUVEF_STOPPED: - { - if (this->winUsbDeviceStatusMap.find(threadId) == this->winUsbDeviceStatusMap.end()) { - this->logger->warn("Thread %v not in WinUsbDeviceStatusMap", threadId); - break; - } - auto predicate = [threadId](DWORD threadIdB) { return threadId == threadIdB; }; - this->winUsbDeviceThreadIdList.remove_if(predicate); - this->winUsbDeviceStatusMap.erase(threadId); - break; - } - default: - this->logger->warn("Unsupported message: %d", threadMessage); - } - } - return messageCount; -} - -void PDCursesUIManager::render(bool exiting) -{ - erase(); - mvwprintw(this->window, 0, 0, "XBOFS.win v0.3a %s", exiting ? "" : "(Press Q to exit)"); - mvwprintw(this->window, 2, 0, "WinUSB Device Manager (Thread ID %d) status: %s", this->winUsbDeviceManager->getThreadId(), threadMessageToString(this->winUsbDeviceManagerStatus).c_str()); - auto counter = 0; - for (auto threadId : this->winUsbDeviceThreadIdList) { - mvwprintw(this->window, 3 + counter, 0, "WinUSB Device %d (Thread ID %d) status: %s", counter, threadId, threadMessageToString(this->winUsbDeviceStatusMap.at(threadId)).c_str()); - counter++; - } - if (exiting) mvwprintw(this->window, 4 + counter, 0, "Exiting. Waiting for all threads to exit..."); - refresh(); -} - -DWORD PDCursesUIManager::run() -{ - this->logger->info("Started thread for %v", this->identifier); - MSG threadMessage; - bool loop = true; - this->window = initscr(); - nodelay(this->window, TRUE); - noecho(); - this->logger->info("Starting WinUsbDeviceManager"); - this->winUsbDeviceManager = new WinUsbDeviceManager(this->threadId, this->threadId); - this->logger->info("Entering GUI processing loop"); - while (true) { - if (this->checkMailbox() > 0) this->render(false); - auto key = getch(); - if (key == 'Q' || key == 'q') break; - } - this->logger->info("Completed GUI processing loop"); - auto terminateWinUsbDeviceManager = [](LPVOID data) -> DWORD { - WinUsbDeviceManager* winUsbDeviceManager = (WinUsbDeviceManager*)data; - delete winUsbDeviceManager; - return 0; - }; - auto threadHandle = CreateThread(NULL, 0, terminateWinUsbDeviceManager, (LPVOID)this->winUsbDeviceManager, 0, NULL); - this->logger->info("Terminating WinUsbDeviceManager"); - while (WaitForSingleObject(threadHandle, 0) != WAIT_OBJECT_0) { - if (!this->checkMailbox()) break; - this->render(true); - } - return 0; -} diff --git a/XBOFS.win/PDCursesUIManager.h b/XBOFS.win/PDCursesUIManager.h deleted file mode 100644 index 3243513..0000000 --- a/XBOFS.win/PDCursesUIManager.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once -#include "pch.h" -#include "thread.h" -#include "WinUsbDeviceManager.h" - -#include - -class PDCursesUIManager : public Thread -{ -public: - PDCursesUIManager(DWORD parentThreadId); - ~PDCursesUIManager() {}; - - DWORD run(); - void wait(); -protected: - WINDOW *window; - WinUsbDeviceManager *winUsbDeviceManager; - THREAD_MESSAGES winUsbDeviceManagerStatus; - - std::list winUsbDeviceThreadIdList; - std::unordered_map winUsbDeviceStatusMap; - - void render(bool exiting); - int checkMailbox(); -}; - diff --git a/XBOFS.win/XBOFS.win.vcxproj b/XBOFS.win/XBOFS.win.vcxproj index 538c019..c1f5b45 100644 --- a/XBOFS.win/XBOFS.win.vcxproj +++ b/XBOFS.win/XBOFS.win.vcxproj @@ -41,8 +41,6 @@ - - @@ -52,7 +50,6 @@ - diff --git a/XBOFS.win/XBOFS.win.vcxproj.filters b/XBOFS.win/XBOFS.win.vcxproj.filters index c451e5a..0a978b2 100644 --- a/XBOFS.win/XBOFS.win.vcxproj.filters +++ b/XBOFS.win/XBOFS.win.vcxproj.filters @@ -34,9 +34,6 @@ Header Files - - Header Files - Header Files @@ -45,9 +42,6 @@ - - Source Files - Source Files @@ -57,9 +51,6 @@ Source Files - - Source Files - Source Files diff --git a/XBOFS.win/main.cpp b/XBOFS.win/main.cpp deleted file mode 100644 index deae802..0000000 --- a/XBOFS.win/main.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "pch.h" -#include "PDCursesUIManager.h" - -#include -#include -#include -#include - -INITIALIZE_EASYLOGGINGPP - -LONG __cdecl _tmain(LONG Argc, LPTSTR *Argv) { - el::Configurations conf("easyloggingpp.conf"); - el::Loggers::setDefaultConfigurations(conf, true); - el::Logger* logger = el::Loggers::getLogger("RazerAtroxWinUSBVigEmFeeder"); - DWORD threadId = GetCurrentThreadId(); - logger->info("Application start-up. Press enter to exit"); - std::unique_ptr manager(new PDCursesUIManager(threadId)); - manager->wait(); - logger->info("Application shut-down"); -} diff --git a/pre-build.cmd b/pre-build.cmd index 5dd2f37..5248aef 100644 --- a/pre-build.cmd +++ b/pre-build.cmd @@ -5,7 +5,4 @@ git submodule update ECHO Patching VigEmClient CD VigEmClient git apply ..\VigEmClient.patch 2>nul & exit 0 -CD .. -ECHO Building pdcurses -CD PDCurses\wincon -nmake -f Makefile.vc WIDE=Y UTF8=Y +CD .. \ No newline at end of file