avoid redefining CLOCK_MONOTONIC and shit

This commit is contained in:
fgsfds 2020-05-20 17:56:35 +03:00
parent 5e17e23393
commit 2714708ca9
2 changed files with 31 additions and 17 deletions

View file

@ -32,6 +32,7 @@ typedef double f64;
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include <sys/types.h> #include <sys/types.h>
#if defined(__MINGW32__) #if defined(__MINGW32__)
#include <_mingw.h> #include <_mingw.h>
#if !defined(__MINGW64_VERSION_MAJOR) #if !defined(__MINGW64_VERSION_MAJOR)
@ -40,4 +41,5 @@ typedef long ssize_t;
typedef ptrdiff_t ssize_t; typedef ptrdiff_t ssize_t;
#endif #endif
#endif #endif
#endif
#endif // _ULTRA64_TYPES_H_

View file

@ -40,8 +40,6 @@
#define MAX_LIGHTS 2 #define MAX_LIGHTS 2
#define MAX_VERTICES 64 #define MAX_VERTICES 64
#define CLOCK_MONOTONIC 0
struct RGBA { struct RGBA {
uint8_t r, g, b, a; uint8_t r, g, b, a;
}; };
@ -157,23 +155,37 @@ static size_t buf_vbo_num_tris;
static struct GfxWindowManagerAPI *gfx_wapi; static struct GfxWindowManagerAPI *gfx_wapi;
static struct GfxRenderingAPI *gfx_rapi; static struct GfxRenderingAPI *gfx_rapi;
#if defined(__MINGW32__) #if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) && !defined(__APPLE__)
#include <_mingw.h> // old mingw
#if !defined(__MINGW64_VERSION_MAJOR) # include <_mingw.h>
# define NO_CLOCK_GETTIME
#endif
#ifdef NO_CLOCK_GETTIME
#if defined(_WIN32)
#include <windows.h> #include <windows.h>
//https://stackoverflow.com/questions/5404277/porting-clock-gettime-to-windows #define CLOCK_MONOTONIC 0
struct timespec { long tv_sec; long tv_nsec; }; //header part // https://stackoverflow.com/questions/5404277/porting-clock-gettime-to-windows
int clock_gettime(int arg, struct timespec *spec) //C-file part struct timespec { long tv_sec; long tv_nsec; };
{ __int64 wintime; GetSystemTimeAsFileTime((FILETIME*)&wintime); int clock_gettime(int arg, struct timespec *spec) {
wintime -=116444736000000000LL; //1jan1601 to 1jan1970 __int64 wintime;
spec->tv_sec =wintime / 10000000LL; //seconds GetSystemTimeAsFileTime((FILETIME*)&wintime);
spec->tv_nsec =wintime % 10000000LL*100; //nano-seconds wintime -= 116444736000000000LL; //1jan1601 to 1jan1970
spec->tv_sec = wintime / 10000000LL; //seconds
spec->tv_nsec = wintime % 10000000LL*100; //nano-seconds
return 0; return 0;
} }
#else #else // _WIN32
#error "Add a clock_gettime() impl for your platform!"
#endif // _WIN32
#else // NO_CLOCK_GETTIME
#include <time.h> #include <time.h>
#endif
#endif #endif // NO_CLOCK_GETTIME
static unsigned long get_time(void) { static unsigned long get_time(void) {
struct timespec ts; struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts); clock_gettime(CLOCK_MONOTONIC, &ts);