Qt: Fix DisplayGL crash

This commit is contained in:
Vicki Pfau 2018-07-05 20:26:03 -07:00
parent 08ec1e89c4
commit 8fdfa130bd

View File

@ -29,8 +29,11 @@ using namespace QGBA;
DisplayGL::DisplayGL(const QGLFormat& format, QWidget* parent) DisplayGL::DisplayGL(const QGLFormat& format, QWidget* parent)
: Display(parent) : Display(parent)
, m_gl(new EmptyGLWidget(format, this)) , m_gl(nullptr)
{ {
// This can spontaneously re-enter into this->resizeEvent before creation is done, so we
// need to make sure it's initialized to nullptr before we assign the new object to it
m_gl = new EmptyGLWidget(format, this);
m_painter = new PainterGL(format.majorVersion() < 2 ? 1 : m_gl->format().majorVersion(), m_gl); m_painter = new PainterGL(format.majorVersion() < 2 ? 1 : m_gl->format().majorVersion(), m_gl);
m_gl->setMouseTracking(true); m_gl->setMouseTracking(true);
m_gl->setAttribute(Qt::WA_TransparentForMouseEvents); // This doesn't seem to work? m_gl->setAttribute(Qt::WA_TransparentForMouseEvents); // This doesn't seem to work?
@ -162,7 +165,9 @@ void DisplayGL::resizeEvent(QResizeEvent* event) {
} }
void DisplayGL::resizePainter() { void DisplayGL::resizePainter() {
if (m_gl) {
m_gl->resize(size()); m_gl->resize(size());
}
if (m_drawThread) { if (m_drawThread) {
QMetaObject::invokeMethod(m_painter, "resize", Qt::BlockingQueuedConnection, Q_ARG(QSize, size())); QMetaObject::invokeMethod(m_painter, "resize", Qt::BlockingQueuedConnection, Q_ARG(QSize, size()));
} }