예제 #1
0
double real_time_now() {
#ifdef ANDROID
	if (false && gl_extensions.EGL_NV_system_time) {
		// This is needed to profile using PerfHUD on Tegra
		if (_frequency == 0) {
			_frequency = eglGetSystemTimeFrequencyNV();
			_starttime = eglGetSystemTimeNV();
		}

		uint64_t cur = eglGetSystemTimeNV();
		int64_t diff = cur - _starttime;

		return (double)diff / (double)_frequency;
	}
#endif

	static time_t start;
	struct timeval tv;
	gettimeofday(&tv, NULL);
	if (start == 0) {
		start = tv.tv_sec;
	}
	tv.tv_sec -= start;
	return (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0;
}
예제 #2
0
파일: timeutil.cpp 프로젝트: arunrvk/native
double real_time_now() {
#ifdef ANDROID
	if (false && gl_extensions.EGL_NV_system_time) {
		// This is needed to profile using PerfHUD on Tegra
		if (_frequency == 0) {
			_frequency = eglGetSystemTimeFrequencyNV();
			_starttime = eglGetSystemTimeNV();
		}

		uint64_t cur = eglGetSystemTimeNV();
		int64_t diff = cur - _starttime;

		return (double)diff / (double)_frequency;
	}
#if 0
	// This clock is really "choppy" on Nexus 9!
	struct timespec time;
	clock_gettime(CLOCK_MONOTONIC_RAW, &time);
	return time.tv_sec + time.tv_nsec / 1.0e9;
#else
	static time_t start;
	struct timeval tv;
	gettimeofday(&tv, NULL);
	if (start == 0) {
		start = tv.tv_sec;
	}
	tv.tv_sec -= start;
	return (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0;
#endif

#else
	static time_t start;
	struct timeval tv;
	gettimeofday(&tv, NULL);
	if (start == 0) {
		start = tv.tv_sec;
	}
	tv.tv_sec -= start;
	return (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0;
#endif
}
static jlong android_view_HardwareRenderer_getSystemTime(JNIEnv* env, jobject clazz) {
    if (uirenderer::Extensions::getInstance().hasNvSystemTime()) {
        return eglGetSystemTimeNV();
    }
    return systemTime(SYSTEM_TIME_MONOTONIC);
}