

Commited changes should throw a signal to inform the main engine to do the proper parameter Dunno about you, but LMMS should be a DAW able to compete head to head to other DAWs out there (IMHO).

As a step the reset flag is interesting, but as a goal it may not be the case. It should be resilient enough to not need it. Obviously during development it could not be necessary to show such options, but at least a simpler UI to configure multiple directories wouldn't be so complicated to I believe the goal would to make LMMS not need to restart itself by any reason. Making those options available to the end user is a nice thing to do. If the plugin database was corrupted we could rescan everything. Being able so select what and how we scan is a nice feature, because we could avoid long waits if we have a huge number of plugins and just added a new one, or fixed a dependency that allowed a previously broken plugin to load correctly. If some plugins were overwritten (new versions) if may make sense to verify if previously failed plugins are able to load now. If you change paths, some previously available plugins may not be anymore. FL particularly offers to scan only new, scan previously failed and rescan those already ok. This could easily shave a good 300-400 lines of code off the file as well as making it easier to edit and read.įL Studio and Sonar offer such funtionality. This could probably be fixed by adding a SetupOption class that stores the option name, data type, description, whether or not it requires a reset when changed, etc, and then just creating an array of these upon instantiation of the settings dialog and building the dialog's UI and doing the updates dynamically with a for loop. And adding a new setting requires inserting such code into like 4 or 5 different places. There are a number of places there where it's basically the same code duplicated for a bunch of a different settings. While we're at it though, the settings dialog could really use some refactoring in the form of abstraction.

(ConfigManager::inst()->value( "mixer ", "audiodev " ) != m_audioIfaceNames) || Bool needsRestart = (ConfigManager::inst()-> value( "mixer ", "framesperaudiobuffer " ).toInt() != m_bufferSize) ||
