Lets try using posix clocks instead of gettimeofday.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4076 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2012-07-15 03:34:57 +00:00
parent b0d236c5c0
commit b6a9a64124

View file

@ -80,7 +80,7 @@ JNIEXPORT jint JNICALL Java_com_fteqw_FTEDroidEngine_frame(JNIEnv *env, jobject
JNIEXPORT void JNICALL Java_com_fteqw_FTEDroidEngine_init(JNIEnv *env, jobject obj, JNIEXPORT void JNICALL Java_com_fteqw_FTEDroidEngine_init(JNIEnv *env, jobject obj,
jint width, jint height, jint glesversion, jstring japkpath, jstring jusrpath) jint width, jint height, jint glesversion, jstring japkpath, jstring jusrpath)
{ {
char *tmp; const char *tmp;
vid.pixelwidth = width; vid.pixelwidth = width;
vid.pixelheight = height; vid.pixelheight = height;
sys_glesversion = glesversion; sys_glesversion = glesversion;
@ -96,6 +96,7 @@ JNIEXPORT void JNICALL Java_com_fteqw_FTEDroidEngine_init(JNIEnv *env, jobject o
"", "",
"" ""
}; };
char *basepack;
int align; int align;
quakeparms_t parms; quakeparms_t parms;
if (sys_memheap) if (sys_memheap)
@ -112,12 +113,12 @@ JNIEXPORT void JNICALL Java_com_fteqw_FTEDroidEngine_init(JNIEnv *env, jobject o
} }
args[2] = parms.membase; basepack = parms.membase;
tmp = (*env)->GetStringUTFChars(env, japkpath, NULL); tmp = (*env)->GetStringUTFChars(env, japkpath, NULL);
strcpy(args[2], tmp); strcpy(basepack, tmp);
(*env)->ReleaseStringUTFChars(env, japkpath, tmp); (*env)->ReleaseStringUTFChars(env, japkpath, tmp);
parms.membase += strlen(args[2])+1; parms.membase += strlen(basepack)+1;
parms.memsize -= strlen(args[2])+1; parms.memsize -= strlen(basepack)+1;
parms.basedir = parms.membase; parms.basedir = parms.membase;
tmp = (*env)->GetStringUTFChars(env, jusrpath, NULL); tmp = (*env)->GetStringUTFChars(env, jusrpath, NULL);
@ -134,6 +135,8 @@ JNIEXPORT void JNICALL Java_com_fteqw_FTEDroidEngine_init(JNIEnv *env, jobject o
parms.memsize -= align; parms.memsize -= align;
} }
args[2] = basepack;
Sys_Printf("Starting up (apk=%s, usr=%s)\n", args[2], parms.basedir); Sys_Printf("Starting up (apk=%s, usr=%s)\n", args[2], parms.basedir);
@ -150,36 +153,64 @@ JNIEXPORT void JNICALL Java_com_fteqw_FTEDroidEngine_init(JNIEnv *env, jobject o
} }
static int secbase; static int secbase;
#ifdef _POSIX_TIMERS
double Sys_DoubleTime(void) double Sys_DoubleTime(void)
{ {
struct timeval tp; struct timespec ts;
struct timezone tzp; clock_gettime(CLOCK_MONOTONIC, &ts);
gettimeofday(&tp, &tzp); if (!secbase)
{
if (!secbase) secbase = ts.tv_sec;
{ return ts.tv_nsec/1000000000.0;
secbase = tp.tv_sec; }
return tp.tv_usec/1000000.0; return (ts.tv_sec - secbase) + ts.tv_nsec/1000000000.0;
}
return (tp.tv_sec - secbase) + tp.tv_usec/1000000.0;
} }
unsigned int Sys_Milliseconds(void) unsigned int Sys_Milliseconds(void)
{ {
struct timeval tp; struct timespec ts;
struct timezone tzp; clock_gettime(CLOCK_MONOTONIC, &ts);
gettimeofday(&tp, &tzp); if (!secbase)
{
if (!secbase) secbase = ts.tv_sec;
{ return ts.tv_nsec/1000000;
secbase = tp.tv_sec; }
return tp.tv_usec/1000; return (ts.tv_sec - secbase)*1000 + ts.tv_nsec/1000000;
}
return (tp.tv_sec - secbase)*1000 + tp.tv_usec/1000;
} }
#else
double Sys_DoubleTime(void)
{
struct timeval tp;
struct timezone tzp;
gettimeofday(&tp, &tzp);
if (!secbase)
{
secbase = tp.tv_sec;
return tp.tv_usec/1000000.0;
}
return (tp.tv_sec - secbase) + tp.tv_usec/1000000.0;
}
unsigned int Sys_Milliseconds(void)
{
struct timeval tp;
struct timezone tzp;
gettimeofday(&tp, &tzp);
if (!secbase)
{
secbase = tp.tv_sec;
return tp.tv_usec/1000;
}
return (tp.tv_sec - secbase)*1000 + tp.tv_usec/1000;
}
#endif
void Sys_Shutdown(void) void Sys_Shutdown(void)
{ {