NULL: Add implementation of getMillis, delayMillis and getTimeAndDate
This commit is contained in:
parent
4c831ea6c6
commit
068b3371bd
1 changed files with 41 additions and 1 deletions
|
@ -20,6 +20,12 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
|
#ifdef POSIX
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// We use some stdio.h functionality here thus we need to allow some
|
// We use some stdio.h functionality here thus we need to allow some
|
||||||
// symbols. Alternatively, we could simply allow everything by defining
|
// symbols. Alternatively, we could simply allow everything by defining
|
||||||
// FORBIDDEN_SYMBOL_ALLOW_ALL
|
// FORBIDDEN_SYMBOL_ALLOW_ALL
|
||||||
|
@ -28,6 +34,7 @@
|
||||||
#define FORBIDDEN_SYMBOL_EXCEPTION_stderr
|
#define FORBIDDEN_SYMBOL_EXCEPTION_stderr
|
||||||
#define FORBIDDEN_SYMBOL_EXCEPTION_fputs
|
#define FORBIDDEN_SYMBOL_EXCEPTION_fputs
|
||||||
#define FORBIDDEN_SYMBOL_EXCEPTION_exit
|
#define FORBIDDEN_SYMBOL_EXCEPTION_exit
|
||||||
|
#define FORBIDDEN_SYMBOL_EXCEPTION_time_h
|
||||||
|
|
||||||
#include "backends/modular-backend.h"
|
#include "backends/modular-backend.h"
|
||||||
#include "base/main.h"
|
#include "base/main.h"
|
||||||
|
@ -66,11 +73,16 @@ public:
|
||||||
|
|
||||||
virtual uint32 getMillis(bool skipRecord = false);
|
virtual uint32 getMillis(bool skipRecord = false);
|
||||||
virtual void delayMillis(uint msecs);
|
virtual void delayMillis(uint msecs);
|
||||||
virtual void getTimeAndDate(TimeDate &t) const {}
|
virtual void getTimeAndDate(TimeDate &t) const;
|
||||||
|
|
||||||
virtual void quit();
|
virtual void quit();
|
||||||
|
|
||||||
virtual void logMessage(LogMessageType::Type type, const char *message);
|
virtual void logMessage(LogMessageType::Type type, const char *message);
|
||||||
|
|
||||||
|
#ifdef POSIX
|
||||||
|
private:
|
||||||
|
timeval _startTime;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
OSystem_NULL::OSystem_NULL() {
|
OSystem_NULL::OSystem_NULL() {
|
||||||
|
@ -91,6 +103,10 @@ OSystem_NULL::~OSystem_NULL() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_NULL::initBackend() {
|
void OSystem_NULL::initBackend() {
|
||||||
|
#ifdef POSIX
|
||||||
|
gettimeofday(&_startTime, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
_mutexManager = new NullMutexManager();
|
_mutexManager = new NullMutexManager();
|
||||||
_timerManager = new DefaultTimerManager();
|
_timerManager = new DefaultTimerManager();
|
||||||
_eventManager = new DefaultEventManager(this);
|
_eventManager = new DefaultEventManager(this);
|
||||||
|
@ -112,10 +128,34 @@ bool OSystem_NULL::pollEvent(Common::Event &event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 OSystem_NULL::getMillis(bool skipRecord) {
|
uint32 OSystem_NULL::getMillis(bool skipRecord) {
|
||||||
|
#ifdef POSIX
|
||||||
|
timeval curTime;
|
||||||
|
|
||||||
|
gettimeofday(&curTime, 0);
|
||||||
|
|
||||||
|
return (uint32)(((curTime.tv_sec - _startTime.tv_sec) * 1000) +
|
||||||
|
((curTime.tv_usec - _startTime.tv_usec) / 1000));
|
||||||
|
#else
|
||||||
return 0;
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_NULL::delayMillis(uint msecs) {
|
void OSystem_NULL::delayMillis(uint msecs) {
|
||||||
|
#ifdef POSIX
|
||||||
|
usleep(msecs * 1000);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void OSystem_NULL::getTimeAndDate(TimeDate &td) const {
|
||||||
|
time_t curTime = time(0);
|
||||||
|
struct tm t = *localtime(&curTime);
|
||||||
|
td.tm_sec = t.tm_sec;
|
||||||
|
td.tm_min = t.tm_min;
|
||||||
|
td.tm_hour = t.tm_hour;
|
||||||
|
td.tm_mday = t.tm_mday;
|
||||||
|
td.tm_mon = t.tm_mon;
|
||||||
|
td.tm_year = t.tm_year;
|
||||||
|
td.tm_wday = t.tm_wday;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_NULL::quit() {
|
void OSystem_NULL::quit() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue