FreeDV Reporter: Force re-sorting on user connect. (#878)

* FreeDV Reporter: Force re-sorting on user connect.

* Try unconditionally resorting on every pass through the timer.

* Bump up RX input FIFO to 30s. Yes, I know this is pretty excessive.

* Remove sortRequired_ since we're not using it anymore.

* Default to sorting by frequency.
pull/882/head
Mooneer Salem 2025-05-13 16:43:08 -07:00 committed by GitHub
parent e2a1bba010
commit 3084177af3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 3 additions and 26 deletions

View File

@ -50,7 +50,7 @@ FreeDVConfiguration::FreeDVConfiguration()
, reporterWindowWidth("/Windows/FreeDVReporter/width", -1)
, reporterWindowHeight("/Windows/FreeDVReporter/height", -1)
, reporterWindowVisible("/Windows/FreeDVReporter/visible", false)
, reporterWindowCurrentSort("/Windows/FreeDVReporter/currentSort", -1)
, reporterWindowCurrentSort("/Windows/FreeDVReporter/currentSort", 5) /* FREQUENCY_COL */
, reporterWindowCurrentSortDirection("/Windows/FreeDVReporter/currentSortDirection", true)
/* Current tab view */

View File

@ -59,7 +59,6 @@ using namespace std::placeholders;
FreeDVReporterDialog::FreeDVReporterDialog(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style)
: wxFrame(parent, id, title, pos, size, style)
, tipWindow_(nullptr)
, sortRequired_(false)
{
if (wxGetApp().customConfigFileName != "")
{
@ -791,12 +790,7 @@ void FreeDVReporterDialog::OnTimer(wxTimerEvent& event)
{
FreeDVReporterDataModel* model = (FreeDVReporterDataModel*)spotsDataModel_.get();
model->updateHighlights();
if (sortRequired_)
{
model->Resort();
sortRequired_ = false;
}
model->Resort();
}
void FreeDVReporterDialog::OnFilterTrackingEnable(wxCommandEvent& event)
@ -1861,7 +1855,6 @@ void FreeDVReporterDialog::FreeDVReporterDataModel::refreshAllRows()
else if (updated && kvp.second->isVisible)
{
ItemChanged(wxDataViewItem(kvp.second));
parent_->sortRequired_ = true;
}
}
}
@ -2108,9 +2101,6 @@ void FreeDVReporterDialog::FreeDVReporterDataModel::onFrequencyChangeFn_(std::st
else if (newVisibility)
{
ItemChanged(dvi);
parent_->sortRequired_ =
parent_->m_listSpots->GetColumn(FREQUENCY_COL)->IsSortKey() ||
parent_->m_listSpots->GetColumn(LAST_UPDATE_DATE_COL)->IsSortKey();
}
}
});
@ -2151,10 +2141,6 @@ void FreeDVReporterDialog::FreeDVReporterDataModel::onTransmitUpdateFn_(std::str
{
wxDataViewItem dvi(iter->second);
ItemChanged(dvi);
parent_->sortRequired_ =
parent_->m_listSpots->GetColumn(STATUS_COL)->IsSortKey() ||
parent_->m_listSpots->GetColumn(TX_MODE_COL)->IsSortKey() ||
parent_->m_listSpots->GetColumn(LAST_UPDATE_DATE_COL)->IsSortKey();
}
}
});
@ -2196,11 +2182,6 @@ void FreeDVReporterDialog::FreeDVReporterDataModel::onReceiveUpdateFn_(std::stri
{
wxDataViewItem dvi(iter->second);
ItemChanged(dvi);
parent_->sortRequired_ =
parent_->m_listSpots->GetColumn(LAST_RX_CALLSIGN_COL)->IsSortKey() ||
parent_->m_listSpots->GetColumn(LAST_RX_MODE_COL)->IsSortKey() ||
parent_->m_listSpots->GetColumn(SNR_COL)->IsSortKey() ||
parent_->m_listSpots->GetColumn(LAST_UPDATE_DATE_COL)->IsSortKey();
}
}
});
@ -2247,9 +2228,6 @@ void FreeDVReporterDialog::FreeDVReporterDataModel::onMessageUpdateFn_(std::stri
{
wxDataViewItem dvi(iter->second);
ItemChanged(dvi);
parent_->sortRequired_ =
parent_->m_listSpots->GetColumn(USER_MESSAGE_COL)->IsSortKey() ||
parent_->m_listSpots->GetColumn(LAST_UPDATE_DATE_COL)->IsSortKey();
}
}
});

View File

@ -289,7 +289,6 @@ class FreeDVReporterDialog : public wxFrame
};
FilterFrequency getFilterForFrequency_(uint64_t freq);
bool sortRequired_;
};
#endif // __FREEDV_REPORTER_DIALOG__

View File

@ -3157,7 +3157,7 @@ void MainFrame::startRxStream()
// FIFO sizes, which isn't recommended for real-time operation), we will
// definitely lose audio.
int m_fifoSize_ms = wxGetApp().appConfiguration.fifoSizeMs;
int soundCard1InFifoSizeSamples = 10 * wxGetApp().appConfiguration.audioConfiguration.soundCard1In.sampleRate;
int soundCard1InFifoSizeSamples = 30 * wxGetApp().appConfiguration.audioConfiguration.soundCard1In.sampleRate;
int soundCard1OutFifoSizeSamples = m_fifoSize_ms*wxGetApp().appConfiguration.audioConfiguration.soundCard1Out.sampleRate / 1000;
if (txInSoundDevice && txOutSoundDevice)