From 1b6a63edf7b64cb9d953058f655d9544c2702d99 Mon Sep 17 00:00:00 2001 From: kanjitalk755 Date: Tue, 26 Feb 2019 14:57:02 +0900 Subject: [PATCH] alternative PR#11 --- BasiliskII/src/SDL/video_sdl2.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/BasiliskII/src/SDL/video_sdl2.cpp b/BasiliskII/src/SDL/video_sdl2.cpp index 138e91b3..c99e3248 100644 --- a/BasiliskII/src/SDL/video_sdl2.cpp +++ b/BasiliskII/src/SDL/video_sdl2.cpp @@ -875,10 +875,6 @@ static int present_sdl_video() SDL_SetRenderDrawColor(sdl_renderer, 0, 0, 0, 0); // Use black SDL_RenderClear(sdl_renderer); // Clear the display - // We're about to work with sdl_update_video_rect, so stop other threads from - // modifying it! - SDL_LockMutex(sdl_update_video_mutex); - // Convert from the guest OS' pixel format, to the host OS' texture, if necessary. if (host_surface != guest_surface && host_surface != NULL && @@ -886,14 +882,17 @@ static int present_sdl_video() { SDL_Rect destRect = sdl_update_video_rect; LOCK_PALETTE; + SDL_LockMutex(sdl_update_video_mutex); int result = SDL_BlitSurface(guest_surface, &sdl_update_video_rect, host_surface, &destRect); + SDL_UnlockMutex(sdl_update_video_mutex); UNLOCK_PALETTE; - if (result != 0) { - SDL_UnlockMutex(sdl_update_video_mutex); - return -1; - } + if (result != 0) return -1; } + // We're about to work with sdl_update_video_rect, so stop other threads from + // modifying it! + SDL_LockMutex(sdl_update_video_mutex); + // Update the host OS' texture void * srcPixels = (void *)((uint8_t *)host_surface->pixels + sdl_update_video_rect.y * host_surface->pitch +