share contexts on all renderthreads

This commit is contained in:
itsmattkc
2019-08-27 23:49:05 +10:00
parent d76218924e
commit 797a4eae16
5 changed files with 26 additions and 3 deletions
+1 -1
View File
@@ -192,7 +192,7 @@ void RendererProcessor::Start()
threads_.resize(QThread::idealThreadCount());
for (int i=0;i<threads_.size();i++) {
threads_[i] = std::make_shared<RendererThread>(width_, height_, format_, mode_);
threads_[i] = std::make_shared<RendererThread>(QOpenGLContext::currentContext(), width_, height_, format_, mode_);
threads_[i]->StartThread(QThread::HighPriority);
// Ensure this connection is "Queued" so that it always runs in this object's threaded rather than any of the
@@ -22,7 +22,8 @@
#include <QDebug>
RendererThread::RendererThread(const int &width, const int &height, const olive::PixelFormat &format, const olive::RenderMode &mode) :
RendererThread::RendererThread(QOpenGLContext *share_ctx, const int &width, const int &height, const olive::PixelFormat &format, const olive::RenderMode &mode) :
share_ctx_(share_ctx),
cancelled_(false),
width_(width),
height_(height),
@@ -80,6 +81,8 @@ void RendererThread::run()
RenderInstance instance(width_, height_, format_, mode_);
render_instance_ = &instance;
instance.SetShareContext(share_ctx_);
// Allocate and create resources
if (instance.Start()) {
+4 -1
View File
@@ -34,7 +34,8 @@ class RendererThread : public QThread
{
Q_OBJECT
public:
RendererThread(const int& width,
RendererThread(QOpenGLContext* share_ctx,
const int& width,
const int& height,
const olive::PixelFormat& format,
const olive::RenderMode& mode);
@@ -53,6 +54,8 @@ signals:
void FinishedPath();
private:
QOpenGLContext* share_ctx_;
QWaitCondition wait_cond_;
QMutex mutex_;