From 1699d1498489d2494e11cb3c78872241c660b462 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Wed, 14 Jan 2026 10:03:51 +0800 Subject: [PATCH] Common: ensures thread safety of `ffTimeInitQpcMultiplier` --- src/common/impl/time.c | 8 ++++++++ src/common/time.h | 6 ------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/common/impl/time.c b/src/common/impl/time.c index 40bd9b6ff..2927f9784 100644 --- a/src/common/impl/time.c +++ b/src/common/impl/time.c @@ -84,4 +84,12 @@ FFTimeGetAgeResult ffTimeGetAge(uint64_t birthMs, uint64_t nowMs) #ifdef _WIN32 double ffQpcMultiplier; + + __attribute__((constructor)) + static void ffTimeInitQpcMultiplier(void) + { + LARGE_INTEGER frequency; + QueryPerformanceFrequency(&frequency); + ffQpcMultiplier = 1000. / (double) frequency.QuadPart; + } #endif diff --git a/src/common/time.h b/src/common/time.h index de32bb843..d8506d3b8 100644 --- a/src/common/time.h +++ b/src/common/time.h @@ -25,12 +25,6 @@ static inline double ffTimeGetTick(void) //In msec { #ifdef _WIN32 extern double ffQpcMultiplier; - if (ffQpcMultiplier == 0) - { - LARGE_INTEGER frequency; - QueryPerformanceFrequency(&frequency); - ffQpcMultiplier = 1000. / (double) frequency.QuadPart; - } LARGE_INTEGER start; QueryPerformanceCounter(&start); return (double) start.QuadPart * ffQpcMultiplier;