Loading optimization (no GUI changes)
This commit is contained in:
parent
7e96e0efa5
commit
2c952a54d2
7 changed files with 277 additions and 182 deletions
143
main.cpp
143
main.cpp
|
|
@ -11,6 +11,7 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <thread>
|
||||
#include "cli.h"
|
||||
#include "ResourceManager.h"
|
||||
#include "NetworkClient.h"
|
||||
#include "NetworkServer.h"
|
||||
|
|
@ -32,24 +33,6 @@ io_connect_t macUSPCIO_driver_connection;
|
|||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
/*-------------------------------------------------------------*\
|
||||
| Command line functionality and return flags |
|
||||
\*-------------------------------------------------------------*/
|
||||
extern unsigned int cli_pre_detection(int argc, char *argv[]);
|
||||
extern unsigned int cli_post_detection(int argc, char *argv[]);
|
||||
|
||||
enum
|
||||
{
|
||||
RET_FLAG_PRINT_HELP = 1,
|
||||
RET_FLAG_START_GUI = 2,
|
||||
RET_FLAG_I2C_TOOLS = 4,
|
||||
RET_FLAG_START_MINIMIZED = 8,
|
||||
RET_FLAG_NO_DETECT = 16,
|
||||
RET_FLAG_CLI_POST_DETECTION = 32,
|
||||
RET_FLAG_START_SERVER = 64,
|
||||
RET_FLAG_NO_AUTO_CONNECT = 128,
|
||||
};
|
||||
|
||||
/******************************************************************************************\
|
||||
* *
|
||||
* InitializeTimerResolution (Win32) *
|
||||
|
|
@ -95,66 +78,6 @@ void WaitWhileServerOnline(NetworkServer* srv)
|
|||
};
|
||||
}
|
||||
|
||||
/******************************************************************************************\
|
||||
* *
|
||||
* AttemptLocalConnection *
|
||||
* *
|
||||
* Attempts an SDK connection to the local server. Returns true if success *
|
||||
* *
|
||||
\******************************************************************************************/
|
||||
|
||||
bool AttemptLocalConnection()
|
||||
{
|
||||
bool success = false;
|
||||
|
||||
NetworkClient * client = new NetworkClient(ResourceManager::get()->GetRGBControllers());
|
||||
|
||||
std::string titleString = "OpenRGB ";
|
||||
titleString.append(VERSION_STRING);
|
||||
|
||||
client->SetName(titleString.c_str());
|
||||
client->StartClient();
|
||||
|
||||
for(int timeout = 0; timeout < 10; timeout++)
|
||||
{
|
||||
if(client->GetConnected())
|
||||
{
|
||||
break;
|
||||
}
|
||||
std::this_thread::sleep_for(5ms);
|
||||
}
|
||||
|
||||
if(!client->GetConnected())
|
||||
{
|
||||
client->StopClient();
|
||||
|
||||
delete client;
|
||||
|
||||
client = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
ResourceManager::get()->RegisterNetworkClient(client);
|
||||
|
||||
success = true;
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Wait up to 5 seconds for the client connection to |
|
||||
| retrieve all controllers |
|
||||
\*-----------------------------------------------------*/
|
||||
for(int timeout = 0; timeout < 1000; timeout++)
|
||||
{
|
||||
if(client->GetOnline())
|
||||
{
|
||||
break;
|
||||
}
|
||||
std::this_thread::sleep_for(5ms);
|
||||
}
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
/******************************************************************************************\
|
||||
* *
|
||||
* Install SMBus Driver WinRing0, If not already installed (Win32) *
|
||||
|
|
@ -279,61 +202,11 @@ int main(int argc, char* argv[])
|
|||
\*---------------------------------------------------------*/
|
||||
unsigned int ret_flags = cli_pre_detection(argc, argv);
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Perform local connection and/or hardware detection if not |
|
||||
| disabled from CLI |
|
||||
\*---------------------------------------------------------*/
|
||||
if(!(ret_flags & RET_FLAG_NO_AUTO_CONNECT))
|
||||
{
|
||||
printf("Attempting to connect to local OpenRGB server.\r\n");
|
||||
|
||||
if(!AttemptLocalConnection())
|
||||
{
|
||||
printf("Local OpenRGB server unavailable.\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Local OpenRGB server connected, running in client mode\r\n");
|
||||
|
||||
ResourceManager::get()->DisableDetection();
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Perform hardware detection if not disabled from CLI |
|
||||
\*---------------------------------------------------------*/
|
||||
if(!(ret_flags & RET_FLAG_NO_DETECT))
|
||||
{
|
||||
if(ResourceManager::get()->GetDetectionEnabled())
|
||||
{
|
||||
printf("Running standalone.\r\n");
|
||||
}
|
||||
|
||||
ResourceManager::get()->DetectDevices();
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Start the server if requested from CLI (this must be done |
|
||||
| after attempting local connection!) |
|
||||
\*---------------------------------------------------------*/
|
||||
if(ret_flags & RET_FLAG_START_SERVER)
|
||||
{
|
||||
ResourceManager::get()->GetServer()->StartServer();
|
||||
|
||||
if(!ResourceManager::get()->GetServer()->GetOnline())
|
||||
{
|
||||
printf("Server failed to start\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Process command line arguments after detection only if the|
|
||||
| pre-detection parsing indicated it should be run |
|
||||
\*---------------------------------------------------------*/
|
||||
if(ret_flags & RET_FLAG_CLI_POST_DETECTION)
|
||||
{
|
||||
ret_flags |= cli_post_detection(argc, argv);
|
||||
}
|
||||
ResourceManager::get()->Initialize(
|
||||
!(ret_flags & RET_FLAG_NO_AUTO_CONNECT),
|
||||
!(ret_flags & RET_FLAG_NO_DETECT),
|
||||
ret_flags & RET_FLAG_START_SERVER,
|
||||
ret_flags & RET_FLAG_CLI_POST_DETECTION);
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| If the command line parser indicates that the GUI should |
|
||||
|
|
@ -342,14 +215,17 @@ int main(int argc, char* argv[])
|
|||
\*---------------------------------------------------------*/
|
||||
if(ret_flags & RET_FLAG_START_GUI)
|
||||
{
|
||||
LOG_TRACE("[main] initializing GUI");
|
||||
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||
QApplication a(argc, argv);
|
||||
QGuiApplication::setDesktopFileName("org.openrgb.OpenRGB");
|
||||
LOG_TRACE("[main] QApplication created");
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Main UI widget |
|
||||
\*---------------------------------------------------------*/
|
||||
Ui::OpenRGBDialog2 dlg;
|
||||
LOG_TRACE("[main] Dialog created");
|
||||
|
||||
if(ret_flags & RET_FLAG_I2C_TOOLS)
|
||||
{
|
||||
|
|
@ -370,6 +246,7 @@ int main(int argc, char* argv[])
|
|||
dlg.show();
|
||||
}
|
||||
|
||||
LOG_TRACE("[main] Ready to exec() the dialog");
|
||||
return a.exec();
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue