/
githubmirror
/
obs-studio
Обзор
Документация
Войти
/
githubmirror
/
obs-studio
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
31.0.4
UI/window-basic-status-bar.hpp
119 строк
2 KB
cg2121
UI: Make status bar record output a weak ref
04 июн 2024, 00:00
04 июн 2024, 00:00
17d654f
Код
Авторство
О чём код?
#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(); };