Skip to content

Commit e9e1ac6

Browse files
authored
Merge pull request #3302 from pljones/bugfix/3287-only-deregister-on-quit
Fixes 3287: Only deregister on quit
2 parents 784d7b7 + 09c3678 commit e9e1ac6

2 files changed

Lines changed: 17 additions & 13 deletions

File tree

src/settings.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ void CSettings::Load ( const QList<QString>& CommandLineOptions )
3636
ReadSettingsFromXML ( IniXMLDocument, CommandLineOptions );
3737
}
3838

39-
void CSettings::Save()
39+
void CSettings::Save ( bool isAboutToQuit )
4040
{
4141
// create XML document for storing initialization parameters
4242
QDomDocument IniXMLDocument;
4343

4444
// write the settings in the XML file
45-
WriteSettingsToXML ( IniXMLDocument );
45+
WriteSettingsToXML ( IniXMLDocument, isAboutToQuit );
4646

4747
// prepare file name for storing initialization data in XML file and store
4848
// XML data in file
@@ -614,8 +614,9 @@ void CClientSettings::ReadFaderSettingsFromXML ( const QDomDocument& IniXMLDocum
614614
}
615615
}
616616

617-
void CClientSettings::WriteSettingsToXML ( QDomDocument& IniXMLDocument )
617+
void CClientSettings::WriteSettingsToXML ( QDomDocument& IniXMLDocument, bool isAboutToQuit )
618618
{
619+
Q_UNUSED ( isAboutToQuit )
619620
int iIdx;
620621

621622
// IP addresses
@@ -944,7 +945,7 @@ void CServerSettings::ReadSettingsFromXML ( const QDomDocument& IniXMLDocument,
944945
}
945946
}
946947

947-
void CServerSettings::WriteSettingsToXML ( QDomDocument& IniXMLDocument )
948+
void CServerSettings::WriteSettingsToXML ( QDomDocument& IniXMLDocument, bool isAboutToQuit )
948949
{
949950
// window position of the main window
950951
PutIniSetting ( IniXMLDocument, "server", "winposmain_base64", ToBase64 ( vecWindowPosMain ) );
@@ -985,6 +986,9 @@ void CServerSettings::WriteSettingsToXML ( QDomDocument& IniXMLDocument )
985986
// delay panning
986987
SetFlagIniSet ( IniXMLDocument, "server", "delaypan", pServer->IsDelayPanningEnabled() );
987988

988-
// we MUST do this after saving the value and Save() is only called OnAboutToQuit()
989-
pServer->SetDirectoryType ( AT_NONE );
989+
// we MUST do this after saving the value and Save() is called OnAboutToQuit()
990+
if ( isAboutToQuit )
991+
{
992+
pServer->SetDirectoryType ( AT_NONE );
993+
}
990994
}

src/settings.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,29 +64,29 @@ class CSettings : public QObject
6464
pGApp,
6565
&QGuiApplication::saveStateRequest,
6666
this,
67-
[=] ( QSessionManager& ) { Save(); },
67+
[=] ( QSessionManager& ) { Save ( false ); },
6868
Qt::DirectConnection );
6969

7070
# endif
7171
QObject::connect ( pGApp, &QGuiApplication::applicationStateChanged, this, [=] ( Qt::ApplicationState state ) {
7272
if ( Qt::ApplicationActive != state )
7373
{
74-
Save();
74+
Save ( false );
7575
}
7676
} );
7777
}
7878
#endif
7979
}
8080

8181
void Load ( const QList<QString>& CommandLineOptions );
82-
void Save();
82+
void Save ( bool isAboutToQuit );
8383

8484
// common settings
8585
QByteArray vecWindowPosMain;
8686
QString strLanguage;
8787

8888
protected:
89-
virtual void WriteSettingsToXML ( QDomDocument& IniXMLDocument ) = 0;
89+
virtual void WriteSettingsToXML ( QDomDocument& IniXMLDocument, bool isAboutToQuit ) = 0;
9090
virtual void ReadSettingsFromXML ( const QDomDocument& IniXMLDocument, const QList<QString>& CommandLineOptions ) = 0;
9191

9292
void ReadFromFile ( const QString& strCurFileName, QDomDocument& XMLDocument );
@@ -131,7 +131,7 @@ class CSettings : public QObject
131131
QString strFileName;
132132

133133
public slots:
134-
void OnAboutToQuit() { Save(); }
134+
void OnAboutToQuit() { Save ( true ); }
135135
};
136136

137137
#ifndef SERVER_ONLY
@@ -202,7 +202,7 @@ class CClientSettings : public CSettings
202202
bool bOwnFaderFirst;
203203

204204
protected:
205-
virtual void WriteSettingsToXML ( QDomDocument& IniXMLDocument ) override;
205+
virtual void WriteSettingsToXML ( QDomDocument& IniXMLDocument, bool isAboutToQuit ) override;
206206
virtual void ReadSettingsFromXML ( const QDomDocument& IniXMLDocument, const QList<QString>& ) override;
207207

208208
void ReadFaderSettingsFromXML ( const QDomDocument& IniXMLDocument );
@@ -221,7 +221,7 @@ class CServerSettings : public CSettings
221221
}
222222

223223
protected:
224-
virtual void WriteSettingsToXML ( QDomDocument& IniXMLDocument ) override;
224+
virtual void WriteSettingsToXML ( QDomDocument& IniXMLDocument, bool isAboutToQuit ) override;
225225
virtual void ReadSettingsFromXML ( const QDomDocument& IniXMLDocument, const QList<QString>& CommandLineOptions ) override;
226226

227227
CServer* pServer;

0 commit comments

Comments
 (0)