]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Fix CD32 block caching
authorToni Wilen <twilen@winuae.net>
Fri, 14 Feb 2025 15:57:05 +0000 (17:57 +0200)
committerToni Wilen <twilen@winuae.net>
Fri, 14 Feb 2025 15:57:05 +0000 (17:57 +0200)
akiko.cpp

index 07d95d26fab780be61c07835e3fdd700b95914d5..dad0793761e3b8c110e483332018111bfad82bd0 100644 (file)
--- 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);