mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-03-10 22:38:45 -04:00
GLSpectrum: suppress VLAs
This commit is contained in:
parent
13d3ec949d
commit
0cc99dad13
@ -812,7 +812,8 @@ void GLSpectrum::paintGL()
|
||||
m_maxHold[i] = (j * m_powerRange) / 99.0 + m_referenceLevel;
|
||||
}
|
||||
{
|
||||
GLfloat q3[2*m_fftSize];
|
||||
//GLfloat q3[2*m_fftSize];
|
||||
GLfloat *q3 = m_shaderArrays.m_q3FFT;
|
||||
Real bottom = -m_powerRange;
|
||||
|
||||
for(int i = 0; i < m_fftSize; i++) {
|
||||
@ -835,7 +836,8 @@ void GLSpectrum::paintGL()
|
||||
{
|
||||
{
|
||||
Real bottom = -m_powerRange;
|
||||
GLfloat q3[2*m_fftSize];
|
||||
//GLfloat q3[2*m_fftSize];
|
||||
GLfloat *q3 = m_shaderArrays.m_q3FFT;
|
||||
|
||||
for(int i = 0; i < m_fftSize; i++) {
|
||||
Real v = (*m_currentSpectrum)[i] - m_referenceLevel;
|
||||
@ -860,7 +862,8 @@ void GLSpectrum::paintGL()
|
||||
tickList = &m_timeScale.getTickList();
|
||||
|
||||
{
|
||||
GLfloat q3[4*tickList->count()];
|
||||
//GLfloat q3[4*tickList->count()];
|
||||
GLfloat *q3 = m_shaderArrays.m_q3TickTime;
|
||||
int effectiveTicks = 0;
|
||||
|
||||
for (int i= 0; i < tickList->count(); i++)
|
||||
@ -887,7 +890,8 @@ void GLSpectrum::paintGL()
|
||||
tickList = &m_frequencyScale.getTickList();
|
||||
|
||||
{
|
||||
GLfloat q3[4*tickList->count()];
|
||||
//GLfloat q3[4*tickList->count()];
|
||||
GLfloat *q3 = m_shaderArrays.m_q3TickFrequency;
|
||||
int effectiveTicks = 0;
|
||||
|
||||
for (int i= 0; i < tickList->count(); i++)
|
||||
@ -920,7 +924,8 @@ void GLSpectrum::paintGL()
|
||||
tickList = &m_powerScale.getTickList();
|
||||
|
||||
{
|
||||
GLfloat q3[4*tickList->count()];
|
||||
//GLfloat q3[4*tickList->count()];
|
||||
GLfloat *q3 = m_shaderArrays.m_q3TickPower;
|
||||
int effectiveTicks = 0;
|
||||
|
||||
for(int i= 0; i < tickList->count(); i++)
|
||||
@ -947,7 +952,8 @@ void GLSpectrum::paintGL()
|
||||
tickList = &m_frequencyScale.getTickList();
|
||||
|
||||
{
|
||||
GLfloat q3[4*tickList->count()];
|
||||
//GLfloat q3[4*tickList->count()];
|
||||
GLfloat *q3 = m_shaderArrays.m_q3TickFrequency;
|
||||
int effectiveTicks = 0;
|
||||
|
||||
for(int i= 0; i < tickList->count(); i++)
|
||||
@ -1572,6 +1578,8 @@ void GLSpectrum::applyChanges()
|
||||
memset(m_histogram, 0x00, 100 * m_fftSize);
|
||||
m_histogramHoldoff = new quint8[100 * m_fftSize];
|
||||
memset(m_histogramHoldoff, 0x07, 100 * m_fftSize);
|
||||
|
||||
m_shaderArrays.allocFFT(2*m_fftSize);
|
||||
}
|
||||
|
||||
if(fftSizeChanged || windowSizeChanged)
|
||||
@ -1579,6 +1587,10 @@ void GLSpectrum::applyChanges()
|
||||
m_waterfallTextureHeight = waterfallHeight;
|
||||
m_waterfallTexturePos = 0;
|
||||
}
|
||||
|
||||
m_shaderArrays.allocTickTime(4*m_timeScale.getTickList().count());
|
||||
m_shaderArrays.allocTickFrequency(4*m_frequencyScale.getTickList().count());
|
||||
m_shaderArrays.allocTickPower(4*m_powerScale.getTickList().count());
|
||||
}
|
||||
|
||||
void GLSpectrum::mouseMoveEvent(QMouseEvent* event)
|
||||
|
@ -72,6 +72,82 @@ public:
|
||||
void connectTimer(const QTimer& timer);
|
||||
|
||||
private:
|
||||
struct ShaderArrays
|
||||
{
|
||||
GLfloat *m_q3TickTime;
|
||||
GLfloat *m_q3TickFrequency;
|
||||
GLfloat *m_q3TickPower;
|
||||
GLfloat *m_q3FFT;
|
||||
|
||||
uint32_t m_q3TickTimeSize;
|
||||
uint32_t m_q3TickTimeFrequencySize;
|
||||
uint32_t m_q3TickPowerSize;
|
||||
uint32_t m_q3FFTSize;
|
||||
|
||||
ShaderArrays() :
|
||||
m_q3TickTime(0),
|
||||
m_q3TickFrequency(0),
|
||||
m_q3TickPower(0),
|
||||
m_q3FFT(0),
|
||||
m_q3TickTimeSize(0),
|
||||
m_q3TickTimeFrequencySize(0),
|
||||
m_q3TickPowerSize(0),
|
||||
m_q3FFTSize(0)
|
||||
{}
|
||||
|
||||
~ShaderArrays()
|
||||
{
|
||||
if (m_q3TickTime) { delete[] m_q3TickTime; }
|
||||
if (m_q3TickFrequency) { delete[] m_q3TickFrequency; }
|
||||
if (m_q3TickPower) { delete[] m_q3TickPower; }
|
||||
if (m_q3FFT) { delete[] m_q3FFT; }
|
||||
}
|
||||
|
||||
void allocTickTime(uint32_t size)
|
||||
{
|
||||
if (size <= m_q3TickTimeSize) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_q3TickTime) { delete[] m_q3TickTime; }
|
||||
m_q3TickTime = new GLfloat[size];
|
||||
m_q3TickTimeSize = size;
|
||||
}
|
||||
|
||||
void allocTickFrequency(uint32_t size)
|
||||
{
|
||||
if (size <= m_q3TickTimeFrequencySize) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_q3TickFrequency) { delete[] m_q3TickFrequency; }
|
||||
m_q3TickFrequency = new GLfloat[size];
|
||||
m_q3TickTimeFrequencySize = size;
|
||||
}
|
||||
|
||||
void allocTickPower(uint32_t size)
|
||||
{
|
||||
if (size <= m_q3TickPowerSize) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_q3TickPower) { delete[] m_q3TickPower; }
|
||||
m_q3TickPower = new GLfloat[size];
|
||||
m_q3TickPowerSize = size;
|
||||
}
|
||||
|
||||
void allocFFT(uint32_t size)
|
||||
{
|
||||
if (size <= m_q3FFTSize) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_q3FFT) { delete[] m_q3FFT; }
|
||||
m_q3FFT = new GLfloat[size];
|
||||
m_q3FFTSize = size;
|
||||
}
|
||||
};
|
||||
|
||||
struct ChannelMarkerState {
|
||||
ChannelMarker* m_channelMarker;
|
||||
QMatrix4x4 m_glMatrixWaterfall;
|
||||
@ -164,6 +240,7 @@ private:
|
||||
GLShaderTextured m_glShaderHistogram;
|
||||
int m_matrixLoc;
|
||||
int m_colorLoc;
|
||||
ShaderArrays m_shaderArrays;
|
||||
|
||||
static const int m_waterfallBufferHeight = 256;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user