diff --git a/BasiliskII/src/Unix/video_vosf.h b/BasiliskII/src/Unix/video_vosf.h index 7cc50d5a..df884a6b 100644 --- a/BasiliskII/src/Unix/video_vosf.h +++ b/BasiliskII/src/Unix/video_vosf.h @@ -368,7 +368,6 @@ There are two cases to check: static inline void update_display_window_vosf(VIDEO_DRV_INIT) { VIDEO_MODE_INIT; - XDisplayLock(); int page = 0; for (;;) { @@ -429,8 +428,6 @@ static inline void update_display_window_vosf(VIDEO_DRV_INIT) XPutImage(x_display, VIDEO_DRV_WINDOW, VIDEO_DRV_GC, VIDEO_DRV_IMAGE, 0, y1, 0, y1, VIDEO_MODE_X, height); #endif } - - XDisplayUnlock(); mainBuffer.dirty = false; } diff --git a/BasiliskII/src/Unix/video_x.cpp b/BasiliskII/src/Unix/video_x.cpp index 1c94e551..2610575e 100644 --- a/BasiliskII/src/Unix/video_x.cpp +++ b/BasiliskII/src/Unix/video_x.cpp @@ -2480,10 +2480,12 @@ static void video_refresh_window_vosf(void) if (++tick_counter >= frame_skip) { tick_counter = 0; if (mainBuffer.dirty) { + XDisplayLock(); LOCK_VOSF; update_display_window_vosf(static_cast(drv)); UNLOCK_VOSF; XSync(x_display, false); // Let the server catch up + XDisplayUnlock(); } } }