fix sigsev cuando se pincha en el botón de play/pause
This commit is contained in:
parent
7bc339dfe3
commit
8f321b9d69
4 changed files with 24 additions and 6 deletions
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer):
|
AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer):
|
||||||
QWidget(parent)
|
QWidget(parent)
|
||||||
|
, m_oldStatus(Status::PlayingLoop)
|
||||||
, m_layer(layer)
|
, m_layer(layer)
|
||||||
, m_suspendResumeButton(0)
|
, m_suspendResumeButton(0)
|
||||||
{
|
{
|
||||||
|
@ -32,7 +33,7 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer):
|
||||||
layout->addLayout(playback);
|
layout->addLayout(playback);
|
||||||
|
|
||||||
m_suspendResumeButton = new QPushButton(this);
|
m_suspendResumeButton = new QPushButton(this);
|
||||||
m_suspendResumeButton->setText(StatusStr[Status::Iddle]);
|
m_suspendResumeButton->setText(statusToString(Status::Iddle));
|
||||||
connect(m_suspendResumeButton, SIGNAL(clicked()), SLOT(toggleSuspendResume()));
|
connect(m_suspendResumeButton, SIGNAL(clicked()), SLOT(toggleSuspendResume()));
|
||||||
layout->addWidget(m_suspendResumeButton);
|
layout->addWidget(m_suspendResumeButton);
|
||||||
|
|
||||||
|
@ -180,7 +181,7 @@ void AudioLayerWidget::setPlaybackStatus(Status s)
|
||||||
{
|
{
|
||||||
m_suspendResumeButton->blockSignals(true);
|
m_suspendResumeButton->blockSignals(true);
|
||||||
m_status = s;
|
m_status = s;
|
||||||
m_suspendResumeButton->setText(StatusStr[s]);
|
m_suspendResumeButton->setText(statusToString(s));
|
||||||
m_suspendResumeButton->blockSignals(false);
|
m_suspendResumeButton->blockSignals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "clickablelabel.h"
|
#include "clickablelabel.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
|
|
||||||
class AudioLayerWidget : public QWidget
|
class AudioLayerWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
|
@ -17,7 +17,7 @@ struct dmxSetting {
|
||||||
int audioDevice;
|
int audioDevice;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Status
|
enum class Status
|
||||||
{
|
{
|
||||||
Stopped,
|
Stopped,
|
||||||
Paused,
|
Paused,
|
||||||
|
@ -29,6 +29,22 @@ enum Status
|
||||||
PlayingFolderRandom
|
PlayingFolderRandom
|
||||||
};
|
};
|
||||||
|
|
||||||
|
constexpr const char* statusToString(Status e) noexcept
|
||||||
|
{
|
||||||
|
switch (e)
|
||||||
|
{
|
||||||
|
case Status::Stopped: return "Stop";
|
||||||
|
case Status::Paused: return "Paused";
|
||||||
|
case Status::PlayingOnce: return "Play 1";
|
||||||
|
case Status::PlayingLoop: return "Play Loop";
|
||||||
|
case Status::Iddle: return "Iddle";
|
||||||
|
case Status::PlayingFolder: return "Play Folder";
|
||||||
|
case Status::PlayingFolderLoop: return "Play Folder Loop";
|
||||||
|
case Status::PlayingFolderRandom: return "Playing Folder Random";
|
||||||
|
default: return "--++--";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
static const char* StatusStr[] =
|
static const char* StatusStr[] =
|
||||||
{
|
{
|
||||||
"Stop",
|
"Stop",
|
||||||
|
@ -40,7 +56,7 @@ static const char* StatusStr[] =
|
||||||
"Play Folder Loop",
|
"Play Folder Loop",
|
||||||
"Play Folder Rand",
|
"Play Folder Rand",
|
||||||
0x0
|
0x0
|
||||||
};
|
};*/
|
||||||
|
|
||||||
enum Slider
|
enum Slider
|
||||||
{
|
{
|
||||||
|
|
|
@ -132,7 +132,7 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
|
||||||
s = Status::PlayingFolderRandom;
|
s = Status::PlayingFolderRandom;
|
||||||
m_mae.playbackChanged(layer, s);
|
m_mae.playbackChanged(layer, s);
|
||||||
m_currentStatus[layer] = s;
|
m_currentStatus[layer] = s;
|
||||||
qInfo() << "Layer" << layer << StatusStr[s];
|
qInfo() << "Layer" << layer << statusToString(s);
|
||||||
#ifndef NOGUI
|
#ifndef NOGUI
|
||||||
if (m_ui) {
|
if (m_ui) {
|
||||||
m_lmsUi->m_aw->playbackChanged(layer, s);
|
m_lmsUi->m_aw->playbackChanged(layer, s);
|
||||||
|
@ -253,7 +253,7 @@ void libreMediaServerAudio::uiPlaybackChanged(int layer, Status s)
|
||||||
if (result == MA_SUCCESS) {
|
if (result == MA_SUCCESS) {
|
||||||
m_currentStatus[layer] = s;
|
m_currentStatus[layer] = s;
|
||||||
} else {
|
} else {
|
||||||
qWarning() << "ui playback change error" << result << "status" << s << "layer" << layer;
|
qWarning() << "ui playback change error " << result << " status " << statusToString(s) << "layer" << layer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue