mirror of
https://github.com/moonlight-stream/moonlight-qt.git
synced 2026-04-11 18:26:18 +00:00
Properly manage the lifetime of polling in the AppView and PcView
This commit is contained in:
@@ -269,7 +269,7 @@ bool NvComputer::update(NvComputer& that)
|
||||
|
||||
ComputerManager::ComputerManager(QObject *parent)
|
||||
: QObject(parent),
|
||||
m_Polling(false),
|
||||
m_PollingRef(0),
|
||||
m_MdnsBrowser(nullptr)
|
||||
{
|
||||
QSettings settings;
|
||||
@@ -302,12 +302,10 @@ void ComputerManager::startPolling()
|
||||
{
|
||||
QWriteLocker lock(&m_Lock);
|
||||
|
||||
if (m_Polling) {
|
||||
if (++m_PollingRef > 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_Polling = true;
|
||||
|
||||
// Start an MDNS query for GameStream hosts
|
||||
m_MdnsBrowser = new QMdnsEngine::Browser(&m_MdnsServer, "_nvstream._tcp.local.", &m_MdnsCache);
|
||||
connect(m_MdnsBrowser, &QMdnsEngine::Browser::serviceAdded,
|
||||
@@ -400,12 +398,11 @@ void ComputerManager::stopPollingAsync()
|
||||
{
|
||||
QWriteLocker lock(&m_Lock);
|
||||
|
||||
if (!m_Polling) {
|
||||
Q_ASSERT(m_PollingRef > 0);
|
||||
if (--m_PollingRef > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_Polling = false;
|
||||
|
||||
// Delete machines that haven't been resolved yet
|
||||
while (!m_PendingResolution.isEmpty()) {
|
||||
MdnsPendingComputer* computer = m_PendingResolution.first();
|
||||
@@ -456,7 +453,7 @@ ComputerManager::handleComputerStateChanged(NvComputer* computer)
|
||||
void
|
||||
ComputerManager::startPollingComputer(NvComputer* computer)
|
||||
{
|
||||
if (!m_Polling) {
|
||||
if (m_PollingRef == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user