Spectrum panel init fixes, more FFT distributor tweaks

This commit is contained in:
Charles J. Cliffe 2015-09-09 17:31:55 -04:00
parent 11121d8a0e
commit 7163cd13f2
5 changed files with 26 additions and 15 deletions

View File

@ -4,8 +4,16 @@
#include <iostream> #include <iostream>
#include <iomanip> #include <iomanip>
#include "ColorTheme.h" #include "ColorTheme.h"
#include "CubicSDRDefs.h"
SpectrumPanel::SpectrumPanel() : floorValue(0), ceilValue(1), showDb(false), fftSize(2048) { SpectrumPanel::SpectrumPanel() {
floorValue = 0;
ceilValue = 1;
showDb = false;
fftSize = DEFAULT_FFT_SIZE;
bandwidth = DEFAULT_DEMOD_BW;
freq = 0;
setFill(GLPANEL_FILL_GRAD_Y); setFill(GLPANEL_FILL_GRAD_Y);
setFillColor(ThemeMgr::mgr.currentTheme->fftBackground * 2.0, ThemeMgr::mgr.currentTheme->fftBackground); setFillColor(ThemeMgr::mgr.currentTheme->fftBackground * 2.0, ThemeMgr::mgr.currentTheme->fftBackground);
@ -233,15 +241,18 @@ void SpectrumPanel::drawPanelContents() {
float dbPanelHeight = (1.0/viewHeight)*14.0; float dbPanelHeight = (1.0/viewHeight)*14.0;
std::stringstream ssLabel; std::stringstream ssLabel("");
ssLabel << std::fixed << std::setprecision(1) << (20.0 * log10(2.0*(getCeilValue())/(double)fftSize)) << "dB"; if (getCeilValue() != getFloorValue() && fftSize) {
ssLabel << std::fixed << std::setprecision(1) << (20.0 * log10(2.0*(getCeilValue())/(double)fftSize)) << "dB";
}
dbPanelCeil.setText(ssLabel.str(), GLFont::GLFONT_ALIGN_RIGHT); dbPanelCeil.setText(ssLabel.str(), GLFont::GLFONT_ALIGN_RIGHT);
dbPanelCeil.setSize(dbPanelWidth, dbPanelHeight); dbPanelCeil.setSize(dbPanelWidth, dbPanelHeight);
dbPanelCeil.setPosition(-1.0 + dbPanelWidth, 1.0 - dbPanelHeight); dbPanelCeil.setPosition(-1.0 + dbPanelWidth, 1.0 - dbPanelHeight);
ssLabel.str(""); ssLabel.str("");
ssLabel << (20.0 * log10(2.0*(getFloorValue())/(double)fftSize)) << "dB"; if (getCeilValue() != getFloorValue() && fftSize) {
ssLabel << (20.0 * log10(2.0*(getFloorValue())/(double)fftSize)) << "dB";
}
dbPanelFloor.setText(ssLabel.str(), GLFont::GLFONT_ALIGN_RIGHT); dbPanelFloor.setText(ssLabel.str(), GLFont::GLFONT_ALIGN_RIGHT);
dbPanelFloor.setSize(dbPanelWidth, dbPanelHeight); dbPanelFloor.setSize(dbPanelWidth, dbPanelHeight);

View File

@ -16,7 +16,7 @@ int FFTDataDistributor::getLinesPerSecond() {
} }
void FFTDataDistributor::process() { void FFTDataDistributor::process() {
while (!input->empty()) { if (!input->empty()) {
if (!isAnyOutputEmpty()) { if (!isAnyOutputEmpty()) {
return; return;
} }
@ -33,7 +33,7 @@ void FFTDataDistributor::process() {
} }
inp->decRefCount(); inp->decRefCount();
} else { } else {
continue; return;
} }
// number of seconds contained in input // number of seconds contained in input

View File

@ -102,9 +102,9 @@ void ScopeCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) {
wxPaintDC dc(this); wxPaintDC dc(this);
const wxSize ClientSize = GetClientSize(); const wxSize ClientSize = GetClientSize();
#ifdef __APPLE__ //#ifdef __APPLE__
glFinish(); // glFinish();
#endif //#endif
while (!inputData.empty()) { while (!inputData.empty()) {
ScopeRenderData *avData; ScopeRenderData *avData;

View File

@ -45,9 +45,9 @@ SpectrumCanvas::~SpectrumCanvas() {
void SpectrumCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) { void SpectrumCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) {
wxPaintDC dc(this); wxPaintDC dc(this);
const wxSize ClientSize = GetClientSize(); const wxSize ClientSize = GetClientSize();
#ifdef __APPLE__ //#ifdef __APPLE__
glFinish(); // glFinish();
#endif //#endif
if (!visualDataQueue.empty()) { if (!visualDataQueue.empty()) {

View File

@ -75,9 +75,9 @@ void WaterfallCanvas::processInputQueue() {
glContext->SetCurrent(*this); glContext->SetCurrent(*this);
bool processed = false; bool processed = false;
while (!visualDataQueue.empty()) { int numVis = visualDataQueue.size();
for (int i = 0; i < numVis; i++) {
SpectrumVisualData *vData; SpectrumVisualData *vData;
visualDataQueue.pop(vData); visualDataQueue.pop(vData);
if (vData) { if (vData) {