Merge with develop

This commit is contained in:
kervala 2016-01-27 15:16:44 +01:00
parent fabef15e80
commit 164eb4de7b
3 changed files with 51 additions and 54 deletions

View file

@ -254,43 +254,6 @@ extern NL3D::UDriver *Driver;
extern CRyzomTime RT; extern CRyzomTime RT;
extern string Cookie; extern string Cookie;
extern string FSAddr; extern string FSAddr;
extern uint64 Debug_OldCPUMask;
extern uint64 Debug_NewCPUMask;
// For multi cpu, active only one CPU for the main thread
void setCPUMask(uint64 userCPUMask)
{
uint64 cpuMask = IProcess::getCurrentProcess()->getCPUMask();
Debug_OldCPUMask = cpuMask;
// if user CPU mask is valid
if (cpuMask & userCPUMask)
{
// use it
IProcess::getCurrentProcess ()->setCPUMask(cpuMask & userCPUMask);
}
else
{
// else get first available CPU
// get the processor to allow process
uint i = 0;
while ((i < 64) && ((cpuMask & (UINT64_CONSTANT(1) << i)) == 0))
i++;
// Set the CPU mask
if (i < 64)
{
IProcess::getCurrentProcess ()->setCPUMask(UINT64_CONSTANT(1) << i);
}
}
// check
cpuMask = IProcess::getCurrentProcess ()->getCPUMask();
Debug_NewCPUMask = cpuMask;
}
#endif #endif
///////////// /////////////
@ -1703,22 +1666,6 @@ void CClientConfig::setValues()
SetPriorityClass (GetCurrentProcess(), priority[index]); SetPriorityClass (GetCurrentProcess(), priority[index]);
#endif // NL_OS_WINDOWS #endif // NL_OS_WINDOWS
sint cpuMask;
if (ClientCfg.CPUMask < 1)
{
CTime::CTimerInfo timerInfo;
NLMISC::CTime::probeTimerInfo(timerInfo);
cpuMask = timerInfo.RequiresSingleCore ? 1:0;
}
else
{
cpuMask = ClientCfg.CPUMask;
}
if (cpuMask) setCPUMask(cpuMask);
// Init Verbose Modes (at the beginning to be able to display them as soon as possible). // Init Verbose Modes (at the beginning to be able to display them as soon as possible).
::VerboseVP = ClientCfg.VerboseVP; ::VerboseVP = ClientCfg.VerboseVP;
::VerboseAnimUser = ClientCfg.VerboseAnimUser; ::VerboseAnimUser = ClientCfg.VerboseAnimUser;

View file

@ -378,6 +378,39 @@ void outOfMemory()
uint64 Debug_OldCPUMask = 0; uint64 Debug_OldCPUMask = 0;
uint64 Debug_NewCPUMask = 0; uint64 Debug_NewCPUMask = 0;
// For multi cpu, active only one CPU for the main thread
void setCPUMask(uint64 userCPUMask)
{
uint64 cpuMask = IProcess::getCurrentProcess()->getCPUMask();
Debug_OldCPUMask = cpuMask;
// if user CPU mask is valid
if (cpuMask & userCPUMask)
{
// use it
IProcess::getCurrentProcess ()->setCPUMask(cpuMask & userCPUMask);
}
else
{
// else get first available CPU
// get the processor to allow process
uint i = 0;
while ((i < 64) && ((cpuMask & (UINT64_CONSTANT(1) << i)) == 0))
i++;
// Set the CPU mask
if (i < 64)
{
IProcess::getCurrentProcess ()->setCPUMask(UINT64_CONSTANT(1) << i);
}
}
// check
cpuMask = IProcess::getCurrentProcess ()->getCPUMask();
Debug_NewCPUMask = cpuMask;
}
void displayCPUInfo() void displayCPUInfo()
{ {
nlinfo("CPUInfo: CPUMask before change: %x, after change: %x, CPUID: %x, hasHyperThreading: %s", (uint32)Debug_OldCPUMask, (uint32)Debug_NewCPUMask, CSystemInfo::getCPUID(), (CSystemInfo::hasHyperThreading()?"YES":"NO")); nlinfo("CPUInfo: CPUMask before change: %x, after change: %x, CPUID: %x, hasHyperThreading: %s", (uint32)Debug_OldCPUMask, (uint32)Debug_NewCPUMask, CSystemInfo::getCPUID(), (CSystemInfo::hasHyperThreading()?"YES":"NO"));
@ -836,6 +869,22 @@ void prelogInit()
ClientCfg.init(ConfigFileName); ClientCfg.init(ConfigFileName);
CLoginProgressPostThread::getInstance().init(ClientCfg.ConfigFile); CLoginProgressPostThread::getInstance().init(ClientCfg.ConfigFile);
sint cpuMask;
if (ClientCfg.CPUMask < 1)
{
CTime::CTimerInfo timerInfo;
NLMISC::CTime::probeTimerInfo(timerInfo);
cpuMask = timerInfo.RequiresSingleCore ? 1:0;
}
else
{
cpuMask = ClientCfg.CPUMask;
}
if (cpuMask) setCPUMask(cpuMask);
setCrashCallback(crashCallback); setCrashCallback(crashCallback);
// Display Some Info On CPU // Display Some Info On CPU

View file

@ -10,11 +10,12 @@ FILE(GLOB SRC main.cpp
) )
# always enable custom patch server # always enable custom patch server
ADD_DEFINITIONS(-DRZ_USE_CUSTOM_PATCH_SERVER) ADD_DEFINITIONS(${LIBXML2_DEFINITIONS} -DRZ_USE_CUSTOM_PATCH_SERVER)
ADD_EXECUTABLE(ryzom_client_patcher ${SRC}) ADD_EXECUTABLE(ryzom_client_patcher ${SRC})
INCLUDE_DIRECTORIES( INCLUDE_DIRECTORIES(
${LIBXML2_INCLUDE_DIR}
${CURL_INCLUDE_DIRS} ${CURL_INCLUDE_DIRS}
${CMAKE_SOURCE_DIR}/ryzom/client/src ${CMAKE_SOURCE_DIR}/ryzom/client/src
) )