diff --git a/src/libprojectM/KeyHandler.cpp b/src/libprojectM/KeyHandler.cpp index 210a96fbb..55f841a65 100755 --- a/src/libprojectM/KeyHandler.cpp +++ b/src/libprojectM/KeyHandler.cpp @@ -233,7 +233,7 @@ void projectM::default_key_handler( projectMEvent event, projectMKeycode keycode if (renderer->showmenu) { renderer->showhelp = false; renderer->showstats = false; - populatePresets(); + populatePresetMenu(); } break; case PROJECTM_K_M: @@ -242,7 +242,7 @@ void projectM::default_key_handler( projectMEvent event, projectMKeycode keycode { renderer->showhelp=false; renderer->showstats=false; - populatePresets(); + populatePresetMenu(); } break; case PROJECTM_K_n: diff --git a/src/libprojectM/projectM.cpp b/src/libprojectM/projectM.cpp index eaf662b8f..31f1cb176 100755 --- a/src/libprojectM/projectM.cpp +++ b/src/libprojectM/projectM.cpp @@ -668,7 +668,8 @@ int projectM::initPresetTools(int gx, int gy) m_activePreset = m_presetLoader->loadPreset ("idle://Geiss & Sperl - Feedback (projectM idle HDR mix).milk"); renderer->setPresetName("Geiss & Sperl - Feedback (projectM idle HDR mix)"); - populatePresets(); + + populatePresetMenu(); renderer->SetPipeline(m_activePreset->pipeline()); @@ -775,14 +776,14 @@ void projectM::selectPreset(unsigned int index, bool hardCut) if (m_presetChooser->empty()) return; - populatePresets(); + populatePresetMenu(); *m_presetPos = m_presetChooser->begin(index); switchPreset(hardCut); } -// populatePresets is called when a preset is loaded. -void projectM::populatePresets() +// populatePresetMenu is called when a preset is loaded. +void projectM::populatePresetMenu() { if (renderer->showmenu) { // only track a preset list buffer if the preset menu is up. renderer->m_presetList.clear(); // clear preset list buffer from renderer. @@ -823,8 +824,6 @@ void projectM::switchPreset(const bool hardCut) { timeKeeper->StartSmoothing(); } - populatePresets(); - if (result.empty()) { presetSwitchedEvent(hardCut, **m_presetPos); errorLoadingCurrentPreset = false; @@ -832,6 +831,8 @@ void projectM::switchPreset(const bool hardCut) { presetSwitchFailedEvent(hardCut, **m_presetPos, result); errorLoadingCurrentPreset = true; } + + populatePresetMenu(); } @@ -853,7 +854,7 @@ void projectM::selectPrevious(const bool hardCut) { if (m_presetChooser->empty()) return; - if (settings().shuffleEnabled && presetHistory.size() >= 1 && presetHistory.back() != m_presetLoader->size()) { // if randomly browsing presets, "previous" should return to last random preset not the index--. Avoid returning to size() because that's the idle:// preset. + if (settings().shuffleEnabled && presetHistory.size() >= 1 && presetHistory.back() != m_presetLoader->size() && !renderer->showmenu) { // if randomly browsing presets, "previous" should return to last random preset not the index--. Avoid returning to size() because that's the idle:// preset. presetFuture.push_back(m_presetPos->lastIndex()); selectPreset(presetHistory.back()); presetHistory.pop_back(); @@ -870,7 +871,7 @@ void projectM::selectPrevious(const bool hardCut) { void projectM::selectNext(const bool hardCut) { if (m_presetChooser->empty()) return; - if (settings().shuffleEnabled && presetFuture.size() >= 1 && presetFuture.front() != m_presetLoader->size()) { // if shuffling and we have future presets already stashed then let's go forward rather than truely move randomly. + if (settings().shuffleEnabled && presetFuture.size() >= 1 && presetFuture.front() != m_presetLoader->size() && !renderer->showmenu) { // if shuffling and we have future presets already stashed then let's go forward rather than truely move randomly. presetHistory.push_back(m_presetPos->lastIndex()); selectPreset(presetFuture.back()); presetFuture.pop_back(); diff --git a/src/libprojectM/projectM.hpp b/src/libprojectM/projectM.hpp index a18de2197..f27da7da5 100644 --- a/src/libprojectM/projectM.hpp +++ b/src/libprojectM/projectM.hpp @@ -199,8 +199,8 @@ public: /// Plays a preset immediately void selectPreset(unsigned int index, bool hardCut = true); - /// Plays a preset immediately - void populatePresets(); + /// Populates a page full of presets for the renderer to use. + void populatePresetMenu(); /// Removes a preset from the play list. If it is playing then it will continue as normal until next switch void removePreset(unsigned int index);