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:
+
+- Update Hamlib to 4.6.3 (macOS/Windows). (PR #930)
+
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)