From d3c163b77510359f4b2b6fb31a201141ea726c30 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Fri, 11 Aug 2017 08:52:09 -0700 Subject: [PATCH] UI: Fix Stats not showing stream data until start --- UI/window-basic-stats.cpp | 29 ++++++++++++++--------------- UI/window-basic-stats.hpp | 2 +- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/UI/window-basic-stats.cpp b/UI/window-basic-stats.cpp index eec8fd679..0e61e27a6 100644 --- a/UI/window-basic-stats.cpp +++ b/UI/window-basic-stats.cpp @@ -388,8 +388,8 @@ void OBSBasicStats::Update() /* ------------------------------------------- */ /* recording/streaming stats */ - outputLabels[0].Update(strOutput); - outputLabels[1].Update(recOutput); + outputLabels[0].Update(strOutput, false); + outputLabels[1].Update(recOutput, true); } void OBSBasicStats::Reset() @@ -411,15 +411,9 @@ void OBSBasicStats::Reset() Update(); } -void OBSBasicStats::OutputLabels::Update(obs_output_t *output) +void OBSBasicStats::OutputLabels::Update(obs_output_t *output, bool rec) { - if (!output) - return; - - const char *id = obs_obj_get_id(output); - bool rec = strcmp(id, "rtmp_output") != 0; - - uint64_t totalBytes = obs_output_get_total_bytes(output); + uint64_t totalBytes = output ? obs_output_get_total_bytes(output) : 0; uint64_t curTime = os_gettime_ns(); uint64_t bytesSent = totalBytes; @@ -439,12 +433,17 @@ void OBSBasicStats::OutputLabels::Update(obs_output_t *output) QString str = QTStr("Basic.Stats.Status.Inactive"); QString themeID; + bool active = output ? obs_output_active(output) : false; if (rec) { - if (obs_output_active(output)) + if (active) str = QTStr("Basic.Stats.Status.Recording"); } else { - if (obs_output_active(output)) { - if (obs_output_reconnecting(output)) { + if (active) { + bool reconnecting = output + ? obs_output_reconnecting(output) + : false; + + if (reconnecting) { str = QTStr("Basic.Stats.Status.Reconnecting"); themeID = "error"; } else { @@ -465,8 +464,8 @@ void OBSBasicStats::OutputLabels::Update(obs_output_t *output) QString("%1 kb/s").arg(QString::number(kbps, 'f', 0))); if (!rec) { - int total = obs_output_get_total_frames(output); - int dropped = obs_output_get_frames_dropped(output); + int total = output ? obs_output_get_total_frames(output) : 0; + int dropped = output ? obs_output_get_frames_dropped(output) : 0; if (total < first_total || dropped < first_dropped) { first_total = 0; diff --git a/UI/window-basic-stats.hpp b/UI/window-basic-stats.hpp index d6502d53e..a719b7da7 100644 --- a/UI/window-basic-stats.hpp +++ b/UI/window-basic-stats.hpp @@ -42,7 +42,7 @@ class OBSBasicStats : public QWidget { int first_total = 0; int first_dropped = 0; - void Update(obs_output_t *output); + void Update(obs_output_t *output, bool rec); void Reset(obs_output_t *output); };