Also just noticed that there's an extraneous else statement that my patch doesn't remove. (Which would have messed with the instant update feature. That's my bad - somehow managed to introduce an inconsistency in my own code when moving from OS X to linux.) Attaching a fix.
Aaron
Make sure the frames setting is saved when it's the only setting that's changed.
Restore the previous settings in the setup form when the cancel button is pressed.
Index: qjackctl-0.6.1/src/qjackctlSetupForm.cpp
===================================================================
--- qjackctl-0.6.1.orig/src/qjackctlSetupForm.cpp
+++ qjackctl-0.6.1/src/qjackctlSetupForm.cpp
@@ -1612,13 +1612,12 @@ void qjackctlSetupForm::apply (void)
 	if (pMainForm == nullptr)
 		return;
 
-	if (m_iDirtySettings > 0 || m_iDirtyPreset > 0) {
+	if (m_iDirtySettings > 0 || m_iDirtyPreset > 0 || m_iDirtyBuffSize > 0) {
 		// Save current preset selection.
 		m_pSetup->sDefPreset = m_ui.PresetComboBox->currentText();
 		// Always save current settings...
 		savePreset(m_pSetup->sDefPreset);
 	}
-	else
 	if (m_iDirtyBuffSize > 0) {
 		// Change JACK buffer size immediately...
 		if (!pMainForm->resetBuffSize(jack_nframes_t(
@@ -1908,7 +1907,7 @@ bool qjackctlSetupForm::queryClose (void
 	bool bQueryClose = true;
 
 	// Check if there's any pending changes...
-	if (m_iDirtySettings > 0 || m_iDirtyOptions > 0) {
+	if (m_iDirtySettings > 0 || m_iDirtyOptions > 0 || m_iDirtyBuffSize > 0) {
 		switch (QMessageBox::warning(isVisible() ? this : parentWidget(),
 			tr("Warning") + " - " QJACKCTL_SUBTITLE1,
 			tr("Some settings have been changed.\n\n"
@@ -1920,9 +1919,14 @@ bool qjackctlSetupForm::queryClose (void
 			accept();
 			// Fall thru...
 		case QMessageBox::Discard:
+			if (m_pSetup) {
+				setup(m_pSetup);
+				changePreset(m_pSetup->sDefPreset);
+			}
 			// Reset dirty flags...
 			m_iDirtySettings = 0;
 			m_iDirtyOptions = 0;
+			m_iDirtyBuffSize = 0;
 			break;
 		default:    // Cancel.
 			bQueryClose = false;

Reply via email to