fix sigsev cuando se pincha en el botón de play/pause

This commit is contained in:
snt 2024-05-15 02:21:30 +02:00
parent 7bc339dfe3
commit 8f321b9d69
4 changed files with 24 additions and 6 deletions

View file

@ -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);
} }

View file

@ -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

View file

@ -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
{ {

View file

@ -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;
} }
} }