diff options
author | RJ Ryan <rryan@mixxx.org> | 2014-04-04 00:13:00 -0400 |
---|---|---|
committer | RJ Ryan <rryan@mixxx.org> | 2014-04-04 00:13:00 -0400 |
commit | 4b6473dbb5815c5cb61531dee2ed8b28f7831a76 (patch) | |
tree | 421d35d74ad6d83a766578de690602142052872f /src/waveform/renderers/glwaveformrenderersimplesignal.cpp | |
parent | 7fa05bece112caa150084cd24aea63f1a5f0e453 (diff) |
Fix some hotspots that showed up while profiling the waveform renderers.
* When no signal colors are provided, 3% of waveform rendering time was spent
converting HSL to RGB over and over. QColor::redF/greenF/blueF are the devil.
* Don't set the pen on every beat in WaveformRenderBeat -- all Qt performance
articles talk about minimizing calls to setPen.
* Fix some repetition (hoist some values out of loops, try to get better
inlining, etc.).
Diffstat (limited to 'src/waveform/renderers/glwaveformrenderersimplesignal.cpp')
-rw-r--r-- | src/waveform/renderers/glwaveformrenderersimplesignal.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/waveform/renderers/glwaveformrenderersimplesignal.cpp b/src/waveform/renderers/glwaveformrenderersimplesignal.cpp index d60bc01c3f..b4d0e2f048 100644 --- a/src/waveform/renderers/glwaveformrenderersimplesignal.cpp +++ b/src/waveform/renderers/glwaveformrenderersimplesignal.cpp @@ -62,8 +62,6 @@ void GLWaveformRendererSimpleSignal::draw(QPainter* painter, QPaintEvent* /*even glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - const QColor& color = m_pColors->getSignalColor(); - WaveformWidgetFactory* factory = WaveformWidgetFactory::instance(); const double visualGain = factory->getVisualGain(::WaveformWidgetFactory::All); @@ -86,7 +84,8 @@ void GLWaveformRendererSimpleSignal::draw(QPainter* painter, QPaintEvent* /*even //draw reference line glBegin(GL_LINES); { - glColor4f(m_axesColor.redF(),m_axesColor.greenF(),m_axesColor.blueF(),m_axesColor.alphaF()); + glColor4f(m_axesColor_r, m_axesColor_g, + m_axesColor_b, m_axesColor_a); glVertex2f(firstVisualIndex,0); glVertex2f(lastVisualIndex,0); } @@ -108,7 +107,7 @@ void GLWaveformRendererSimpleSignal::draw(QPainter* painter, QPaintEvent* /*even maxAll[0] = (float)data[visualIndex].filtered.all; maxAll[1] = (float)data[visualIndex+1].filtered.all; - glColor4f(color.redF(),color.greenF(),color.blueF(),0.9); + glColor4f(m_signalColor_r, m_signalColor_g, m_signalColor_b, 0.9); glVertex2f(visualIndex,maxAll[0]); glVertex2f(visualIndex,-1.f*maxAll[1]); } @@ -145,7 +144,7 @@ void GLWaveformRendererSimpleSignal::draw(QPainter* painter, QPaintEvent* /*even maxAll[0] = (float)data[visualIndex].filtered.all; maxAll[1] = (float)data[visualIndex+1].filtered.all; - glColor4f(color.redF(),color.greenF(),color.blueF(),0.8); + glColor4f(m_signalColor_r, m_signalColor_g, m_signalColor_b, 0.8); glVertex2f(float(visualIndex),0.f); glVertex2f(float(visualIndex),math_max(maxAll[0],maxAll[1])); } |