Trace desktop stream stalls across playback and preview UI

This commit is contained in:
evgeny committed 2026-10-20 22:20:31 +02:00
1 parent b1112981fa
commit 7ce60ca0f2
3 files changed
+100 -23

No files matched your search

+11
View File
@@ -47,6 +47,7 @@ extern "C" {
#include "../transport/gui_bridge.h"
#include <QSplitter>
#include <QCloseEvent>
#include <QElapsedTimer>
#include <QApplication>
#include <QScreen>
#include <QClipboard>
@@ -664,6 +665,7 @@ void MainWindow::setupBridgeCallbacks() {
/* Один publisher обслуживает шапку и свою плитку; окно управления не владеет сеткой и её readers. */
void MainWindow::showStreamPublisher(quint64 group, StreamGridWindow* returnTo) {
QElapsedTimer elapsed; elapsed.start();
if (!m_streamPublisher) {
m_streamPublisher = new StreamPublishEngine(this);
connect(m_streamPublisher, &StreamPublishEngine::stateChanged, this, [this](const QString& state) {
@@ -674,9 +676,12 @@ void MainWindow::showStreamPublisher(quint64 group, StreamGridWindow* returnTo)
if (m_streamGrid) m_streamGrid->setLocalPreview(m_streamPublisher->group(), frame);
});
}
qint64 engineUs = elapsed.nsecsElapsed() / 1000;
if (m_streamPublishWindow) delete m_streamPublishWindow.data();
qint64 removedUs = elapsed.nsecsElapsed() / 1000;
m_streamPublishWindow = new StreamPublishWindow(m_streamPublisher, m_streamPublisher->active() ? m_streamPublisher->group() : group,
this, m_db ? m_db->getUiState("stream_capture_settings") : QString());
qint64 constructedUs = elapsed.nsecsElapsed() / 1000;
connect(m_streamPublishWindow, &StreamPublishWindow::settingsChanged, this,
[](const QString& settings) { postUiStateKv("stream_capture_settings", settings); });
if (returnTo) connect(m_streamPublishWindow, &StreamPublishWindow::closed, returnTo, [returnTo] {
@@ -688,6 +693,12 @@ void MainWindow::showStreamPublisher(quint64 group, StreamGridWindow* returnTo)
DEBUG_INFO(DEBUG_CATEGORY_STREAM, "desktop publisher controls opened group=%llx return_to_grid=%d",
(unsigned long long)group, returnTo != nullptr);
m_streamPublishWindow->show(); m_streamPublishWindow->raise(); m_streamPublishWindow->activateWindow();
qint64 shownUs = elapsed.nsecsElapsed() / 1000;
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG,
"desktop publisher UI group=%llx active=%d return_to_grid=%d engine_us=%lld remove_us=%lld construct_us=%lld show_us=%lld total_us=%lld",
(unsigned long long)group, m_streamPublisher->active(), returnTo != nullptr, (long long)engineUs,
(long long)(removedUs - engineUs), (long long)(constructedUs - removedUs),
(long long)(shownUs - constructedUs), (long long)shownUs);
}
void MainWindow::setupConnects() {