From fe18c454e297bbd5c61b600f2a3b0840ea3484e4 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Fri, 24 Jul 2026 22:11:03 +0300 Subject: [PATCH] chatgui: add diagnostic logging for Windows emoji animation bug investigation --- tools/chatgui/src/emojipanel.cpp | 3 +++ tools/chatgui/src/lottieicon.cpp | 7 +++++++ tools/chatgui/src/messagelist.cpp | 10 +++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/tools/chatgui/src/emojipanel.cpp b/tools/chatgui/src/emojipanel.cpp index 01eeed96..48927f4e 100644 --- a/tools/chatgui/src/emojipanel.cpp +++ b/tools/chatgui/src/emojipanel.cpp @@ -3,6 +3,7 @@ #include "emojitabbar.h" #include "animtimer.h" #include "lottieicon.h" +#include #include #include #include @@ -34,6 +35,8 @@ public: if (data.type == EmojiType::Animation) { setMouseTracking(true); m_icon = AnimTimer::instance()->icon(data.animPath); + fprintf(stderr, "[DIAG EmojiBtn] btn=%p path=%s m_icon=%p\n", + (void*)this, qPrintable(data.animPath), (void*)m_icon); m_timer.setInterval(33); connect(&m_timer, &QTimer::timeout, this, [this]() { if (m_icon && m_icon->isValid()) { diff --git a/tools/chatgui/src/lottieicon.cpp b/tools/chatgui/src/lottieicon.cpp index d6490825..d0056b40 100644 --- a/tools/chatgui/src/lottieicon.cpp +++ b/tools/chatgui/src/lottieicon.cpp @@ -2,6 +2,7 @@ #include #include #include +#include static QByteArray unpackGzip(const QByteArray &data) { if (data.isEmpty()) return {}; @@ -35,15 +36,21 @@ static QByteArray unpackGzip(const QByteArray &data) { LottieIcon::LottieIcon(const QByteArray &tgsData) { QByteArray json = unpackGzip(tgsData); + fprintf(stderr, "[DIAG LottieIcon] this=%p tgsSize=%d jsonSize=%d jsonEmpty=%d\n", + (void*)this, (int)tgsData.size(), (int)json.size(), (int)json.isEmpty()); if (json.isEmpty()) return; m_jsonData = json; m_anim = lottie_animation_from_data(m_jsonData.constData(), "", ""); + fprintf(stderr, "[DIAG LottieIcon] this=%p m_anim=%p jsonHead=%.60s\n", + (void*)this, (void*)m_anim, m_jsonData.constData()); if (!m_anim) return; lottie_animation_get_size(m_anim, &m_w, &m_h); m_totalFrames = (int)lottie_animation_get_totalframe(m_anim); m_frameRate = lottie_animation_get_framerate(m_anim); + fprintf(stderr, "[DIAG LottieIcon] this=%p frames=%d size=%zux%zu\n", + (void*)this, m_totalFrames, m_w, m_h); if (m_totalFrames <= 0) m_totalFrames = 1; m_valid = true; } diff --git a/tools/chatgui/src/messagelist.cpp b/tools/chatgui/src/messagelist.cpp index 95a4fd12..c9c8697b 100644 --- a/tools/chatgui/src/messagelist.cpp +++ b/tools/chatgui/src/messagelist.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -104,11 +105,18 @@ MessageList::MessageList(DbManager* db, QWidget *parent) if (e.type == EmojiType::Animation && !e.animPath.isEmpty()) { QFile f(e.animPath); if (f.open(QIODevice::ReadOnly)) { - auto icon = std::make_unique(f.readAll()); + QByteArray raw = f.readAll(); + auto icon = std::make_unique(raw); + fprintf(stderr, "[DIAG register] path=%s fileOpen=1 rawSize=%d iconPtr=%p iconValid=%d\n", + qPrintable(e.animPath), (int)raw.size(), + (void*)icon.get(), (int)icon->isValid()); if (icon->isValid()) { AnimTimer::instance()->registerIcon(e.animPath, icon.get()); s_icons.push_back(std::move(icon)); } + } else { + fprintf(stderr, "[DIAG register] path=%s fileOpen=0\n", + qPrintable(e.animPath)); } } }