diff --git a/USER_MANUAL.html b/USER_MANUAL.html index 9b97f8bb..3755418d 100644 --- a/USER_MANUAL.html +++ b/USER_MANUAL.html @@ -1113,6 +1113,10 @@ properly with other columns. (PR #922) @relistan!)
  • Add note about using XWayland on Linux. (PR #926)
  • +
  • Build system: +
  • 18.2 V2.0.0 June 2025

    diff --git a/USER_MANUAL.md b/USER_MANUAL.md index 00ec71e2..5b510164 100644 --- a/USER_MANUAL.md +++ b/USER_MANUAL.md @@ -803,6 +803,7 @@ LDPC | Low Density Parity Check Codes - a family of powerful FEC codes * Reduce CPU usage of FreeDV Reporter window by only re-sorting if we actually get new data from the server. (PR #915) * FreeDV Reporter: Fix issue with first column not being aligned properly with other columns. (PR #922) * FreeDV Reporter: Work around Linux bug preventing some flag emojis from being fully deleted on backspace. (PR #931) + * Fix GTK+ assertion after FreeDV Reporter has been open for a long time. (PR #929) 2. Documentation: * Add missing dependency for macOS builds to README. (PR #925; thanks @relistan!) * Add note about using XWayland on Linux. (PR #926) diff --git a/USER_MANUAL.pdf b/USER_MANUAL.pdf index 86b0d417..89c32a8d 100644 Binary files a/USER_MANUAL.pdf and b/USER_MANUAL.pdf differ diff --git a/src/gui/dialogs/freedv_reporter.cpp b/src/gui/dialogs/freedv_reporter.cpp index 76993843..3e5f707e 100644 --- a/src/gui/dialogs/freedv_reporter.cpp +++ b/src/gui/dialogs/freedv_reporter.cpp @@ -1405,9 +1405,24 @@ double FreeDVReporterDialog::FreeDVReporterDataModel::RadiansToDegrees_(double r void FreeDVReporterDialog::FreeDVReporterDataModel::execQueuedAction_() { // This ensures that we handle server events in the order they're received. - std::unique_lock lk(fnQueueMtx_); - fnQueue_[0](); - fnQueue_.erase(fnQueue_.begin()); + std::unique_lock lk(fnQueueMtx_, std::defer_lock_t()); + lk.lock(); + auto size = fnQueue_.size(); + lk.unlock(); + + while(size > 0) + { + lk.lock(); + auto fn = fnQueue_[0]; + lk.unlock(); + + fn(); + + lk.lock(); + fnQueue_.erase(fnQueue_.begin()); + size = fnQueue_.size(); + lk.unlock(); + } } FreeDVReporterDialog::FilterFrequency FreeDVReporterDialog::getFilterForFrequency_(uint64_t freq)