| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -61,6 +61,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <QtCore/QEventLoop>
 | 
					 | 
					 | 
					 | 
					#include <QtCore/QEventLoop>
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <QtCore/QFile>
 | 
					 | 
					 | 
					 | 
					#include <QtCore/QFile>
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <QtCore/QTimer>
 | 
					 | 
					 | 
					 | 
					#include <QtCore/QTimer>
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#include <QtCore/QtLogging>
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <QtGui/QClipboard>
 | 
					 | 
					 | 
					 | 
					#include <QtGui/QClipboard>
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <QtGui/QKeyEvent>
 | 
					 | 
					 | 
					 | 
					#include <QtGui/QKeyEvent>
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <QtWidgets/QFileDialog>
 | 
					 | 
					 | 
					 | 
					#include <QtWidgets/QFileDialog>
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -96,6 +97,7 @@ static constexpr u32 GDB_SERVER_POLLING_INTERVAL = 1;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					namespace QtHost {
 | 
					 | 
					 | 
					 | 
					namespace QtHost {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static bool PerformEarlyHardwareChecks();
 | 
					 | 
					 | 
					 | 
					static bool PerformEarlyHardwareChecks();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static bool EarlyProcessStartup();
 | 
					 | 
					 | 
					 | 
					static bool EarlyProcessStartup();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					static void MessageOutputHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static void RegisterTypes();
 | 
					 | 
					 | 
					 | 
					static void RegisterTypes();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static bool InitializeConfig();
 | 
					 | 
					 | 
					 | 
					static bool InitializeConfig();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static void SetAppRoot();
 | 
					 | 
					 | 
					 | 
					static void SetAppRoot();
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -201,6 +203,9 @@ bool QtHost::EarlyProcessStartup()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  }
 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif
 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  // redirect qt errors
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  qInstallMessageHandler(MessageOutputHandler);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  Error error;
 | 
					 | 
					 | 
					 | 
					  Error error;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (System::ProcessStartup(&error)) [[likely]]
 | 
					 | 
					 | 
					 | 
					  if (System::ProcessStartup(&error)) [[likely]]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return true;
 | 
					 | 
					 | 
					 | 
					    return true;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -210,6 +215,33 @@ bool QtHost::EarlyProcessStartup()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  return false;
 | 
					 | 
					 | 
					 | 
					  return false;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					void QtHost::MessageOutputHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  const char* function = context.function ? context.function : "<unknown>";
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  const std::string smsg = msg.toStdString();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  switch (type)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    case QtDebugMsg:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      DEBUG_LOG("qDebug({}): {}", function, smsg);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      break;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    case QtInfoMsg:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      INFO_LOG("qInfo({}): {}", function, smsg);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      break;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    case QtWarningMsg:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      WARNING_LOG("qWarning({}): {}", function, smsg);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      break;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    case QtCriticalMsg:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      ERROR_LOG("qCritical({}): {}", function, smsg);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      break;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    case QtFatalMsg:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      ERROR_LOG("qFatal({}): {}", function, smsg);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      Y_OnPanicReached(smsg.c_str(), function, context.file ? context.file : "<unknown>", context.line);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    default:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      ERROR_LOG("<unknown>({}): {}", function, smsg);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      break;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					bool QtHost::InBatchMode()
 | 
					 | 
					 | 
					 | 
					bool QtHost::InBatchMode()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  return s_batch_mode;
 | 
					 | 
					 | 
					 | 
					  return s_batch_mode;
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |