mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-11-04 14:00:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include <scwx/qt/main/application.hpp>
 | 
						|
#include <scwx/util/logger.hpp>
 | 
						|
 | 
						|
#include <condition_variable>
 | 
						|
 | 
						|
namespace scwx
 | 
						|
{
 | 
						|
namespace qt
 | 
						|
{
 | 
						|
namespace main
 | 
						|
{
 | 
						|
namespace Application
 | 
						|
{
 | 
						|
 | 
						|
static const std::string logPrefix_ = "scwx::qt::main::application";
 | 
						|
static const auto        logger_    = util::Logger::Create(logPrefix_);
 | 
						|
 | 
						|
static std::mutex              initializationMutex_ {};
 | 
						|
static std::condition_variable initializationCondition_ {};
 | 
						|
static bool                    initialized_ {false};
 | 
						|
 | 
						|
void FinishInitialization()
 | 
						|
{
 | 
						|
   logger_->debug("Application initialization finished");
 | 
						|
 | 
						|
   // Set initialized to true
 | 
						|
   std::unique_lock lock(initializationMutex_);
 | 
						|
   initialized_ = true;
 | 
						|
   lock.unlock();
 | 
						|
 | 
						|
   // Notify any threads waiting for initialization
 | 
						|
   initializationCondition_.notify_all();
 | 
						|
}
 | 
						|
 | 
						|
void WaitForInitialization()
 | 
						|
{
 | 
						|
   std::unique_lock lock(initializationMutex_);
 | 
						|
 | 
						|
   // While not yet initialized
 | 
						|
   while (!initialized_)
 | 
						|
   {
 | 
						|
      // Wait for initialization
 | 
						|
      initializationCondition_.wait(lock);
 | 
						|
   }
 | 
						|
}
 | 
						|
 | 
						|
// Only use for test cases
 | 
						|
void ResetInitilization()
 | 
						|
{
 | 
						|
   logger_->debug("Application initialization reset");
 | 
						|
   std::unique_lock lock(initializationMutex_);
 | 
						|
   initialized_ = false;
 | 
						|
}
 | 
						|
 | 
						|
} // namespace Application
 | 
						|
} // namespace main
 | 
						|
} // namespace qt
 | 
						|
} // namespace scwx
 |