/* ----------------------------------------------------------------------------- GSFramework Copyright 2001-2013 Emmanuel Julien. All Rights Reserved. ----------------------------------------------------------------------------- */ #include "platform.h" #include "async/job.h" #include "filesystem/filesystem.h" #include "filesystem/io_base.h" #include "input/input_system.h" #include "licensing/licensing.h" #include "analytics/analytics.h" #include "billing/billing.h" #include "log/file_log.h" #include "log/log.h" using namespace GS; #define __ENABLE_PLATFORM_TRACE 0 template<> Platform *Singleton ::i = NULL; String Platform::app_dir; static int g_start_clock = 0; static Time g_start_time; //------------------------------------------------------------------------------ void Platform::Trace(const char *trace, const char *source, int line) { #if __ENABLE_PLATFORM_TRACE static FileLog platform_trace("c:/platform_trace.log"); platform_trace << trace << "(" << source << "@" << line << ")\n"; #endif } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ String Platform::GetAppPluginPath(const char *plugin) const { return ((app_dir + "/") + plugin).CleanFilePath(); } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ uint Types::getPOT(uint v) { uint n = 1; for (; n < v; n *= 2) {} return n; } bool Types::isPOT(uint v) { return ((v != 0) && ((v & (~v + 1)) == v)); } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ int Platform::GetStartClock() const { return g_start_clock; } Time Platform::GetStartTime() const { return g_start_time; } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ void Platform::Initialize() { if (initialized) return; g_start_clock = GetClock(); g_start_time = GetTime(); job_manager->CreateJobThreadPool(Types::Max(GetSystemCoreCount() - 1, 1)); // keep 1 core for the master thread initialized = true; } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ Platform::Platform() : initialized(false) { io = new IO::Filesystem; job_manager = new ASync::JobManager; } //------------------------------------------------------------------------------