2025-08-08 12:02:26 -07:00
|
|
|
/* Copyright (C) 2025 Wildfire Games.
|
2023-12-02 16:30:12 -08:00
|
|
|
* This file is part of 0 A.D.
|
2009-06-20 09:13:29 -07:00
|
|
|
*
|
2023-12-02 16:30:12 -08:00
|
|
|
* 0 A.D. is free software: you can redistribute it and/or modify
|
2009-06-20 09:13:29 -07:00
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
|
* the Free Software Foundation, either version 2 of the License, or
|
|
|
|
|
* (at your option) any later version.
|
|
|
|
|
*
|
2023-12-02 16:30:12 -08:00
|
|
|
* 0 A.D. is distributed in the hope that it will be useful,
|
2009-06-20 09:13:29 -07:00
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
|
*
|
|
|
|
|
* You should have received a copy of the GNU General Public License
|
2023-12-02 16:30:12 -08:00
|
|
|
* along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
|
2009-06-20 09:13:29 -07:00
|
|
|
*/
|
|
|
|
|
|
2007-06-05 11:35:05 -07:00
|
|
|
#include "precompiled.h"
|
2006-04-23 16:14:18 -07:00
|
|
|
|
|
|
|
|
#include "HighResTimer.h"
|
|
|
|
|
|
2025-08-08 12:02:26 -07:00
|
|
|
#include <cstddef>
|
|
|
|
|
|
2006-12-01 12:34:28 -08:00
|
|
|
// TODO: Better accuracy and reliability, if necessary.
|
2006-11-11 20:02:36 -08:00
|
|
|
|
2006-12-01 12:34:28 -08:00
|
|
|
#ifdef __WXMSW__
|
2006-04-23 16:14:18 -07:00
|
|
|
|
2025-08-09 12:17:38 -07:00
|
|
|
#include "lib/sysdep/os/win/win.h"
|
|
|
|
|
|
|
|
|
|
#include <wx/intl.h>
|
|
|
|
|
#include <wx/log.h>
|
|
|
|
|
|
2006-04-23 16:14:18 -07:00
|
|
|
HighResTimer::HighResTimer()
|
|
|
|
|
{
|
|
|
|
|
LARGE_INTEGER freq;
|
|
|
|
|
BOOL ok = QueryPerformanceFrequency(&freq);
|
|
|
|
|
if (! ok)
|
|
|
|
|
{
|
|
|
|
|
wxLogError(_("QPF failed!"));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_TickLength = freq.QuadPart;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
double HighResTimer::GetTime()
|
|
|
|
|
{
|
|
|
|
|
LARGE_INTEGER count;
|
|
|
|
|
BOOL ok = QueryPerformanceCounter(&count);
|
|
|
|
|
if (! ok)
|
|
|
|
|
{
|
|
|
|
|
wxLogError(_("QPC failed!"));
|
|
|
|
|
return 0.0;
|
|
|
|
|
}
|
|
|
|
|
return (double)count.QuadPart / (double)m_TickLength.GetValue();
|
2006-12-01 12:34:28 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#else // not __WXMSW__ :
|
|
|
|
|
|
|
|
|
|
#include <sys/time.h>
|
|
|
|
|
|
|
|
|
|
HighResTimer::HighResTimer()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
double HighResTimer::GetTime()
|
|
|
|
|
{
|
2006-11-11 20:02:36 -08:00
|
|
|
struct timeval tv;
|
|
|
|
|
gettimeofday(&tv, NULL);
|
|
|
|
|
return tv.tv_sec+(tv.tv_usec/1000000.0);
|
2006-04-23 16:14:18 -07:00
|
|
|
}
|
2006-12-01 12:34:28 -08:00
|
|
|
|
|
|
|
|
#endif
|