From c4edda301d5cfdfff15c462817ca128da36777c0 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Fri, 14 Feb 2025 17:57:05 +0200 Subject: [PATCH] Fix CD32 block caching --- akiko.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/akiko.cpp b/akiko.cpp index 07d95d26..dad07937 100644 --- a/akiko.cpp +++ b/akiko.cpp @@ -1608,11 +1608,11 @@ static void akiko_thread (void *null) } else { blocks = SECTOR_BUFFER_SIZE - secnum; } + if (blocks) { #if AKIKO_DEBUG_IO_CMD - if (1) - write_log(_T("CD32: filling buffer sector=%d-%d, blocks=%d\n"), sector, sector + blocks - 1, blocks); + if (1) + write_log(_T("CD32: filling buffer sector=%d-%d, blocks=%d\n"), sector, sector + blocks - 1, blocks); #endif - if (blocks) { uae_sem_post(&akiko_sem); int ok = sys_command_cd_rawread (unitnum, sector_buffer_2, sector, blocks, 2352); if (!ok) { @@ -1632,6 +1632,9 @@ static void akiko_thread (void *null) } } uae_sem_wait(&akiko_sem); + } + if (blocks || secnum) { + uae_sem_post(&akiko_sem); tmp1 = sector_buffer_info_1; sector_buffer_info_1 = sector_buffer_info_2; sector_buffer_info_2 = tmp1; @@ -1641,6 +1644,7 @@ static void akiko_thread (void *null) tmp3 = sector_buffer_sector_1; sector_buffer_sector_1 = sector_buffer_sector_2; sector_buffer_sector_2 = tmp3; + uae_sem_wait(&akiko_sem); } } uae_sem_post (&akiko_sem); -- 2.47.3