cambida señal dmx por llamada directa al método, reduce un 20% de cpu en

mi ordenador.
Restringida actualización de entry point como volumen, sigue cascando la
búsqueda en mp3, wav va fino.
This commit is contained in:
snt 2024-05-05 21:44:21 +02:00
parent d34b972a54
commit 5915d4898e
6 changed files with 45 additions and 37 deletions

View file

@ -29,10 +29,14 @@ libreMediaServerAudio::libreMediaServerAudio(bool gui)
m_mediaLibrary = new MediaLibrary;
m_mediaLibrary->initMediaLibrary();
for (int i = 0; i < MAX_LAYERS; i++) {
m_currentMedia[i] = Status::Iddle;
m_currentMedia[i] = "";
m_currentStatus[i] = Status::Iddle;
#ifdef NOGUI
m_updateUi[i][0] = -1;
m_updateUi[i][1] = -1;
m_updateUi[i][2] = -1;
m_updateUi[i][3] = -1;
#endif
}
m_ola = new olaThread(this, set->getLayersNumber());
Q_CHECK_PTR(m_ola);
@ -42,7 +46,9 @@ libreMediaServerAudio::libreMediaServerAudio(bool gui)
m_mae.startEngine(set->getAudioDeviceId());
qDebug("Core init Complete. Start reading DMX.");
m_ola->blockSignals(false);
#ifdef NOGUI
m_ola->start(QThread::TimeCriticalPriority );
#endif
}
libreMediaServerAudio::~libreMediaServerAudio()
@ -71,7 +77,6 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
m_lmsUi->m_aw->mediaLoaded(layer, mediaFile, m_mae.getDuration(layer));
#endif
}
return;
} else if (channel == VOLUME_COARSE || channel == VOLUME_FINE) {
float tmp = value / 65025.0f;
m_mae.volChanged(layer, tmp);
@ -84,10 +89,7 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
m_updateUi[layer][2] = value;
} else if (channel == ENTRY_POINT_COARSE || channel == ENTRY_POINT_FINE) {
m_mae.setCursor(layer, value);
#ifndef NOGUI
m_lmsUi->m_aw->cursorChanged(layer, m_mae.getCursor(layer));
#endif
return;
m_updateUi[layer][3] = value;
} else if (channel == PLAYBACK && value > 0) {
aux = value / 25;
Status s = m_currentStatus[layer];
@ -111,10 +113,6 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
void libreMediaServerAudio::refreshUi() {
if (!m_ui) return;
for (int i= 0; i < Settings::getInstance()->getLayersNumber(); i++ ) {
Status s = m_currentStatus[i];
if (s == Status::PlayingOnce || s == Status::PlayingLoop) {
m_lmsUi->m_aw->cursorChanged(i, m_mae.getCursor(i));
}
if (m_updateUi[i][0] >= 0) {
m_lmsUi->m_aw->volChanged(i, m_updateUi[i][0]);
m_updateUi[i][0] = -1;
@ -127,7 +125,10 @@ void libreMediaServerAudio::refreshUi() {
m_lmsUi->m_aw->pitchChanged(i, m_updateUi[i][2]);
m_updateUi[i][2] = -1;
}
//m_lmsUi->m_aw->playbackChanged(i, m_currentStatus[i]);
if (m_updateUi[i][3] >= 0) {
m_lmsUi->m_aw->cursorChanged(i, m_mae.getCursor(i));
m_updateUi[i][3] = -1;
}
}
}
@ -141,6 +142,7 @@ void libreMediaServerAudio::setUi(libreMediaServerAudioUi *lmsUi)
m_refreshUi = new QTimer(this);
connect(m_refreshUi, SIGNAL(timeout()), this, SLOT(refreshUi()));
m_refreshUi->start(UI_REFRESH_TIME);
m_ola->start(QThread::TimeCriticalPriority );
};
void libreMediaServerAudio::uiSliderChanged(int layer, Slider s, int value)