Provide usleep() in CSystemUtils interface
parent
dec12fb977
commit
d003247120
|
@ -52,7 +52,6 @@
|
|||
|
||||
#include <stdlib.h>
|
||||
#include <libintl.h>
|
||||
#include <unistd.h>
|
||||
#include <getopt.h>
|
||||
#include <localename.h>
|
||||
|
||||
|
@ -1009,7 +1008,7 @@ int CApplication::Run()
|
|||
|
||||
if (m_lowCPU)
|
||||
{
|
||||
usleep(20000); // should still give plenty of fps
|
||||
GetSystemUtils()->Usleep(20000); // should still give plenty of fps
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -140,6 +140,9 @@ public:
|
|||
|
||||
//! Returns the save dir location
|
||||
virtual std::string GetSaveDir();
|
||||
|
||||
//! Sleep for given amount of microseconds
|
||||
virtual void Usleep(int usecs) = 0;
|
||||
};
|
||||
|
||||
//! Global function to get CSystemUtils instance
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "common/logger.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
|
||||
void CSystemUtilsLinux::Init()
|
||||
|
@ -123,3 +124,8 @@ std::string CSystemUtilsLinux::GetSaveDir()
|
|||
|
||||
return savegameDir;
|
||||
}
|
||||
|
||||
void CSystemUtilsLinux::Usleep(int usec)
|
||||
{
|
||||
usleep(usec);
|
||||
}
|
||||
|
|
|
@ -50,6 +50,8 @@ public:
|
|||
|
||||
virtual std::string GetSaveDir() OVERRIDE;
|
||||
|
||||
virtual void Usleep(int usec) OVERRIDE;
|
||||
|
||||
private:
|
||||
bool m_zenityAvailable;
|
||||
};
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "common/logger.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
// MacOS-specific headers
|
||||
#include <CoreFoundation/CFBundle.h>
|
||||
|
@ -106,3 +107,8 @@ std::string CSystemUtilsMacOSX::GetSaveDir()
|
|||
|
||||
return savegameDir;
|
||||
}
|
||||
|
||||
void CSystemUtilsMacOSX::Usleep(int usec)
|
||||
{
|
||||
usleep(usec);
|
||||
}
|
||||
|
|
|
@ -33,6 +33,9 @@ public:
|
|||
virtual std::string GetDataPath() OVERRIDE;
|
||||
virtual std::string GetLangPath() OVERRIDE;
|
||||
virtual std::string GetSaveDir() OVERRIDE;
|
||||
|
||||
virtual void Usleep(int usec) OVERRIDE;
|
||||
|
||||
private:
|
||||
std::string m_ASPath;
|
||||
std::string m_dataPath;
|
||||
|
|
|
@ -40,3 +40,7 @@ long long int CSystemUtilsOther::TimeStampExactDiff(SystemTimeStamp* before, Sys
|
|||
return (after->sdlTicks - before->sdlTicks) * 1000000ll;
|
||||
}
|
||||
|
||||
void CSystemUtilsOther::Usleep(int usec)
|
||||
{
|
||||
SDL_Delay(usec / 1000); // close enough
|
||||
}
|
||||
|
|
|
@ -48,5 +48,7 @@ public:
|
|||
virtual void GetCurrentTimeStamp(SystemTimeStamp *stamp) OVERRIDE;
|
||||
virtual long long int GetTimeStampExactResolution() OVERRIDE;
|
||||
virtual long long TimeStampExactDiff(SystemTimeStamp *before, SystemTimeStamp *after) OVERRIDE;
|
||||
|
||||
virtual void Usleep(int usec) OVERRIDE;
|
||||
};
|
||||
|
||||
|
|
|
@ -130,3 +130,14 @@ std::string CSystemUtilsWindows::GetSaveDir()
|
|||
|
||||
return savegameDir;
|
||||
}
|
||||
|
||||
void CSystemUtilsWindows::Usleep(int usec)
|
||||
{
|
||||
LARGE_INTEGER ft;
|
||||
ft.QuadPart = -(10 * usec); // Convert to 100 nanosecond interval, negative value indicates relative time
|
||||
|
||||
HANDLE timer = CreateWaitableTimer(NULL, TRUE, NULL);
|
||||
SetWaitableTimer(timer, &ft, 0, NULL, NULL, 0);
|
||||
WaitForSingleObject(timer, INFINITE);
|
||||
CloseHandle(timer);
|
||||
}
|
||||
|
|
|
@ -48,6 +48,8 @@ public:
|
|||
|
||||
virtual std::string GetSaveDir() OVERRIDE;
|
||||
|
||||
virtual void Usleep(int usec) OVERRIDE;
|
||||
|
||||
public:
|
||||
static std::string UTF8_Encode(const std::wstring &wstr);
|
||||
static std::wstring UTF8_Decode(const std::string &str);
|
||||
|
|
|
@ -63,4 +63,5 @@ public:
|
|||
MOCK_METHOD0(GetTimeStampExactResolution, long long());
|
||||
MOCK_METHOD3(TimeStampDiff, float(SystemTimeStamp *before, SystemTimeStamp *after, SystemTimeUnit unit));
|
||||
MOCK_METHOD2(TimeStampExactDiff, long long(SystemTimeStamp *before, SystemTimeStamp *after));
|
||||
MOCK_METHOD1(Usleep, void(int usec));
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue