=== modified file 'mixxx/src/waveformviewerfactory.cpp' --- mixxx/src/waveformviewerfactory.cpp 2010-11-01 05:12:23 +0000 +++ mixxx/src/waveformviewerfactory.cpp 2011-01-05 06:10:21 +0000 @@ -1,6 +1,7 @@ #include #include +#include #include "configobject.h" #include "waveformviewerfactory.h" @@ -16,8 +17,21 @@ QList WaveformViewerFactory::m_visualViewers = QList(); QList WaveformViewerFactory::m_visualGLViewers = QList(); QTimer WaveformViewerFactory::s_waveformUpdateTimer;; +QGLContext* WaveformViewerFactory::s_pSharedOGLCtxt = (QGLContext *)NULL; WaveformViewerType WaveformViewerFactory::createWaveformViewer(const char *group, QWidget *parent, ConfigObject *pConfig, QWidget **target, WaveformRenderer* pWaveformRenderer) { + + QGLContext *ctxt; + + if ( s_pSharedOGLCtxt == (QGLContext*)NULL ) { + s_pSharedOGLCtxt = new QGLContext(QGLFormat(QGL::SampleBuffers)); + s_pSharedOGLCtxt->create(); + s_pSharedOGLCtxt->makeCurrent(); + } + + ctxt = new QGLContext(QGLFormat(QGL::SampleBuffers)); + ctxt->create(s_pSharedOGLCtxt); + qDebug() << "createWaveformViewer()"; bool bVisualWaveform = true; @@ -42,7 +56,7 @@ else qDebug() << "WaveformViewerFactory :: Sharing existing GL context."; - WGLWaveformViewer *visual = new WGLWaveformViewer(group, pWaveformRenderer, parent, NULL); + WGLWaveformViewer *visual = new WGLWaveformViewer(group, pWaveformRenderer, parent, NULL, ctxt); if(visual->isValid()) { m_visualGLViewers.append(visual); === modified file 'mixxx/src/waveformviewerfactory.h' --- mixxx/src/waveformviewerfactory.h 2010-09-19 19:22:16 +0000 +++ mixxx/src/waveformviewerfactory.h 2011-01-05 05:59:00 +0000 @@ -6,6 +6,7 @@ #include #include #include +#include #include "configobject.h" #include "widget/wwidget.h" @@ -33,6 +34,7 @@ static QList m_visualViewers; static QList m_visualGLViewers; static QTimer s_waveformUpdateTimer; + static QGLContext *s_pSharedOGLCtxt; public: static WaveformViewerType createWaveformViewer(const char* group, QWidget *pParent, ConfigObject *pConfig, QWidget **target, WaveformRenderer *pWaveformRenderer); === modified file 'mixxx/src/widget/wglwaveformviewer.cpp' --- mixxx/src/widget/wglwaveformviewer.cpp 2010-12-30 09:38:12 +0000 +++ mixxx/src/widget/wglwaveformviewer.cpp 2011-01-05 04:35:31 +0000 @@ -6,6 +6,7 @@ #include #include #include +#include #include "mixxx.h" @@ -13,7 +14,15 @@ #include "wglwaveformviewer.h" #include "waveform/waveformrenderer.h" -WGLWaveformViewer::WGLWaveformViewer(const char *group, WaveformRenderer *pWaveformRenderer, QWidget * pParent, const QGLWidget * pShareWidget, Qt::WFlags f) : QGLWidget(QGLFormat(QGL::SampleBuffers), pParent, pShareWidget) +WGLWaveformViewer::WGLWaveformViewer( + const char *group, + WaveformRenderer *pWaveformRenderer, + QWidget * pParent, + const QGLWidget * pShareWidget, + QGLContext *ctxt, + Qt::WFlags f + ) : + QGLWidget(ctxt, pParent, pShareWidget) { m_pWaveformRenderer = pWaveformRenderer; === modified file 'mixxx/src/widget/wglwaveformviewer.h' --- mixxx/src/widget/wglwaveformviewer.h 2010-09-08 00:47:06 +0000 +++ mixxx/src/widget/wglwaveformviewer.h 2011-01-05 05:46:44 +0000 @@ -10,6 +10,7 @@ #include #include #include +#include #include "wwidget.h" #include "defs.h" @@ -23,6 +24,7 @@ public: WGLWaveformViewer(const char *group, WaveformRenderer* pWaveformRenderer, QWidget *pParent=0, const QGLWidget *pShareWidget = 0, + QGLContext *ctxt = 0, Qt::WFlags f = 0); virtual ~WGLWaveformViewer();