=== modified file 'mixxx/src/waveform/renderers/glslwaveformrenderersignal.cpp' --- mixxx/src/waveform/renderers/glslwaveformrenderersignal.cpp 2012-05-28 23:54:55 +0000 +++ mixxx/src/waveform/renderers/glslwaveformrenderersignal.cpp 2012-07-28 13:15:11 +0000 @@ -55,43 +55,56 @@ m_shardersValid = false; - if( m_signalMaxShaderProgram->isLinked()) + if (m_signalMaxShaderProgram->isLinked()) { m_signalMaxShaderProgram->release(); + } m_signalMaxShaderProgram->removeAllShaders(); - m_signalMaxShaderProgram->addShaderFromSourceFile( QGLShader::Vertex, "./src/waveform/shaders/passthrough.vert"); - m_signalMaxShaderProgram->addShaderFromSourceFile( QGLShader::Fragment, "./src/waveform/shaders/computemaxsignal.frag"); - - if( !m_signalMaxShaderProgram->link()) - { - qDebug() << "GLWaveformRendererSignalShader::loadShaders - " << m_signalMaxShaderProgram->log(); - return false; - } - - if( !m_signalMaxShaderProgram->bind()) - { + if (!m_signalMaxShaderProgram->addShaderFromSourceFile( QGLShader::Vertex, + "./src/waveform/shaders/passthrough.vert")) { + qDebug() << "GLWaveformRendererSignalShader::loadShaders - " << m_signalMaxShaderProgram->log(); + return false; + } + if (!m_signalMaxShaderProgram->addShaderFromSourceFile( QGLShader::Fragment, + "./src/waveform/shaders/computemaxsignal.frag")) { + qDebug() << "GLWaveformRendererSignalShader::loadShaders - " << m_signalMaxShaderProgram->log(); + return false; + } + + if (!m_signalMaxShaderProgram->link()) { + qDebug() << "GLWaveformRendererSignalShader::loadShaders - " << m_signalMaxShaderProgram->log(); + return false; + } + + if (!m_signalMaxShaderProgram->bind()) { qDebug() << "GLWaveformRendererSignalShader::loadShaders - shadrers binding failed"; return false; } - - if( m_frameShaderProgram->isLinked()) + if (m_frameShaderProgram->isLinked()) { m_frameShaderProgram->release(); + } m_frameShaderProgram->removeAllShaders(); - m_frameShaderProgram->addShaderFromSourceFile( QGLShader::Vertex, "./src/waveform/shaders/passthrough.vert"); - m_frameShaderProgram->addShaderFromSourceFile( QGLShader::Fragment, "./src/waveform/shaders/filteredsignal.frag"); + if (!m_frameShaderProgram->addShaderFromSourceFile( QGLShader::Vertex, + "./src/waveform/shaders/passthrough.vert")) { + qDebug() << "GLWaveformRendererSignalShader::loadShaders - " << m_signalMaxShaderProgram->log(); + return false; + } + if (!m_frameShaderProgram->addShaderFromSourceFile( QGLShader::Fragment, + "./src/waveform/shaders/filteredsignal.frag")) { + qDebug() << "GLWaveformRendererSignalShader::loadShaders - " << m_signalMaxShaderProgram->log(); + return false; + } - if( !m_frameShaderProgram->link()) - { + if (!m_frameShaderProgram->link()) { qDebug() << "GLWaveformRendererSignalShader::loadShaders - " << m_frameShaderProgram->log(); return false; } - if( !m_frameShaderProgram->bind()) - { + if (!m_frameShaderProgram->bind()) { qDebug() << "GLWaveformRendererSignalShader::loadShaders - shadrers binding failed"; return false; } @@ -218,7 +231,7 @@ //qDebug() << bufferWidth; } -void GLSLWaveformRendererSignal::onInit(){ +bool GLSLWaveformRendererSignal::onInit(){ m_loadedWaveform = 0; if(!m_signalMaxShaderProgram) @@ -227,9 +240,15 @@ if(!m_frameShaderProgram) m_frameShaderProgram = new QGLShaderProgram(); - loadShaders(); + if (!loadShaders()) { + return false; + } createGeometry(); - loadTexture(); + if (!loadTexture()) { + return false; + } + + return true; } void GLSLWaveformRendererSignal::onSetup(const QDomNode& /*node*/) { === modified file 'mixxx/src/waveform/renderers/glslwaveformrenderersignal.h' --- mixxx/src/waveform/renderers/glslwaveformrenderersignal.h 2012-05-28 23:54:55 +0000 +++ mixxx/src/waveform/renderers/glslwaveformrenderersignal.h 2012-07-28 13:15:20 +0000 @@ -12,7 +12,7 @@ explicit GLSLWaveformRendererSignal(WaveformWidgetRenderer* waveformWidgetRenderer); virtual ~GLSLWaveformRendererSignal(); - virtual void onInit(); + virtual bool onInit(); virtual void onSetup(const QDomNode& node); virtual void draw(QPainter* painter, QPaintEvent* event); === modified file 'mixxx/src/waveform/renderers/glwaveformrendererfilteredsignal.cpp' --- mixxx/src/waveform/renderers/glwaveformrendererfilteredsignal.cpp 2012-06-01 02:14:10 +0000 +++ mixxx/src/waveform/renderers/glwaveformrendererfilteredsignal.cpp 2012-07-28 13:15:33 +0000 @@ -22,10 +22,6 @@ } -void GLWaveformRendererFilteredSignal::onInit() { - -} - void GLWaveformRendererFilteredSignal::onSetup(const QDomNode& /*node*/) { } === modified file 'mixxx/src/waveform/renderers/glwaveformrendererfilteredsignal.h' --- mixxx/src/waveform/renderers/glwaveformrendererfilteredsignal.h 2012-05-08 21:33:07 +0000 +++ mixxx/src/waveform/renderers/glwaveformrendererfilteredsignal.h 2012-07-25 08:16:38 +0000 @@ -10,7 +10,6 @@ explicit GLWaveformRendererFilteredSignal( WaveformWidgetRenderer* waveformWidgetRenderer); virtual ~GLWaveformRendererFilteredSignal(); - virtual void onInit(); virtual void onSetup(const QDomNode &node); virtual void draw(QPainter* painter, QPaintEvent* event); }; === modified file 'mixxx/src/waveform/renderers/glwaveformrenderersimplesignal.cpp' --- mixxx/src/waveform/renderers/glwaveformrenderersimplesignal.cpp 2012-06-01 02:14:10 +0000 +++ mixxx/src/waveform/renderers/glwaveformrenderersimplesignal.cpp 2012-07-25 08:16:38 +0000 @@ -16,10 +16,8 @@ GLWaveformRendererSimpleSignal::~GLWaveformRendererSimpleSignal(){ } -void GLWaveformRendererSimpleSignal::onInit() { -} - void GLWaveformRendererSimpleSignal::onSetup(const QDomNode &node){ + Q_UNUSED(node); } inline void setPoint(QPointF& point, qreal x, qreal y) { === modified file 'mixxx/src/waveform/renderers/glwaveformrenderersimplesignal.h' --- mixxx/src/waveform/renderers/glwaveformrenderersimplesignal.h 2012-05-08 21:33:07 +0000 +++ mixxx/src/waveform/renderers/glwaveformrenderersimplesignal.h 2012-07-25 08:16:38 +0000 @@ -10,7 +10,6 @@ explicit GLWaveformRendererSimpleSignal( WaveformWidgetRenderer* waveformWidgetRenderer); virtual ~GLWaveformRendererSimpleSignal(); - virtual void onInit(); virtual void onSetup(const QDomNode &node); virtual void draw(QPainter* painter, QPaintEvent* event); }; === modified file 'mixxx/src/waveform/renderers/qtwaveformrendererfilteredsignal.cpp' --- mixxx/src/waveform/renderers/qtwaveformrendererfilteredsignal.cpp 2012-06-01 02:14:10 +0000 +++ mixxx/src/waveform/renderers/qtwaveformrendererfilteredsignal.cpp 2012-07-25 08:16:38 +0000 @@ -20,10 +20,6 @@ } -void QtWaveformRendererFilteredSignal::onInit() { - -} - void QtWaveformRendererFilteredSignal::onSetup(const QDomNode& /*node*/) { QColor low = m_colors.getLowColor(); QColor mid = m_colors.getMidColor(); === modified file 'mixxx/src/waveform/renderers/qtwaveformrendererfilteredsignal.h' --- mixxx/src/waveform/renderers/qtwaveformrendererfilteredsignal.h 2012-05-08 11:55:13 +0000 +++ mixxx/src/waveform/renderers/qtwaveformrendererfilteredsignal.h 2012-07-25 08:16:38 +0000 @@ -14,7 +14,6 @@ explicit QtWaveformRendererFilteredSignal( WaveformWidgetRenderer* waveformWidgetRenderer); virtual ~QtWaveformRendererFilteredSignal(); - virtual void onInit(); virtual void onSetup(const QDomNode &node); virtual void draw(QPainter* painter, QPaintEvent* event); === modified file 'mixxx/src/waveform/renderers/qtwaveformrenderersimplesignal.cpp' --- mixxx/src/waveform/renderers/qtwaveformrenderersimplesignal.cpp 2012-06-01 02:14:10 +0000 +++ mixxx/src/waveform/renderers/qtwaveformrenderersimplesignal.cpp 2012-07-25 08:16:38 +0000 @@ -17,9 +17,6 @@ QtWaveformRendererSimpleSignal::~QtWaveformRendererSimpleSignal(){ } -void QtWaveformRendererSimpleSignal::onInit(){ -} - void QtWaveformRendererSimpleSignal::onSetup(const QDomNode &node){ QColor signalColor = m_colors.getSignalColor(); signalColor.setAlphaF(0.8); === modified file 'mixxx/src/waveform/renderers/qtwaveformrenderersimplesignal.h' --- mixxx/src/waveform/renderers/qtwaveformrenderersimplesignal.h 2012-05-13 22:26:25 +0000 +++ mixxx/src/waveform/renderers/qtwaveformrenderersimplesignal.h 2012-07-25 08:16:38 +0000 @@ -15,7 +15,6 @@ explicit QtWaveformRendererSimpleSignal( WaveformWidgetRenderer* waveformWidgetRenderer); virtual ~QtWaveformRendererSimpleSignal(); - virtual void onInit(); virtual void onSetup(const QDomNode &node); virtual void draw(QPainter* painter, QPaintEvent* event); === modified file 'mixxx/src/waveform/renderers/waveformrenderbackground.cpp' --- mixxx/src/waveform/renderers/waveformrenderbackground.cpp 2012-04-29 18:45:39 +0000 +++ mixxx/src/waveform/renderers/waveformrenderbackground.cpp 2012-07-28 13:17:20 +0000 @@ -13,9 +13,6 @@ WaveformRenderBackground::~WaveformRenderBackground() { } -void WaveformRenderBackground::init() { -} - void WaveformRenderBackground::setup(const QDomNode& node) { m_backgroundColor.setNamedColor( WWidget::selectNodeQString(node, "BgColor")); @@ -40,12 +37,17 @@ if (!backgroundPixmap.isNull()){ if (backgroundPixmap.width() == m_waveformRenderer->getWidth() && - backgroundPixmap.height() == m_waveformRenderer->getHeight()){ + backgroundPixmap.height() == m_waveformRenderer->getHeight()) { m_backgroundPixmap = backgroundPixmap; } else { qWarning() << "WaveformRenderBackground::generatePixmap - file(" << WWidget::getPath(m_backgroundPixmapPath) - << ") do not fit the waveform widget size ..."; + << ")" << backgroundPixmap.width() + << "x" << backgroundPixmap.height() + << "do not fit the waveform widget size" + << m_waveformRenderer->getWidth() + << "x" << m_waveformRenderer->getHeight(); + m_backgroundPixmap = QPixmap(m_waveformRenderer->getWidth(), m_waveformRenderer->getHeight()); QPainter painter(&m_backgroundPixmap); === modified file 'mixxx/src/waveform/renderers/waveformrenderbackground.h' --- mixxx/src/waveform/renderers/waveformrenderbackground.h 2011-12-17 02:03:28 +0000 +++ mixxx/src/waveform/renderers/waveformrenderbackground.h 2012-07-28 13:17:32 +0000 @@ -17,7 +17,6 @@ explicit WaveformRenderBackground(WaveformWidgetRenderer* waveformWidgetRenderer); virtual ~WaveformRenderBackground(); - virtual void init(); virtual void setup(const QDomNode& node); virtual void draw(QPainter* painter, QPaintEvent* event); === modified file 'mixxx/src/waveform/renderers/waveformrenderbeat.cpp' --- mixxx/src/waveform/renderers/waveformrenderbeat.cpp 2012-05-07 05:30:14 +0000 +++ mixxx/src/waveform/renderers/waveformrenderbeat.cpp 2012-07-28 13:17:57 +0000 @@ -22,9 +22,10 @@ delete m_beatActive; } -void WaveformRenderBeat::init() { +bool WaveformRenderBeat::init() { m_beatActive = new ControlObjectThreadMain( ControlObject::getControl(ConfigKey(m_waveformRenderer->getGroup(),"beat_active"))); + return true; } void WaveformRenderBeat::setup(const QDomNode& node) { === modified file 'mixxx/src/waveform/renderers/waveformrenderbeat.h' --- mixxx/src/waveform/renderers/waveformrenderbeat.h 2012-05-07 05:30:14 +0000 +++ mixxx/src/waveform/renderers/waveformrenderbeat.h 2012-07-25 08:16:38 +0000 @@ -13,7 +13,7 @@ explicit WaveformRenderBeat(WaveformWidgetRenderer* waveformWidgetRenderer); virtual ~WaveformRenderBeat(); - virtual void init(); + virtual bool init(); virtual void setup(const QDomNode& node); virtual void draw(QPainter* painter, QPaintEvent* event); === modified file 'mixxx/src/waveform/renderers/waveformrendererabstract.h' --- mixxx/src/waveform/renderers/waveformrendererabstract.h 2012-02-10 22:13:44 +0000 +++ mixxx/src/waveform/renderers/waveformrendererabstract.h 2012-07-28 13:18:12 +0000 @@ -12,7 +12,7 @@ explicit WaveformRendererAbstract(WaveformWidgetRenderer* waveformWidgetRenderer); virtual ~WaveformRendererAbstract(); - virtual void init() = 0; + virtual bool init() {return true; } virtual void setup(const QDomNode& node) = 0; virtual void draw(QPainter* painter, QPaintEvent* event) = 0; === modified file 'mixxx/src/waveform/renderers/waveformrendererendoftrack.cpp' --- mixxx/src/waveform/renderers/waveformrendererendoftrack.cpp 2012-05-12 02:14:11 +0000 +++ mixxx/src/waveform/renderers/waveformrendererendoftrack.cpp 2012-07-25 08:16:38 +0000 @@ -33,7 +33,7 @@ delete m_loopControl; } -void WaveformRendererEndOfTrack::init() { +bool WaveformRendererEndOfTrack::init() { m_timer.restart(); m_endOfTrackControl = new ControlObjectThreadMain( @@ -47,6 +47,7 @@ ControlObject::getControl( ConfigKey(m_waveformRenderer->getGroup(), "play"))); m_loopControl = new ControlObjectThreadMain( ControlObject::getControl( ConfigKey(m_waveformRenderer->getGroup(), "loop_enabled"))); + return true; } void WaveformRendererEndOfTrack::setup(const QDomNode& node) { === modified file 'mixxx/src/waveform/renderers/waveformrendererendoftrack.h' --- mixxx/src/waveform/renderers/waveformrendererendoftrack.h 2012-04-16 01:31:13 +0000 +++ mixxx/src/waveform/renderers/waveformrendererendoftrack.h 2012-07-25 08:16:38 +0000 @@ -18,7 +18,7 @@ WaveformWidgetRenderer* waveformWidgetRenderer); virtual ~WaveformRendererEndOfTrack(); - virtual void init(); + virtual bool init(); virtual void setup(const QDomNode& node); virtual void onResize(); virtual void draw(QPainter* painter, QPaintEvent* event); === modified file 'mixxx/src/waveform/renderers/waveformrendererfilteredsignal.cpp' --- mixxx/src/waveform/renderers/waveformrendererfilteredsignal.cpp 2012-07-22 09:31:52 +0000 +++ mixxx/src/waveform/renderers/waveformrendererfilteredsignal.cpp 2012-07-25 08:16:38 +0000 @@ -20,9 +20,6 @@ WaveformRendererFilteredSignal::~WaveformRendererFilteredSignal() { } -void WaveformRendererFilteredSignal::onInit() { -} - void WaveformRendererFilteredSignal::onResize() { m_lowLines.resize(m_waveformRenderer->getWidth()); m_midLines.resize(m_waveformRenderer->getWidth()); === modified file 'mixxx/src/waveform/renderers/waveformrendererfilteredsignal.h' --- mixxx/src/waveform/renderers/waveformrendererfilteredsignal.h 2012-05-08 21:38:52 +0000 +++ mixxx/src/waveform/renderers/waveformrendererfilteredsignal.h 2012-07-25 08:16:38 +0000 @@ -14,7 +14,6 @@ WaveformWidgetRenderer* waveformWidget); virtual ~WaveformRendererFilteredSignal(); - virtual void onInit(); virtual void onSetup(const QDomNode& node); virtual void draw(QPainter* painter, QPaintEvent* event); === modified file 'mixxx/src/waveform/renderers/waveformrendererpreroll.cpp' --- mixxx/src/waveform/renderers/waveformrendererpreroll.cpp 2012-03-31 04:36:45 +0000 +++ mixxx/src/waveform/renderers/waveformrendererpreroll.cpp 2012-07-25 08:16:38 +0000 @@ -17,9 +17,6 @@ WaveformRendererPreroll::~WaveformRendererPreroll() { } -void WaveformRendererPreroll::init() { -} - void WaveformRendererPreroll::setup(const QDomNode& node) { m_color.setNamedColor( WWidget::selectNodeQString(node, "SignalColor")); @@ -27,6 +24,7 @@ } void WaveformRendererPreroll::draw(QPainter* painter, QPaintEvent* event) { + Q_UNUSED(event); const TrackPointer track = m_waveformRenderer->getTrackInfo(); if (!track) { return; === modified file 'mixxx/src/waveform/renderers/waveformrendererpreroll.h' --- mixxx/src/waveform/renderers/waveformrendererpreroll.h 2012-02-26 20:46:51 +0000 +++ mixxx/src/waveform/renderers/waveformrendererpreroll.h 2012-07-25 08:16:38 +0000 @@ -11,7 +11,6 @@ explicit WaveformRendererPreroll(WaveformWidgetRenderer* waveformWidgetRenderer); virtual ~WaveformRendererPreroll(); - virtual void init(); virtual void setup(const QDomNode& node); virtual void draw(QPainter* painter, QPaintEvent* event); === modified file 'mixxx/src/waveform/renderers/waveformrenderersignalbase.cpp' --- mixxx/src/waveform/renderers/waveformrenderersignalbase.cpp 2012-05-13 22:26:25 +0000 +++ mixxx/src/waveform/renderers/waveformrenderersignalbase.cpp 2012-07-25 08:16:38 +0000 @@ -41,7 +41,7 @@ delete m_highKillControlObject; } -void WaveformRendererSignalBase::init() { +bool WaveformRendererSignalBase::init() { deleteControls(); //create controls @@ -58,7 +58,7 @@ m_highKillControlObject = new ControlObjectThreadMain( ControlObject::getControl(ConfigKey(m_waveformRenderer->getGroup(),"filterHighKill"))); - onInit(); + return onInit(); } void WaveformRendererSignalBase::setup(const QDomNode &node) { === modified file 'mixxx/src/waveform/renderers/waveformrenderersignalbase.h' --- mixxx/src/waveform/renderers/waveformrenderersignalbase.h 2012-05-13 22:26:25 +0000 +++ mixxx/src/waveform/renderers/waveformrenderersignalbase.h 2012-07-25 08:16:38 +0000 @@ -12,10 +12,10 @@ explicit WaveformRendererSignalBase( WaveformWidgetRenderer* waveformWidgetRenderer); virtual ~WaveformRendererSignalBase(); - virtual void init(); + virtual bool init(); virtual void setup(const QDomNode &node); - virtual void onInit() = 0; + virtual bool onInit() {return true;} virtual void onSetup(const QDomNode &node) = 0; protected: === modified file 'mixxx/src/waveform/renderers/waveformrendermark.cpp' --- mixxx/src/waveform/renderers/waveformrendermark.cpp 2012-05-24 13:37:43 +0000 +++ mixxx/src/waveform/renderers/waveformrendermark.cpp 2012-07-25 08:16:38 +0000 @@ -17,9 +17,6 @@ WaveformRendererAbstract(waveformWidgetRenderer) { } -void WaveformRenderMark::init() { -} - void WaveformRenderMark::setup( const QDomNode& node) { m_marks.setup(m_waveformRenderer->getGroup(),node); } @@ -37,7 +34,7 @@ painter->setWorldMatrixEnabled(false); - for( unsigned int i = 0; i < m_marks.size(); i++) { + for( int i = 0; i < m_marks.size(); i++) { WaveformMark& mark = m_marks[i]; if( !mark.m_pointControl) === modified file 'mixxx/src/waveform/renderers/waveformrendermark.h' --- mixxx/src/waveform/renderers/waveformrendermark.h 2012-05-24 00:58:11 +0000 +++ mixxx/src/waveform/renderers/waveformrendermark.h 2012-07-25 08:16:38 +0000 @@ -15,7 +15,6 @@ public: explicit WaveformRenderMark(WaveformWidgetRenderer* waveformWidgetRenderer); - virtual void init(); virtual void setup(const QDomNode& node); virtual void draw(QPainter* painter, QPaintEvent* event); === modified file 'mixxx/src/waveform/renderers/waveformrendermarkrange.cpp' --- mixxx/src/waveform/renderers/waveformrendermarkrange.cpp 2012-04-10 12:49:54 +0000 +++ mixxx/src/waveform/renderers/waveformrendermarkrange.cpp 2012-07-25 08:16:38 +0000 @@ -23,9 +23,6 @@ WaveformRenderMarkRange::~WaveformRenderMarkRange() { } -void WaveformRenderMarkRange::init() { -} - void WaveformRenderMarkRange::setup(const QDomNode &node) { m_markRanges.clear(); m_markRanges.reserve(1); @@ -48,7 +45,7 @@ if (isDirty()) generatePixmaps(); - for (int i = 0; i < m_markRanges.size(); i++) { + for (unsigned int i = 0; i < m_markRanges.size(); i++) { WaveformMarkRange& markRange = m_markRanges[i]; if (!markRange.isValid()) @@ -87,7 +84,8 @@ } void WaveformRenderMarkRange::generatePixmaps() { - for (int i = 0; i < m_markRanges.size(); i++) + for (unsigned int i = 0; i < m_markRanges.size(); i++) { m_markRanges[i].generatePixmap(m_waveformRenderer->getWidth(), m_waveformRenderer->getHeight()); + } setDirty(false); } === modified file 'mixxx/src/waveform/renderers/waveformrendermarkrange.h' --- mixxx/src/waveform/renderers/waveformrendermarkrange.h 2012-04-10 12:49:54 +0000 +++ mixxx/src/waveform/renderers/waveformrendermarkrange.h 2012-07-25 08:16:38 +0000 @@ -25,7 +25,6 @@ explicit WaveformRenderMarkRange(WaveformWidgetRenderer* waveformWidgetRenderer); virtual ~WaveformRenderMarkRange(); - virtual void init(); virtual void setup(const QDomNode& node); virtual void draw(QPainter* painter, QPaintEvent* event); === modified file 'mixxx/src/waveform/renderers/waveformwidgetrenderer.cpp' --- mixxx/src/waveform/renderers/waveformwidgetrenderer.cpp 2012-06-02 17:15:00 +0000 +++ mixxx/src/waveform/renderers/waveformwidgetrenderer.cpp 2012-07-25 08:16:38 +0000 @@ -86,7 +86,7 @@ #endif } -void WaveformWidgetRenderer::init() { +bool WaveformWidgetRenderer::init() { //qDebug() << "WaveformWidgetRenderer::init"; @@ -103,8 +103,12 @@ m_trackSamplesControlObject = new ControlObjectThreadMain( ControlObject::getControl( ConfigKey(m_group,"track_samples"))); - for( int i = 0; i < m_rendererStack.size(); ++i) - m_rendererStack[i]->init(); + for (int i = 0; i < m_rendererStack.size(); ++i) { + if (!m_rendererStack[i]->init()) { + return false; + } + } + return true; } void WaveformWidgetRenderer::onPreRender() { === modified file 'mixxx/src/waveform/renderers/waveformwidgetrenderer.h' --- mixxx/src/waveform/renderers/waveformwidgetrenderer.h 2012-05-13 22:26:25 +0000 +++ mixxx/src/waveform/renderers/waveformwidgetrenderer.h 2012-07-25 08:16:38 +0000 @@ -24,8 +24,8 @@ explicit WaveformWidgetRenderer(const char* group); virtual ~WaveformWidgetRenderer(); - void init(); - virtual void onInit() {} + bool init(); + virtual bool onInit() {return true;} void setup(const QDomNode& node); void onPreRender(); === modified file 'mixxx/src/waveform/waveformwidgetfactory.cpp' --- mixxx/src/waveform/waveformwidgetfactory.cpp 2012-07-22 09:31:52 +0000 +++ mixxx/src/waveform/waveformwidgetfactory.cpp 2012-07-28 13:26:50 +0000 @@ -40,18 +40,17 @@ /////////////////////////////////////////// WaveformWidgetFactory::WaveformWidgetFactory() : + m_type(WaveformWidgetType::Count_WaveformwidgetType), m_config(0), - m_time(new QTime()), m_skipRender(false), m_defaultZoom(3), m_zoomSync(false), m_overviewNormalized(false), - //setup the opengl default format m_openGLAvailable(false), m_openGLShaderAvailable(false), - m_actualFrameRate(0), + m_time(new QTime()), m_lastFrameTime(0), - m_type(WaveformWidgetType::Count_WaveformwidgetType) { + m_actualFrameRate(0) { m_visualGain[All] = 1.5; m_visualGain[Low] = 1.0; @@ -105,15 +104,13 @@ m_openGLVersion = QString::number(majorVersion) + "." + QString::number(minorVersion); } - // TODO(xxx) unusual code + + m_openGLAvailable = true; + + QGLWidget* glWidget = new QGLWidget(); // create paint device // QGLShaderProgram::hasOpenGLShaderPrograms(); valgind error - m_openGLAvailable = true; - { - QGLWidget glWidget; - glWidget.makeCurrent(); - m_openGLShaderAvailable = QGLShaderProgram::hasOpenGLShaderPrograms(); - glWidget.doneCurrent(); - } + m_openGLShaderAvailable = QGLShaderProgram::hasOpenGLShaderPrograms(glWidget->context()); + delete glWidget; } evaluateWidgets(); @@ -222,7 +219,6 @@ //Cast to widget done just after creation because it can't be perform in constructor (pure virtual) WaveformWidgetAbstract* waveformWidget = createWaveformWidget(m_type, viewer); - waveformWidget->castToQWidget(); viewer->setWaveformWidget(waveformWidget); viewer->setup(node); @@ -304,8 +300,6 @@ WWaveformViewer* viewer = holder.m_waveformViewer; WaveformWidgetAbstract* widget = createWaveformWidget(m_type, holder.m_waveformViewer); holder.m_waveformWidget = widget; - widget->castToQWidget(); - //widget->hold(); viewer->setWaveformWidget(widget); viewer->setup(holder.m_visualNodeCache); viewer->setZoom(previousZoom); @@ -395,10 +389,11 @@ // update. emit(waveformUpdateTick()); - m_lastFrameTime = m_time->elapsed(); - m_time->restart(); + m_lastFrameTime = m_time->restart(); - m_actualFrameRate = 1000.0/(double)(m_lastFrameTime); + if (m_lastFrameTime && m_lastFrameTime <= 1000) { + m_actualFrameRate = 1000.0/(double)(m_lastFrameTime); + } } WaveformWidgetType::Type WaveformWidgetFactory::autoChooseWidgetType() const { @@ -418,60 +413,111 @@ void WaveformWidgetFactory::evaluateWidgets() { m_waveformWidgetHandles.clear(); for (int type = 0; type < WaveformWidgetType::Count_WaveformwidgetType; type++) { - WaveformWidgetAbstract* widget = 0; + QString widgetName; + bool useOpenGl; + bool useOpenGLShaders; + switch(type) { - case WaveformWidgetType::EmptyWaveform : widget = new EmptyWaveformWidget(); break; - case WaveformWidgetType::SoftwareSimpleWaveform : break; //TODO: (vrince) - case WaveformWidgetType::SoftwareWaveform : widget = new SoftwareWaveformWidget(); break; - case WaveformWidgetType::QtSimpleWaveform : widget = new QtSimpleWaveformWidget(); break; - case WaveformWidgetType::QtWaveform : widget = new QtWaveformWidget(); break; - case WaveformWidgetType::GLSimpleWaveform : widget = new GLSimpleWaveformWidget(); break; - case WaveformWidgetType::GLWaveform : widget = new GLWaveformWidget(); break; - case WaveformWidgetType::GLSLWaveform : widget = new GLSLWaveformWidget(); break; - } - - if (widget) { - QString widgetName = widget->getWaveformWidgetName(); - if (widget->useOpenGLShaders()) { - widgetName += " " + tr("(GLSL)"); - } else if (widget->useOpenGl()) { - widgetName += " " + tr("(GL)"); - } - - // add new handle for each available widget type - WaveformWidgetAbstractHandle handle; - handle.m_displayString = widgetName; - handle.m_type = (WaveformWidgetType::Type)type; - - // NOTE: For the moment non active widget are not added to available handle - // but it could be useful to have them anyway but not selectable in the combo box - if ((widget->useOpenGl() && !isOpenGLAvailable()) || - (widget->useOpenGLShaders() && !isOpenGlShaderAvailable())) { - handle.m_active = false; - continue; - } - m_waveformWidgetHandles.push_back(handle); - } - delete widget; + case WaveformWidgetType::EmptyWaveform: + widgetName = EmptyWaveformWidget::getWaveformWidgetName(); + useOpenGl = EmptyWaveformWidget::useOpenGl(); + useOpenGLShaders = EmptyWaveformWidget::useOpenGLShaders(); + break; + case WaveformWidgetType::SoftwareSimpleWaveform: + continue; // //TODO(vrince): + case WaveformWidgetType::SoftwareWaveform: + widgetName = SoftwareWaveformWidget::getWaveformWidgetName(); + useOpenGl = SoftwareWaveformWidget::useOpenGl(); + useOpenGLShaders = SoftwareWaveformWidget::useOpenGLShaders(); + break; + case WaveformWidgetType::QtSimpleWaveform: + widgetName = QtSimpleWaveformWidget::getWaveformWidgetName(); + useOpenGl = QtSimpleWaveformWidget::useOpenGl(); + useOpenGLShaders = QtSimpleWaveformWidget::useOpenGLShaders(); + break; + case WaveformWidgetType::QtWaveform: + widgetName = QtWaveformWidget::getWaveformWidgetName(); + useOpenGl = QtWaveformWidget::useOpenGl(); + useOpenGLShaders = QtWaveformWidget::useOpenGLShaders(); + break; + case WaveformWidgetType::GLSimpleWaveform: + widgetName = GLSimpleWaveformWidget::getWaveformWidgetName(); + useOpenGl = GLSimpleWaveformWidget::useOpenGl(); + useOpenGLShaders = GLSimpleWaveformWidget::useOpenGLShaders(); + break; + case WaveformWidgetType::GLWaveform: + widgetName = GLWaveformWidget::getWaveformWidgetName(); + useOpenGl = GLWaveformWidget::useOpenGl(); + useOpenGLShaders = GLWaveformWidget::useOpenGLShaders(); + break; + case WaveformWidgetType::GLSLWaveform: + widgetName = GLSLWaveformWidget::getWaveformWidgetName(); + useOpenGl = GLSLWaveformWidget::useOpenGl(); + useOpenGLShaders = GLSLWaveformWidget::useOpenGLShaders(); + break; + } + + if (useOpenGLShaders) { + widgetName += " " + tr("(GLSL)"); + } else if (useOpenGl) { + widgetName += " " + tr("(GL)"); + } + + // add new handle for each available widget type + WaveformWidgetAbstractHandle handle; + handle.m_displayString = widgetName; + handle.m_type = (WaveformWidgetType::Type)type; + + // NOTE: For the moment non active widget are not added to available handle + // but it could be useful to have them anyway but not selectable in the combo box + if ((useOpenGl && !isOpenGLAvailable()) || + (useOpenGLShaders && !isOpenGlShaderAvailable())) { + handle.m_active = false; + continue; + } + m_waveformWidgetHandles.push_back(handle); } } -WaveformWidgetAbstract* WaveformWidgetFactory::createWaveformWidget(WaveformWidgetType::Type type, - WWaveformViewer* viewer) { +WaveformWidgetAbstract* WaveformWidgetFactory::createWaveformWidget( + WaveformWidgetType::Type type, WWaveformViewer* viewer) { + WaveformWidgetAbstract* widget = NULL; if (viewer) { switch(type) { - case WaveformWidgetType::EmptyWaveform : return new EmptyWaveformWidget(viewer->getGroup(), viewer); - case WaveformWidgetType::SoftwareSimpleWaveform : return 0; //TODO: (vrince) - case WaveformWidgetType::SoftwareWaveform : return new SoftwareWaveformWidget(viewer->getGroup(), viewer); - case WaveformWidgetType::QtSimpleWaveform : return new QtSimpleWaveformWidget(viewer->getGroup(), viewer); - case WaveformWidgetType::QtWaveform : return new QtWaveformWidget(viewer->getGroup(), viewer); - case WaveformWidgetType::GLSimpleWaveform : return new GLSimpleWaveformWidget(viewer->getGroup(), viewer); - case WaveformWidgetType::GLWaveform : return new GLWaveformWidget(viewer->getGroup(), viewer); - case WaveformWidgetType::GLSLWaveform : return new GLSLWaveformWidget(viewer->getGroup(), viewer); - default : return 0; - } - } - return 0; + case WaveformWidgetType::SoftwareWaveform: + widget = new SoftwareWaveformWidget(viewer->getGroup(), viewer); + break; + case WaveformWidgetType::QtSimpleWaveform: + widget = new QtSimpleWaveformWidget(viewer->getGroup(), viewer); + break; + case WaveformWidgetType::QtWaveform: + widget = new QtWaveformWidget(viewer->getGroup(), viewer); + break; + case WaveformWidgetType::GLSimpleWaveform: + widget = new GLSimpleWaveformWidget(viewer->getGroup(), viewer); + break; + case WaveformWidgetType::GLWaveform: + widget = new GLWaveformWidget(viewer->getGroup(), viewer); + break; + case WaveformWidgetType::GLSLWaveform: + widget = new GLSLWaveformWidget(viewer->getGroup(), viewer); + break; + default: + //case WaveformWidgetType::SoftwareSimpleWaveform: TODO: (vrince) + //case WaveformWidgetType::EmptyWaveform: + widget = new EmptyWaveformWidget(viewer->getGroup(), viewer); + break; + } + } + if (widget) { + widget->castToQWidget(); + if(!widget->isValid()) { + qWarning() << "failed to init WafeformWidget" << type << "fall back to \"Empty\""; + delete widget; + widget = new EmptyWaveformWidget(viewer->getGroup(), viewer); + } + } + return widget; } int WaveformWidgetFactory::findIndexOf(WWaveformViewer* viewer) const { === modified file 'mixxx/src/waveform/widgets/emptywaveformwidget.cpp' --- mixxx/src/waveform/widgets/emptywaveformwidget.cpp 2012-05-25 02:58:50 +0000 +++ mixxx/src/waveform/widgets/emptywaveformwidget.cpp 2012-07-25 08:16:38 +0000 @@ -14,7 +14,7 @@ setAttribute(Qt::WA_NoSystemBackground); setAttribute(Qt::WA_OpaquePaintEvent); - init(); + m_initSuccess = init(); } EmptyWaveformWidget::~EmptyWaveformWidget() { === modified file 'mixxx/src/waveform/widgets/emptywaveformwidget.h' --- mixxx/src/waveform/widgets/emptywaveformwidget.h 2012-04-29 18:45:39 +0000 +++ mixxx/src/waveform/widgets/emptywaveformwidget.h 2012-07-23 13:01:07 +0000 @@ -13,11 +13,11 @@ public: virtual ~EmptyWaveformWidget(); - virtual QString getWaveformWidgetName() { return tr("Empty"); } virtual WaveformWidgetType::Type getType() const { return WaveformWidgetType::EmptyWaveform; } - virtual bool useOpenGl() const { return false; } - virtual bool useOpenGLShaders() const { return false; } + static inline QString getWaveformWidgetName() { return tr("Empty"); } + static inline bool useOpenGl() { return false; } + static inline bool useOpenGLShaders() { return false; } protected: virtual void castToQWidget(); === modified file 'mixxx/src/waveform/widgets/glsimplewaveformwidget.cpp' --- mixxx/src/waveform/widgets/glsimplewaveformwidget.cpp 2012-05-25 02:58:50 +0000 +++ mixxx/src/waveform/widgets/glsimplewaveformwidget.cpp 2012-07-25 08:16:38 +0000 @@ -32,7 +32,7 @@ if (QGLContext::currentContext() != context()) { makeCurrent(); } - init(); + m_initSuccess = init(); } GLSimpleWaveformWidget::~GLSimpleWaveformWidget(){ === modified file 'mixxx/src/waveform/widgets/glsimplewaveformwidget.h' --- mixxx/src/waveform/widgets/glsimplewaveformwidget.h 2012-05-08 21:33:07 +0000 +++ mixxx/src/waveform/widgets/glsimplewaveformwidget.h 2012-07-23 13:01:52 +0000 @@ -11,11 +11,11 @@ GLSimpleWaveformWidget(const char* group, QWidget* parent); virtual ~GLSimpleWaveformWidget(); - virtual QString getWaveformWidgetName() { return tr("Simple");} virtual WaveformWidgetType::Type getType() const { return WaveformWidgetType::GLSimpleWaveform;} - virtual bool useOpenGl() const { return true;} - virtual bool useOpenGLShaders() const { return false;} + static inline QString getWaveformWidgetName() { return tr("Simple");} + static inline bool useOpenGl() { return true;} + static inline bool useOpenGLShaders() { return false;} protected: virtual void castToQWidget(); === modified file 'mixxx/src/waveform/widgets/glslwaveformwidget.cpp' --- mixxx/src/waveform/widgets/glslwaveformwidget.cpp 2012-05-25 02:58:50 +0000 +++ mixxx/src/waveform/widgets/glslwaveformwidget.cpp 2012-07-25 08:16:38 +0000 @@ -30,7 +30,7 @@ setAutoBufferSwap(false); makeCurrent(); - init(); + m_initSuccess = init(); } GLSLWaveformWidget::~GLSLWaveformWidget(){ === modified file 'mixxx/src/waveform/widgets/glslwaveformwidget.h' --- mixxx/src/waveform/widgets/glslwaveformwidget.h 2012-05-19 00:29:09 +0000 +++ mixxx/src/waveform/widgets/glslwaveformwidget.h 2012-07-23 13:01:50 +0000 @@ -13,11 +13,11 @@ GLSLWaveformWidget(const char* group, QWidget* parent); virtual ~GLSLWaveformWidget(); - virtual QString getWaveformWidgetName() { return tr("Filtered") + " - " + tr("experimental");} virtual WaveformWidgetType::Type getType() const { return WaveformWidgetType::GLWaveform;} - virtual bool useOpenGl() const { return true;} - virtual bool useOpenGLShaders() const { return true;} + static inline QString getWaveformWidgetName() { return tr("Filtered") + " - " + tr("experimental");} + static inline bool useOpenGl() { return true;} + static inline bool useOpenGLShaders() { return true;} virtual void resize( int width, int height); === modified file 'mixxx/src/waveform/widgets/glwaveformwidget.cpp' --- mixxx/src/waveform/widgets/glwaveformwidget.cpp 2012-05-25 02:58:50 +0000 +++ mixxx/src/waveform/widgets/glwaveformwidget.cpp 2012-07-28 13:22:30 +0000 @@ -33,7 +33,7 @@ if (QGLContext::currentContext() != context()) { makeCurrent(); } - init(); + m_initSuccess = init(); } GLWaveformWidget::~GLWaveformWidget() { === modified file 'mixxx/src/waveform/widgets/glwaveformwidget.h' --- mixxx/src/waveform/widgets/glwaveformwidget.h 2012-04-29 18:45:39 +0000 +++ mixxx/src/waveform/widgets/glwaveformwidget.h 2012-07-23 13:02:32 +0000 @@ -11,11 +11,11 @@ GLWaveformWidget(const char* group, QWidget* parent); virtual ~GLWaveformWidget(); - virtual QString getWaveformWidgetName() { return tr("Filtered");} virtual WaveformWidgetType::Type getType() const { return WaveformWidgetType::GLSLWaveform;} - virtual bool useOpenGl() const { return true;} - virtual bool useOpenGLShaders() const { return false;} + static inline QString getWaveformWidgetName() { return tr("Filtered");} + static inline bool useOpenGl() { return true;} + static inline bool useOpenGLShaders() { return false;} protected: virtual void castToQWidget(); === modified file 'mixxx/src/waveform/widgets/qtsimplewaveformwidget.cpp' --- mixxx/src/waveform/widgets/qtsimplewaveformwidget.cpp 2012-05-25 02:58:50 +0000 +++ mixxx/src/waveform/widgets/qtsimplewaveformwidget.cpp 2012-07-25 08:16:38 +0000 @@ -31,7 +31,7 @@ if (QGLContext::currentContext() != context()) { makeCurrent(); } - init(); + m_initSuccess = init(); } QtSimpleWaveformWidget::~QtSimpleWaveformWidget(){ === modified file 'mixxx/src/waveform/widgets/qtsimplewaveformwidget.h' --- mixxx/src/waveform/widgets/qtsimplewaveformwidget.h 2012-05-20 00:25:34 +0000 +++ mixxx/src/waveform/widgets/qtsimplewaveformwidget.h 2012-07-23 13:01:51 +0000 @@ -11,11 +11,12 @@ QtSimpleWaveformWidget(const char* group, QWidget* parent); virtual ~QtSimpleWaveformWidget(); - virtual QString getWaveformWidgetName() { return tr("Simple") + " - Qt";} + virtual WaveformWidgetType::Type getType() const { return WaveformWidgetType::GLSimpleWaveform;} - virtual bool useOpenGl() const { return true;} - virtual bool useOpenGLShaders() const { return false;} + static inline QString getWaveformWidgetName() { return tr("Simple") + " - Qt";} + static inline bool useOpenGl() { return true;} + static inline bool useOpenGLShaders() { return false;} protected: virtual void castToQWidget(); === modified file 'mixxx/src/waveform/widgets/qtwaveformwidget.cpp' --- mixxx/src/waveform/widgets/qtwaveformwidget.cpp 2012-05-25 02:58:50 +0000 +++ mixxx/src/waveform/widgets/qtwaveformwidget.cpp 2012-07-25 08:16:38 +0000 @@ -32,7 +32,7 @@ if (QGLContext::currentContext() != context()) { makeCurrent(); } - init(); + m_initSuccess = init(); } QtWaveformWidget::~QtWaveformWidget() { === modified file 'mixxx/src/waveform/widgets/qtwaveformwidget.h' --- mixxx/src/waveform/widgets/qtwaveformwidget.h 2012-05-20 00:25:34 +0000 +++ mixxx/src/waveform/widgets/qtwaveformwidget.h 2012-07-23 13:01:52 +0000 @@ -11,11 +11,11 @@ QtWaveformWidget(const char* group, QWidget* parent); virtual ~QtWaveformWidget(); - virtual QString getWaveformWidgetName() { return tr("Filtered") + " - Qt";} virtual WaveformWidgetType::Type getType() const { return WaveformWidgetType::GLSLWaveform;} - virtual bool useOpenGl() const { return true;} - virtual bool useOpenGLShaders() const { return false;} + static inline QString getWaveformWidgetName() { return tr("Filtered") + " - Qt";} + static inline bool useOpenGl() { return true;} + static inline bool useOpenGLShaders() { return false;} protected: virtual void castToQWidget(); === modified file 'mixxx/src/waveform/widgets/softwarewaveformwidget.cpp' --- mixxx/src/waveform/widgets/softwarewaveformwidget.cpp 2012-05-25 02:58:50 +0000 +++ mixxx/src/waveform/widgets/softwarewaveformwidget.cpp 2012-07-25 08:16:38 +0000 @@ -25,7 +25,7 @@ setAttribute(Qt::WA_NoSystemBackground); setAttribute(Qt::WA_OpaquePaintEvent); - init(); + m_initSuccess = init(); } SoftwareWaveformWidget::~SoftwareWaveformWidget() { === modified file 'mixxx/src/waveform/widgets/softwarewaveformwidget.h' --- mixxx/src/waveform/widgets/softwarewaveformwidget.h 2012-05-20 00:25:34 +0000 +++ mixxx/src/waveform/widgets/softwarewaveformwidget.h 2012-07-23 13:01:53 +0000 @@ -10,11 +10,11 @@ public: virtual ~SoftwareWaveformWidget(); - virtual QString getWaveformWidgetName() { return tr("Filtered") + " - " + tr("Software");} virtual WaveformWidgetType::Type getType() const { return WaveformWidgetType::SoftwareWaveform;} - virtual bool useOpenGl() const { return false;} - virtual bool useOpenGLShaders() const { return false;} + static inline QString getWaveformWidgetName() { return tr("Filtered") + " - " + tr("Software");} + static inline bool useOpenGl() { return false;} + static inline bool useOpenGLShaders() { return false;} protected: virtual void castToQWidget(); === modified file 'mixxx/src/waveform/widgets/waveformwidgetabstract.h' --- mixxx/src/waveform/widgets/waveformwidgetabstract.h 2012-04-29 18:45:39 +0000 +++ mixxx/src/waveform/widgets/waveformwidgetabstract.h 2012-07-25 08:16:38 +0000 @@ -21,7 +21,7 @@ //Type is use by the factory to safely up-cast waveform widgets virtual WaveformWidgetType::Type getType() const = 0; - bool isValid() const { return m_widget; } + bool isValid() const { return (m_widget && m_initSuccess); } QWidget* getWidget() { return m_widget; } void hold(); @@ -33,13 +33,9 @@ virtual void resize( int width, int height); - //Those information enable automatic combobox creation and waveform selection - virtual QString getWaveformWidgetName() = 0; - virtual bool useOpenGl() const = 0; - virtual bool useOpenGLShaders() const = 0; - protected: QWidget* m_widget; + bool m_initSuccess; WaveformWidgetAbstract(); //this is the factory resposability to trigger QWidget casting after constructor