mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 04:42:18 +02:00
17d654fcfc
This changes the status bar record output from a strong reference to a weak one.
120 lines
2.5 KiB
C++
120 lines
2.5 KiB
C++
#pragma once
|
|
|
|
#include <QStatusBar>
|
|
#include <QPointer>
|
|
#include <QTimer>
|
|
#include <obs.h>
|
|
#include <memory>
|
|
|
|
class Ui_StatusBarWidget;
|
|
|
|
class StatusBarWidget : public QWidget {
|
|
Q_OBJECT
|
|
|
|
friend class OBSBasicStatusBar;
|
|
|
|
private:
|
|
std::unique_ptr<Ui_StatusBarWidget> ui;
|
|
|
|
public:
|
|
StatusBarWidget(QWidget *parent = nullptr);
|
|
~StatusBarWidget();
|
|
};
|
|
|
|
class OBSBasicStatusBar : public QStatusBar {
|
|
Q_OBJECT
|
|
|
|
private:
|
|
StatusBarWidget *statusWidget = nullptr;
|
|
|
|
OBSWeakOutputAutoRelease streamOutput;
|
|
std::vector<OBSSignal> streamSigs;
|
|
OBSWeakOutputAutoRelease recordOutput;
|
|
bool active = false;
|
|
bool overloadedNotify = true;
|
|
bool streamPauseIconToggle = false;
|
|
bool disconnected = false;
|
|
bool firstCongestionUpdate = false;
|
|
|
|
std::vector<float> congestionArray;
|
|
|
|
int retries = 0;
|
|
int totalStreamSeconds = 0;
|
|
int totalRecordSeconds = 0;
|
|
|
|
int reconnectTimeout = 0;
|
|
|
|
int delaySecTotal = 0;
|
|
int delaySecStarting = 0;
|
|
int delaySecStopping = 0;
|
|
|
|
int startSkippedFrameCount = 0;
|
|
int startTotalFrameCount = 0;
|
|
int lastSkippedFrameCount = 0;
|
|
|
|
int seconds = 0;
|
|
uint64_t lastBytesSent = 0;
|
|
uint64_t lastBytesSentTime = 0;
|
|
|
|
QPixmap excellentPixmap;
|
|
QPixmap goodPixmap;
|
|
QPixmap mediocrePixmap;
|
|
QPixmap badPixmap;
|
|
QPixmap disconnectedPixmap;
|
|
QPixmap inactivePixmap;
|
|
|
|
QPixmap recordingActivePixmap;
|
|
QPixmap recordingPausePixmap;
|
|
QPixmap recordingPauseInactivePixmap;
|
|
QPixmap recordingInactivePixmap;
|
|
QPixmap streamingActivePixmap;
|
|
QPixmap streamingInactivePixmap;
|
|
|
|
float lastCongestion = 0.0f;
|
|
|
|
QPointer<QTimer> refreshTimer;
|
|
QPointer<QTimer> messageTimer;
|
|
|
|
obs_output_t *GetOutput();
|
|
|
|
void Activate();
|
|
void Deactivate();
|
|
|
|
void UpdateDelayMsg();
|
|
void UpdateBandwidth();
|
|
void UpdateStreamTime();
|
|
void UpdateRecordTime();
|
|
void UpdateRecordTimeLabel();
|
|
void UpdateDroppedFrames();
|
|
|
|
static void OBSOutputReconnect(void *data, calldata_t *params);
|
|
static void OBSOutputReconnectSuccess(void *data, calldata_t *params);
|
|
|
|
public slots:
|
|
void UpdateCPUUsage();
|
|
|
|
void clearMessage();
|
|
void showMessage(const QString &message, int timeout = 0);
|
|
|
|
private slots:
|
|
void Reconnect(int seconds);
|
|
void ReconnectSuccess();
|
|
void UpdateStatusBar();
|
|
void UpdateCurrentFPS();
|
|
void UpdateIcons();
|
|
|
|
public:
|
|
OBSBasicStatusBar(QWidget *parent);
|
|
|
|
void StreamDelayStarting(int sec);
|
|
void StreamDelayStopping(int sec);
|
|
void StreamStarted(obs_output_t *output);
|
|
void StreamStopped();
|
|
void RecordingStarted(obs_output_t *output);
|
|
void RecordingStopped();
|
|
void RecordingPaused();
|
|
void RecordingUnpaused();
|
|
|
|
void ReconnectClear();
|
|
};
|