diff --git a/src/blackcore/webdataservices.cpp b/src/blackcore/webdataservices.cpp index 4b6e9080c..4dda1fef8 100644 --- a/src/blackcore/webdataservices.cpp +++ b/src/blackcore/webdataservices.cpp @@ -819,6 +819,7 @@ namespace BlackCore const bool needsSharedInfoObjects = dbReaderConfig.needsSharedInfoObjects(dbEntities); const bool needsDbInfoObjects = dbReaderConfig.possiblyReadsFromSwiftDb(); bool c = false; // for signal connect + const Qt::ConnectionType readerReadSignals = Qt::QueuedConnection; // Decouple processing of the reader signals from the readers // 1a. If any DB data, read the info objects upfront if (needsDbInfoObjects) @@ -851,7 +852,7 @@ namespace BlackCore if (readersNeeded.testFlag(CWebReaderFlags::VatsimStatusReader) || readersNeeded.testFlag(CWebReaderFlags::VatsimDataReader) || readersNeeded.testFlag(CWebReaderFlags::VatsimMetarReader)) { m_vatsimStatusReader = new CVatsimStatusFileReader(this); - c = connect(m_vatsimStatusReader, &CVatsimStatusFileReader::dataFileRead, this, &CWebDataServices::vatsimStatusFileRead); + c = connect(m_vatsimStatusReader, &CVatsimStatusFileReader::dataFileRead, this, &CWebDataServices::vatsimStatusFileRead, readerReadSignals); CLogMessage(this).info("Trigger read of VATSIM status file"); m_vatsimStatusReader->start(QThread::LowPriority); @@ -865,9 +866,9 @@ namespace BlackCore if (readersNeeded.testFlag(CWebReaderFlags::WebReaderFlag::VatsimBookingReader)) { m_vatsimBookingReader = new CVatsimBookingReader(this); - c = connect(m_vatsimBookingReader, &CVatsimBookingReader::atcBookingsRead, this, &CWebDataServices::receivedBookings); + c = connect(m_vatsimBookingReader, &CVatsimBookingReader::atcBookingsRead, this, &CWebDataServices::receivedBookings, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "VATSIM booking reader signals"); - c = connect(m_vatsimBookingReader, &CVatsimBookingReader::dataRead, this, &CWebDataServices::dataRead); + c = connect(m_vatsimBookingReader, &CVatsimBookingReader::dataRead, this, &CWebDataServices::dataRead, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "connect failed bookings"); m_entitiesPeriodicallyRead |= CEntityFlags::BookingEntity; m_vatsimBookingReader->start(QThread::LowPriority); @@ -878,9 +879,9 @@ namespace BlackCore if (readersNeeded.testFlag(CWebReaderFlags::WebReaderFlag::VatsimDataReader)) { m_vatsimDataFileReader = new CVatsimDataFileReader(this); - c = connect(m_vatsimDataFileReader, &CVatsimDataFileReader::dataFileRead, this, &CWebDataServices::vatsimDataFileRead); + c = connect(m_vatsimDataFileReader, &CVatsimDataFileReader::dataFileRead, this, &CWebDataServices::vatsimDataFileRead, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "VATSIM data reader signals"); - c = connect(m_vatsimDataFileReader, &CVatsimDataFileReader::dataRead, this, &CWebDataServices::dataRead); + c = connect(m_vatsimDataFileReader, &CVatsimDataFileReader::dataRead, this, &CWebDataServices::dataRead, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "connect failed VATSIM data file"); m_entitiesPeriodicallyRead |= CEntityFlags::VatsimDataFile; m_vatsimDataFileReader->start(QThread::LowPriority); @@ -891,9 +892,9 @@ namespace BlackCore if (readersNeeded.testFlag(CWebReaderFlags::WebReaderFlag::VatsimMetarReader)) { m_vatsimMetarReader = new CVatsimMetarReader(this); - c = connect(m_vatsimMetarReader, &CVatsimMetarReader::metarsRead, this, &CWebDataServices::receivedMetars); + c = connect(m_vatsimMetarReader, &CVatsimMetarReader::metarsRead, this, &CWebDataServices::receivedMetars, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "VATSIM METAR reader signals"); - c = connect(m_vatsimMetarReader, &CVatsimMetarReader::dataRead, this, &CWebDataServices::dataRead); + c = connect(m_vatsimMetarReader, &CVatsimMetarReader::dataRead, this, &CWebDataServices::dataRead, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "connect failed VATSIM METAR"); m_entitiesPeriodicallyRead |= CEntityFlags::MetarEntity; m_vatsimMetarReader->start(QThread::LowPriority); @@ -904,11 +905,11 @@ namespace BlackCore if (readersNeeded.testFlag(CWebReaderFlags::WebReaderFlag::IcaoDataReader)) { m_icaoDataReader = new CIcaoDataReader(this, dbReaderConfig); - c = connect(m_icaoDataReader, &CIcaoDataReader::dataRead, this, &CWebDataServices::readFromSwiftReader); + c = connect(m_icaoDataReader, &CIcaoDataReader::dataRead, this, &CWebDataServices::readFromSwiftReader, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "Cannot connect ICAO reader signals"); - c = connect(m_icaoDataReader, &CIcaoDataReader::dataRead, this, &CWebDataServices::dataRead); + c = connect(m_icaoDataReader, &CIcaoDataReader::dataRead, this, &CWebDataServices::dataRead, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "Cannot connect ICAO reader signals"); - c = connect(m_icaoDataReader, &CIcaoDataReader::swiftDbDataRead, this, &CWebDataServices::swiftDbDataRead); + c = connect(m_icaoDataReader, &CIcaoDataReader::swiftDbDataRead, this, &CWebDataServices::swiftDbDataRead, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "Cannot connect Model reader signals"); m_icaoDataReader->start(QThread::LowPriority); } @@ -917,11 +918,11 @@ namespace BlackCore if (readersNeeded.testFlag(CWebReaderFlags::WebReaderFlag::ModelReader)) { m_modelDataReader = new CModelDataReader(this, dbReaderConfig); - c = connect(m_modelDataReader, &CModelDataReader::dataRead, this, &CWebDataServices::readFromSwiftReader); + c = connect(m_modelDataReader, &CModelDataReader::dataRead, this, &CWebDataServices::readFromSwiftReader, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "Cannot connect Model reader signals"); - c = connect(m_modelDataReader, &CModelDataReader::dataRead, this, &CWebDataServices::dataRead); + c = connect(m_modelDataReader, &CModelDataReader::dataRead, this, &CWebDataServices::dataRead, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "Cannot connect Model reader signals"); - c = connect(m_modelDataReader, &CModelDataReader::swiftDbDataRead, this, &CWebDataServices::swiftDbDataRead); + c = connect(m_modelDataReader, &CModelDataReader::swiftDbDataRead, this, &CWebDataServices::swiftDbDataRead, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "Cannot connect Model reader signals"); m_modelDataReader->start(QThread::LowPriority); } @@ -930,11 +931,11 @@ namespace BlackCore if (readersNeeded.testFlag(CWebReaderFlags::WebReaderFlag::AirportReader)) { m_airportDataReader = new CAirportDataReader(this, dbReaderConfig); - c = connect(m_airportDataReader, &CAirportDataReader::dataRead, this, &CWebDataServices::readFromSwiftReader); + c = connect(m_airportDataReader, &CAirportDataReader::dataRead, this, &CWebDataServices::readFromSwiftReader, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "Cannot connect Model reader signals"); - c = connect(m_airportDataReader, &CAirportDataReader::dataRead, this, &CWebDataServices::dataRead); + c = connect(m_airportDataReader, &CAirportDataReader::dataRead, this, &CWebDataServices::dataRead, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "Cannot connect Model reader signals"); - c = connect(m_airportDataReader, &CAirportDataReader::swiftDbDataRead, this, &CWebDataServices::swiftDbDataRead); + c = connect(m_airportDataReader, &CAirportDataReader::swiftDbDataRead, this, &CWebDataServices::swiftDbDataRead, readerReadSignals); Q_ASSERT_X(c, Q_FUNC_INFO, "Cannot connect Model reader signals"); m_airportDataReader->start(QThread::LowPriority); }