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):
QWidget(parent)
, m_oldStatus(Status::PlayingLoop)
, m_layer(layer)
, m_suspendResumeButton(0)
{
@ -32,7 +33,7 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer):
layout->addLayout(playback);
m_suspendResumeButton = new QPushButton(this);
m_suspendResumeButton->setText(StatusStr[Status::Iddle]);
m_suspendResumeButton->setText(statusToString(Status::Iddle));
connect(m_suspendResumeButton, SIGNAL(clicked()), SLOT(toggleSuspendResume()));
layout->addWidget(m_suspendResumeButton);
@ -180,7 +181,7 @@ void AudioLayerWidget::setPlaybackStatus(Status s)
{
m_suspendResumeButton->blockSignals(true);
m_status = s;
m_suspendResumeButton->setText(StatusStr[s]);
m_suspendResumeButton->setText(statusToString(s));
m_suspendResumeButton->blockSignals(false);
}

View file

@ -11,6 +11,7 @@
#include "clickablelabel.h"
#include "settings.h"
class AudioLayerWidget : public QWidget
{
Q_OBJECT

View file

@ -17,7 +17,7 @@ struct dmxSetting {
int audioDevice;
};
enum Status
enum class Status
{
Stopped,
Paused,
@ -29,6 +29,22 @@ enum Status
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[] =
{
"Stop",
@ -40,7 +56,7 @@ static const char* StatusStr[] =
"Play Folder Loop",
"Play Folder Rand",
0x0
};
};*/
enum Slider
{

View file

@ -132,7 +132,7 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
s = Status::PlayingFolderRandom;
m_mae.playbackChanged(layer, s);
m_currentStatus[layer] = s;
qInfo() << "Layer" << layer << StatusStr[s];
qInfo() << "Layer" << layer << statusToString(s);
#ifndef NOGUI
if (m_ui) {
m_lmsUi->m_aw->playbackChanged(layer, s);
@ -253,7 +253,7 @@ void libreMediaServerAudio::uiPlaybackChanged(int layer, Status s)
if (result == MA_SUCCESS) {
m_currentStatus[layer] = s;
} else {
qWarning() << "ui playback change error" << result << "status" << s << "layer" << layer;
qWarning() << "ui playback change error " << result << " status " << statusToString(s) << "layer" << layer;
}
}