mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
utils: fix broken stopwatch implementation
Stopwatch (in the way it is used) must be able to measure the wall clock time with high resolution but used clock() which is not appropriate for this purpose: On POSIX systems clock() returns the processor time used by the program. On Windows clock() does measure the wall clock time but has only a resolution of 1ms (if at all). This also renders the freerdp profiler unusable. This commit changes stopwatch to use the performance counters on Windows and gettimeofday() for the rest. Also added a warning about invalid profiling results to the RemoteFX codec if rfxcontext->priv->UseThreads is enabled because stopwatch is currently not used in a thread safe way. Also see GitHub Issue #1325
This commit is contained in:
@@ -20,17 +20,15 @@
|
||||
#ifndef FREERDP_UTILS_STOPWATCH_H
|
||||
#define FREERDP_UTILS_STOPWATCH_H
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#include <freerdp/api.h>
|
||||
#include <freerdp/types.h>
|
||||
|
||||
struct _STOPWATCH
|
||||
{
|
||||
clock_t start;
|
||||
clock_t end;
|
||||
double elapsed;
|
||||
clock_t count;
|
||||
UINT64 start;
|
||||
UINT64 end;
|
||||
UINT64 elapsed;
|
||||
UINT32 count;
|
||||
};
|
||||
typedef struct _STOPWATCH STOPWATCH;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user