restringe las señales de los sliders, en vez de actualizar en directo,

sólo actualiza con el timer refreshGui.
This commit is contained in:
snt 2024-05-05 14:39:21 +02:00
parent ef653553d9
commit 246a8a2f98
8 changed files with 53 additions and 34 deletions

View file

@ -28,6 +28,12 @@ libreMediaServerAudio::libreMediaServerAudio(bool gui)
set->readFile();
m_mediaLibrary = new MediaLibrary;
m_mediaLibrary->initMediaLibrary();
for (int i = 0; i < MAX_LAYERS; i++) {
m_currentMedia[i] = Status::Iddle;
m_updateUi[i][0] = -1;
m_updateUi[i][1] = -1;
m_updateUi[i][2] = -1;
}
m_ola = new olaThread(this, set->getLayersNumber());
Q_CHECK_PTR(m_ola);
m_ola->blockSignals(true);
@ -54,7 +60,7 @@ libreMediaServerAudio::~libreMediaServerAudio()
void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
{
if (layer > LAYER_CHANNELS)
if (layer >= MAX_LAYERS || channel >= LAYER_CHANNELS)
return;
QString mediaFile = NULL;
int aux;
@ -66,40 +72,32 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
return;
if (QFile::exists(mediaFile)){
m_mae.loadMedia(layer, mediaFile.toLatin1().data());
#ifndef NOGUI
m_currentMedia[layer] = mediaFile;
#ifndef NOGIO
if (m_ui)
m_lmsUi->m_aw->mediaLoaded(layer, mediaFile, m_mae.getDuration(layer));
#endif
m_currentMedia[layer] = mediaFile;
}
return;
} else if (channel == VOLUME_COARSE || channel == VOLUME_FINE) {
m_mae.volChanged(layer, (value / 65025.0f));
#ifndef NOGUI
if (m_ui)
m_lmsUi->m_aw->volChanged(layer, (value / 650.25f));
#endif
float tmp = value / 65025.0f;
m_mae.volChanged(layer, tmp);
m_updateUi[layer][0] = tmp * 100;
} else if (channel == PAN) {
m_mae.panChanged(layer, value);
#ifndef NOGUI
if (m_ui)
m_lmsUi->m_aw->panChanged(layer, value);
#endif
m_updateUi[layer][1] = value;
} else if (channel == PITCH) {
m_mae.pitchChanged(layer, value);
#ifndef NOGUI
if (m_ui)
m_lmsUi->m_aw->pitchChanged(layer, value);
#endif
m_updateUi[layer][2] = value;
} else if (channel == ENTRY_POINT_COARSE || channel == ENTRY_POINT_FINE) {
m_mae.setCursor(layer, value);
#ifndef NOGUI
if (m_ui)
m_lmsUi->m_aw->cursorChanged(layer, m_mae.getCursor(layer));
m_lmsUi->m_aw->cursorChanged(layer, m_mae.getCursor(layer));
#endif
return;
} else if (channel == PLAYBACK && value > 0) {
Status s = m_mae.getStatus(layer);
aux = value / 25;
Status s = m_currentStatus[layer];
if (s != aux) {
if (aux == 0)
s = Status::PlayingOnce;
@ -110,9 +108,9 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
else if (aux == 3)
s = Status::PlayingLoop;
m_mae.playbackChanged(layer, s);
m_currentStatus[layer] = s;
#ifndef NOGUI
if (m_ui)
m_lmsUi->m_aw->playbackChanged(layer, s);
if (m_ui) m_lmsUi->m_aw->playbackChanged(layer, s);
#endif
}
}
@ -120,13 +118,23 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
#ifndef NOGUI
void libreMediaServerAudio::refreshUi() {
if (!m_ui)
return;
if (!m_ui) return;
for (int i= 0; i < Settings::getInstance()->getLayersNumber(); i++ ) {
Status s = m_mae.getStatus(i);
Status s = m_currentStatus[i];
if (s == Status::PlayingOnce || s == Status::PlayingLoop) {
m_lmsUi->m_aw->cursorChanged(i, m_mae.getCursor(i));
//m_lmsUi->m_aw->playbackChanged(i, s);
}
if (m_updateUi[i][0] >= 0) {
m_lmsUi->m_aw->volChanged(i, m_updateUi[i][0]);
m_updateUi[i][0] = -1;
}
if (m_updateUi[i][1] >= 0) {
m_lmsUi->m_aw->panChanged(i, m_updateUi[i][1]);
m_updateUi[i][1] = -1;
}
if (m_updateUi[i][2] >= 0) {
m_lmsUi->m_aw->pitchChanged(i, m_updateUi[i][2]);
m_updateUi[i][2] = -1;
}
}
}