mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2026-06-18 14:40:56 +00:00
Persist host changes after update
This commit is contained in:
@@ -60,16 +60,19 @@ NvComputer::serialize(QSettings& settings)
|
|||||||
settings.setValue(SER_REMOTEADDR, remoteAddress);
|
settings.setValue(SER_REMOTEADDR, remoteAddress);
|
||||||
settings.setValue(SER_MANUALADDR, manualAddress);
|
settings.setValue(SER_MANUALADDR, manualAddress);
|
||||||
|
|
||||||
settings.remove(SER_APPLIST);
|
// Avoid deleting an existing applist if we couldn't get one
|
||||||
settings.beginWriteArray(SER_APPLIST);
|
if (!appList.isEmpty()) {
|
||||||
for (int i = 0; i < appList.count(); i++) {
|
settings.remove(SER_APPLIST);
|
||||||
settings.setArrayIndex(i);
|
settings.beginWriteArray(SER_APPLIST);
|
||||||
|
for (int i = 0; i < appList.count(); i++) {
|
||||||
|
settings.setArrayIndex(i);
|
||||||
|
|
||||||
settings.setValue(SER_APPNAME, appList[i].name);
|
settings.setValue(SER_APPNAME, appList[i].name);
|
||||||
settings.setValue(SER_APPID, appList[i].id);
|
settings.setValue(SER_APPID, appList[i].id);
|
||||||
settings.setValue(SER_APPHDR, appList[i].hdrSupported);
|
settings.setValue(SER_APPHDR, appList[i].hdrSupported);
|
||||||
|
}
|
||||||
|
settings.endArray();
|
||||||
}
|
}
|
||||||
settings.endArray();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NvComputer::NvComputer(QString address, QString serverInfo)
|
NvComputer::NvComputer(QString address, QString serverInfo)
|
||||||
@@ -161,6 +164,7 @@ ComputerManager::ComputerManager()
|
|||||||
void ComputerManager::saveHosts()
|
void ComputerManager::saveHosts()
|
||||||
{
|
{
|
||||||
QSettings settings;
|
QSettings settings;
|
||||||
|
QReadLocker lock(&m_Lock);
|
||||||
|
|
||||||
settings.remove(SER_HOSTS);
|
settings.remove(SER_HOSTS);
|
||||||
settings.beginWriteArray(SER_HOSTS);
|
settings.beginWriteArray(SER_HOSTS);
|
||||||
@@ -229,20 +233,26 @@ bool ComputerManager::addNewHost(QString address, bool mdns)
|
|||||||
bool changed = existingComputer->update(*newComputer);
|
bool changed = existingComputer->update(*newComputer);
|
||||||
delete newComputer;
|
delete newComputer;
|
||||||
|
|
||||||
|
// Drop the lock before notifying
|
||||||
|
lock.unlock();
|
||||||
|
|
||||||
// Tell our client if something changed
|
// Tell our client if something changed
|
||||||
if (changed) {
|
if (changed) {
|
||||||
emit computerStateChanged(existingComputer);
|
handleComputerStateChanged(existingComputer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Store this in our active sets
|
// Store this in our active sets
|
||||||
m_KnownHosts[newComputer->uuid] = newComputer;
|
m_KnownHosts[newComputer->uuid] = newComputer;
|
||||||
|
|
||||||
// Tell our client about this new PC
|
// Start polling if enabled (write lock required)
|
||||||
emit computerStateChanged(newComputer);
|
|
||||||
|
|
||||||
// Start polling if enabled
|
|
||||||
startPollingComputer(newComputer);
|
startPollingComputer(newComputer);
|
||||||
|
|
||||||
|
// Drop the lock before notifying
|
||||||
|
lock.unlock();
|
||||||
|
|
||||||
|
// Tell our client about this new PC
|
||||||
|
handleComputerStateChanged(newComputer);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -264,6 +274,9 @@ void
|
|||||||
ComputerManager::handleComputerStateChanged(NvComputer* computer)
|
ComputerManager::handleComputerStateChanged(NvComputer* computer)
|
||||||
{
|
{
|
||||||
emit computerStateChanged(computer);
|
emit computerStateChanged(computer);
|
||||||
|
|
||||||
|
// Save updated hosts to QSettings
|
||||||
|
saveHosts();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Must hold m_Lock for write
|
// Must hold m_Lock for write
|
||||||
|
|||||||
Reference in New Issue
Block a user