Kaynağa Gözat

UI: Fix Stats not showing stream data until start

jp9000 8 yıl önce
ebeveyn
işleme
d3c163b775
2 değiştirilmiş dosya ile 15 ekleme ve 16 silme
  1. 14 15
      UI/window-basic-stats.cpp
  2. 1 1
      UI/window-basic-stats.hpp

+ 14 - 15
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;

+ 1 - 1
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);
 	};