cdriso: disable the async code
authornotaz <notasas@gmail.com>
Wed, 2 Nov 2022 22:49:53 +0000 (00:49 +0200)
committernotaz <notasas@gmail.com>
Thu, 3 Nov 2022 00:18:37 +0000 (02:18 +0200)
It will race with the new ISOgetBufferSub() and I have no desire to fix
this as this async stuff was never submitted upstread, and according to
the following report it's unstable:
https://github.com/notaz/pcsx_rearmed/issues/257

frontend/libretro_core_options.h
libpcsxcore/cdriso.c

index 39bc32b..683173d 100644 (file)
@@ -165,7 +165,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
       },
       "disabled",
    },
-#ifndef _WIN32
+#if 0 // ndef _WIN32 // currently disabled, see USE_READ_THREAD in libpcsxcore/cdriso.c
    {
       "pcsx_rearmed_async_cd",
       "CD Access Method (Restart)",
index 5e74de1..ce1d8cf 100644 (file)
 #include <unistd.h>
 #endif
 
+#ifndef _WIN32
+// to enable the USE_READ_THREAD code, fix:
+// - https://github.com/notaz/pcsx_rearmed/issues/257
+// - ISOgetBufferSub to not race with async code
+//#define USE_READ_THREAD
+#endif
+
 #ifdef USE_LIBRETRO_VFS
 #include <streams/file_stream_transforms.h>
 #undef fseeko
@@ -1070,7 +1077,7 @@ static int opensbifile(const char *isoname) {
        return LoadSBI(sbiname, s);
 }
 
-#ifdef _WIN32
+#ifndef USE_READ_THREAD
 static void readThreadStop() {}
 static void readThreadStart() {}
 #else
@@ -1468,7 +1475,7 @@ static int cdread_2048(FILE *f, unsigned int base, void *dest, int sector)
        return 12*2 + ret;
 }
 
-#ifndef _WIN32
+#ifdef USE_READ_THREAD
 
 static int cdread_async(FILE *f, unsigned int base, void *dest, int sector) {
   boolean found = FALSE;
@@ -1526,7 +1533,7 @@ static unsigned char * CALLBACK ISOgetBuffer_chd(void) {
 }
 #endif
 
-#ifndef _WIN32
+#ifdef USE_READ_THREAD
 static unsigned char * CALLBACK ISOgetBuffer_async(void) {
   unsigned char *buffer;
   pthread_mutex_lock(&sectorbuffer_lock);