mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-07 03:53:38 +00:00
Workaround for audio meter widget getting stuck
This commit is contained in:
parent
5da8d14570
commit
6036857232
|
@ -6,6 +6,7 @@
|
||||||
#include <QSlider>
|
#include <QSlider>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
#include <QTimer>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
|
@ -178,8 +179,17 @@ VolumeMeter::VolumeMeter(QWidget *parent)
|
||||||
peakColor.setRgb(0x3E, 0xF1, 0x2B);
|
peakColor.setRgb(0x3E, 0xF1, 0x2B);
|
||||||
peakHoldColor.setRgb(0x00, 0x00, 0x00);
|
peakHoldColor.setRgb(0x00, 0x00, 0x00);
|
||||||
|
|
||||||
|
resetTimer = new QTimer(this);
|
||||||
|
connect(resetTimer, SIGNAL(timeout()), this, SLOT(resetState()));
|
||||||
|
|
||||||
|
resetState();
|
||||||
|
}
|
||||||
|
|
||||||
|
void VolumeMeter::resetState(void)
|
||||||
|
{
|
||||||
setLevels(0.0f, 0.0f, 0.0f);
|
setLevels(0.0f, 0.0f, 0.0f);
|
||||||
|
if (resetTimer->isActive())
|
||||||
|
resetTimer->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VolumeMeter::setLevels(float nmag, float npeak, float npeakHold)
|
void VolumeMeter::setLevels(float nmag, float npeak, float npeakHold)
|
||||||
|
@ -187,7 +197,13 @@ void VolumeMeter::setLevels(float nmag, float npeak, float npeakHold)
|
||||||
mag = nmag;
|
mag = nmag;
|
||||||
peak = npeak;
|
peak = npeak;
|
||||||
peakHold = npeakHold;
|
peakHold = npeakHold;
|
||||||
|
|
||||||
update();
|
update();
|
||||||
|
|
||||||
|
if (resetTimer->isActive())
|
||||||
|
resetTimer->stop();
|
||||||
|
resetTimer->start(250);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VolumeMeter::paintEvent(QPaintEvent *event)
|
void VolumeMeter::paintEvent(QPaintEvent *event)
|
||||||
|
@ -225,7 +241,7 @@ void VolumeMeter::paintEvent(QPaintEvent *event)
|
||||||
bkColor);
|
bkColor);
|
||||||
|
|
||||||
// Peak hold
|
// Peak hold
|
||||||
if(peakHold == 1.0f)
|
if (peakHold == 1.0f)
|
||||||
scaledPeakHold--;
|
scaledPeakHold--;
|
||||||
|
|
||||||
painter.setPen(peakHoldColor);
|
painter.setPen(peakHoldColor);
|
||||||
|
|
|
@ -9,11 +9,15 @@ class VolumeMeter : public QWidget
|
||||||
private:
|
private:
|
||||||
float mag, peak, peakHold;
|
float mag, peak, peakHold;
|
||||||
QColor bkColor, magColor, peakColor, peakHoldColor;
|
QColor bkColor, magColor, peakColor, peakHoldColor;
|
||||||
|
QTimer *resetTimer;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit VolumeMeter(QWidget *parent = 0);
|
explicit VolumeMeter(QWidget *parent = 0);
|
||||||
void setLevels(float nmag, float npeak, float npeakHold);
|
void setLevels(float nmag, float npeak, float npeakHold);
|
||||||
protected:
|
protected:
|
||||||
void paintEvent(QPaintEvent *event);
|
void paintEvent(QPaintEvent *event);
|
||||||
|
private slots:
|
||||||
|
void resetState();
|
||||||
};
|
};
|
||||||
|
|
||||||
class QLabel;
|
class QLabel;
|
||||||
|
|
Loading…
Reference in a new issue