Fix #8808: [OSX, OpenGL] Crash on switching blitters due to double-mapping the video buffer.

pull/238/head
Michael Lutz 3 years ago
parent ae1f7bd695
commit 25656a10cb

@ -265,7 +265,7 @@ void VideoDriver_CocoaOpenGL::AllocateBackingStore(bool force)
CGLSetCurrentContext(this->gl_context); CGLSetCurrentContext(this->gl_context);
NSRect frame = [ this->cocoaview getRealRect:[ this->cocoaview frame ] ]; NSRect frame = [ this->cocoaview getRealRect:[ this->cocoaview frame ] ];
OpenGLBackend::Get()->Resize(frame.size.width, frame.size.height, force); OpenGLBackend::Get()->Resize(frame.size.width, frame.size.height, force);
_screen.dst_ptr = this->GetVideoPointer(); if (this->buffer_locked) _screen.dst_ptr = this->GetVideoPointer();
this->dirty_rect = {}; this->dirty_rect = {};
/* Redraw screen */ /* Redraw screen */

@ -213,7 +213,7 @@ bool VideoDriver_Cocoa::ToggleFullscreen(bool full_screen)
*/ */
bool VideoDriver_Cocoa::AfterBlitterChange() bool VideoDriver_Cocoa::AfterBlitterChange()
{ {
this->ChangeResolution(_cur_resolution.width, _cur_resolution.height); this->AllocateBackingStore(true);
return true; return true;
} }
@ -224,7 +224,7 @@ void VideoDriver_Cocoa::EditBoxLostFocus()
{ {
[ [ this->cocoaview inputContext ] discardMarkedText ]; [ [ this->cocoaview inputContext ] discardMarkedText ];
/* Clear any marked string from the current edit box. */ /* Clear any marked string from the current edit box. */
HandleTextInput(NULL, true); HandleTextInput(nullptr, true);
} }
/** /**

@ -700,9 +700,9 @@ void CocoaDialog(const char *title, const char *message, const char *buttonLabel
if (!EditBoxInGlobalFocus() || IsInsideMM(pressed_key & ~WKC_SPECIAL_KEYS, WKC_F1, WKC_PAUSE + 1)) { if (!EditBoxInGlobalFocus() || IsInsideMM(pressed_key & ~WKC_SPECIAL_KEYS, WKC_F1, WKC_PAUSE + 1)) {
HandleKeypress(pressed_key, unicode); HandleKeypress(pressed_key, unicode);
} }
DEBUG(driver, 2, "cocoa_v: QZ_KeyEvent: %x (%x), down, mapping: %x", keycode, unicode, pressed_key); DEBUG(driver, 3, "cocoa_v: QZ_KeyEvent: %x (%x), down, mapping: %x", keycode, unicode, pressed_key);
} else { } else {
DEBUG(driver, 2, "cocoa_v: QZ_KeyEvent: %x (%x), up", keycode, unicode); DEBUG(driver, 3, "cocoa_v: QZ_KeyEvent: %x (%x), up", keycode, unicode);
} }
return interpret_keys; return interpret_keys;

Loading…
Cancel
Save