mirror of https://github.com/mgba-emu/mgba.git
Qt: Fix crash when switching from high-resolution OpenGL renderer to software
This commit is contained in:
parent
af212925e7
commit
afd970423e
1
CHANGES
1
CHANGES
|
@ -11,6 +11,7 @@ Other fixes:
|
||||||
- GBA e-Reader: Fix bitmap short strip scanning
|
- GBA e-Reader: Fix bitmap short strip scanning
|
||||||
- GBA Video: Fix mode 5 frame 1 caching (fixes mgba.io/i/2075)
|
- GBA Video: Fix mode 5 frame 1 caching (fixes mgba.io/i/2075)
|
||||||
- GBA Video: Don't attempt to copy invalid registers when switching renderer
|
- GBA Video: Don't attempt to copy invalid registers when switching renderer
|
||||||
|
- Qt: Fix crash when switching from high-resolution OpenGL renderer to software
|
||||||
Misc:
|
Misc:
|
||||||
- Core: Truncate preloading ROMs that slightly exceed max size (fixes mgba.io/i/2093)
|
- Core: Truncate preloading ROMs that slightly exceed max size (fixes mgba.io/i/2093)
|
||||||
- GBA: Default-enable VBA bug compat for Ruby and Emerald ROM hacks
|
- GBA: Default-enable VBA bug compat for Ruby and Emerald ROM hacks
|
||||||
|
|
|
@ -368,6 +368,10 @@ void PainterGL::resizeContext() {
|
||||||
m_interrupter.resume();
|
m_interrupter.resume();
|
||||||
|
|
||||||
QSize size = m_context->screenDimensions();
|
QSize size = m_context->screenDimensions();
|
||||||
|
if (m_dims == size) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dequeueAll();
|
||||||
m_backend->setDimensions(m_backend, size.width(), size.height());
|
m_backend->setDimensions(m_backend, size.width(), size.height());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -560,9 +564,6 @@ void PainterGL::dequeueAll() {
|
||||||
m_free.append(buffer);
|
m_free.append(buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (buffer) {
|
|
||||||
m_backend->postFrame(m_backend, buffer);
|
|
||||||
}
|
|
||||||
if (m_buffer) {
|
if (m_buffer) {
|
||||||
m_free.append(m_buffer);
|
m_free.append(m_buffer);
|
||||||
m_buffer = nullptr;
|
m_buffer = nullptr;
|
||||||
|
|
|
@ -142,7 +142,7 @@ private:
|
||||||
QList<uint32_t*> m_free;
|
QList<uint32_t*> m_free;
|
||||||
QQueue<uint32_t*> m_queue;
|
QQueue<uint32_t*> m_queue;
|
||||||
QAtomicInt m_lagging = 0;
|
QAtomicInt m_lagging = 0;
|
||||||
uint32_t* m_buffer;
|
uint32_t* m_buffer = nullptr;
|
||||||
QPainter m_painter;
|
QPainter m_painter;
|
||||||
QMutex m_mutex;
|
QMutex m_mutex;
|
||||||
QWindow* m_surface;
|
QWindow* m_surface;
|
||||||
|
@ -158,6 +158,7 @@ private:
|
||||||
VideoShader m_shader{};
|
VideoShader m_shader{};
|
||||||
VideoBackend* m_backend = nullptr;
|
VideoBackend* m_backend = nullptr;
|
||||||
QSize m_size;
|
QSize m_size;
|
||||||
|
QSize m_dims;
|
||||||
MessagePainter* m_messagePainter = nullptr;
|
MessagePainter* m_messagePainter = nullptr;
|
||||||
QElapsedTimer m_delayTimer;
|
QElapsedTimer m_delayTimer;
|
||||||
std::shared_ptr<VideoProxy> m_videoProxy;
|
std::shared_ptr<VideoProxy> m_videoProxy;
|
||||||
|
|
Loading…
Reference in New Issue