From dd2a3bda91ea30409028a4c92fbcce6f38352c1b Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Fri, 22 May 2026 13:09:54 +0300 Subject: [PATCH] [thanos] Switched frame time tracking from QElapsedTimer to crl::now. --- .../SourceFiles/ui/effects/thanos_effect_renderer.cpp | 10 ++++++---- .../SourceFiles/ui/effects/thanos_effect_renderer.h | 4 +--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Telegram/SourceFiles/ui/effects/thanos_effect_renderer.cpp b/Telegram/SourceFiles/ui/effects/thanos_effect_renderer.cpp index 939b69b50e..3e752d5c4d 100644 --- a/Telegram/SourceFiles/ui/effects/thanos_effect_renderer.cpp +++ b/Telegram/SourceFiles/ui/effects/thanos_effect_renderer.cpp @@ -103,7 +103,6 @@ ThanosEffectRenderer::ThanosEffectRenderer( ) | rpl::on_next([=, this](float64 value) { _factor = value; }, _lifetime); - _elapsed.start(); } ThanosEffectRenderer::~ThanosEffectRenderer() { @@ -189,7 +188,7 @@ void ThanosEffectRenderer::initialize( cb->resourceUpdate(rub); _initialized = true; - _lastFrameTime = double(_elapsed.elapsed()) / 1000.0; + _lastFrameTime = crl::now(); LOG(("ThanosEffect: initialized, backend=%1 device=%2") .arg(rhi->backendName()) @@ -311,9 +310,12 @@ void ThanosEffectRenderer::render( } _rhi = rhi; - const auto now = float64(_elapsed.elapsed()) / 1000.; + const auto now = crl::now(); // Cap to ~15 FPS so a single slow frame cannot teleport particles. - const auto dt = std::clamp(now - _lastFrameTime, 0.001, 0.066); + const auto dt = std::clamp( + now - _lastFrameTime, + crl::time(1), + crl::time(66)) / 1000.; _lastFrameTime = now; addPendingItems(cb); diff --git a/Telegram/SourceFiles/ui/effects/thanos_effect_renderer.h b/Telegram/SourceFiles/ui/effects/thanos_effect_renderer.h index da75ef1176..da58db9dc8 100644 --- a/Telegram/SourceFiles/ui/effects/thanos_effect_renderer.h +++ b/Telegram/SourceFiles/ui/effects/thanos_effect_renderer.h @@ -10,7 +10,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/rhi/rhi_renderer.h" #include "ui/gl/gl_surface.h" -#include #include #if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0) @@ -111,8 +110,7 @@ private: std::vector _items; std::vector _pendingItems; - QElapsedTimer _elapsed; - double _lastFrameTime = 0.; + crl::time _lastFrameTime = 0; bool _initialized = false; bool _creationFailed = false; uint32_t _seedCounter = 0;