MCPcopy Create free account
hub / github.com/aethersdr/AetherSDR / deferReceivePresentation

Method deferReceivePresentation

src/gui/MainWindow_ReceiveSync.cpp:1212–1255  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1210}
1211
1212void MainWindow::deferReceivePresentation(ReceivePresentationSource source,
1213 ReceivePresentationSurface surface,
1214 std::function<void()> apply,
1215 const QString& sourceId)
1216{
1217 if (!apply) {
1218 return;
1219 }
1220
1221 const int delayMs = receivePresentationDelayMs(source, surface, sourceId);
1222 if (delayMs <= 0) {
1223 apply();
1224 return;
1225 }
1226
1227 if (surfaceUsesOrderedVisualQueue(surface)) {
1228 const qint64 nowMs = QDateTime::currentMSecsSinceEpoch();
1229 const QString key =
1230 receivePresentationVisualQueueKey(source, surface, sourceId);
1231 qint64 dueMs = nowMs + delayMs;
1232 const qint64 previousDueMs =
1233 m_receivePresentationVisualLastDueMs.value(key, 0);
1234 if (previousDueMs > 0 && dueMs <= previousDueMs) {
1235 dueMs = previousDueMs + 1;
1236 }
1237 m_receivePresentationVisualLastDueMs.insert(key, dueMs);
1238 m_receivePresentationVisualQueue.enqueue(
1239 {.source = source,
1240 .surface = surface,
1241 .sourceId = key,
1242 .arrivalMs = nowMs,
1243 .dueMs = dueMs,
1244 .sequence = ++m_receivePresentationVisualSequence,
1245 .payload = std::move(apply)});
1246 m_receivePresentationVisualQueue.trimToSize(
1247 kReceivePresentationVisualQueueMaxItems);
1248 scheduleReceivePresentationVisualQueue();
1249 return;
1250 }
1251
1252 QTimer::singleShot(delayMs, this, [apply = std::move(apply)]() {
1253 apply();
1254 });
1255}
1256
1257void MainWindow::syncReceivePresentationDelaysToAudioEngine(
1258 bool clearVisualQueueOnAbruptDelayChange)

Callers

nothing calls this directly

Calls 6

moveFunction · 0.85
trimToSizeMethod · 0.80
valueMethod · 0.45
enqueueMethod · 0.45

Tested by

no test coverage detected