X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdac.cpp;h=9dc1a2ef28c34bb9b7d32d2fe04b67e53e1f4948;hb=ff3fa0b1ecf246a104ff10fa6c3dc225cccce82f;hp=59019f8d14d5fd25d83c717ee415a5246eefd575;hpb=34eb947551354f437ed67e2f0a3b88e186f47561;p=virtualjaguar diff --git a/src/dac.cpp b/src/dac.cpp index 59019f8..9dc1a2e 100644 --- a/src/dac.cpp +++ b/src/dac.cpp @@ -22,10 +22,11 @@ #include "dac.h" #include "SDL.h" -#include "m68k.h" +#include "gui.h" #include "jaguar.h" -#include "settings.h" #include "log.h" +#include "m68k.h" +#include "settings.h" //#define DEBUG_DAC @@ -173,7 +174,7 @@ if (numLeftSamplesReady == 0 || numRightSamplesReady == 0) } // -// Calculate the frequency of SCLK * 32 using the divider +// Calculate the freq9uency of SCLK * 32 using the divider // int GetCalculatedFrequency(void) { @@ -219,8 +220,10 @@ WriteLog("Tail=%X, Head=%X", ltail, lhead); WriteLog("LTail=%X, LHead=%X, BUFFER_SIZE-1=%X\n", LeftFIFOTailPtr, LeftFIFOHeadPtr, BUFFER_SIZE - 1); WriteLog("RTail=%X, RHead=%X, BUFFER_SIZE-1=%X\n", RightFIFOTailPtr, RightFIFOHeadPtr, BUFFER_SIZE - 1); WriteLog("From while: Tail=%X, Head=%X", (LeftFIFOTailPtr + 2) & (BUFFER_SIZE - 1), LeftFIFOHeadPtr); - log_done(); - exit(0); +// LogDone(); +// exit(0); + GUICrashGracefully("Stuck in left DAC spinlock!"); + return; } }//*/ @@ -289,6 +292,8 @@ LTail=60D8, LHead=60D8, BUFFER_SIZE-1=FFFF RTail=DB, RHead=60D9, BUFFER_SIZE-1=FFFF From while: Tail=60DA, Head=60D8 */ +#warning Spinlock problem--!!! FIX !!! +#warning Odd: The right FIFO is empty, but the left FIFO is full! // Spin until buffer has been drained (for too fast processors!)... uint32 spin = 0; while (((RightFIFOTailPtr + 2) & (BUFFER_SIZE - 1)) == RightFIFOHeadPtr)//; @@ -306,8 +311,10 @@ WriteLog("Tail=%X, Head=%X", rtail, rhead); WriteLog("LTail=%X, LHead=%X, BUFFER_SIZE-1=%X\n", LeftFIFOTailPtr, LeftFIFOHeadPtr, BUFFER_SIZE - 1); WriteLog("RTail=%X, RHead=%X, BUFFER_SIZE-1=%X\n", RightFIFOTailPtr, RightFIFOHeadPtr, BUFFER_SIZE - 1); WriteLog("From while: Tail=%X, Head=%X", (RightFIFOTailPtr + 2) & (BUFFER_SIZE - 1), RightFIFOHeadPtr); - log_done(); - exit(0); +// LogDone(); +// exit(0); + GUICrashGracefully("Stuck in right DAC spinlock!"); + return; } }//*/ @@ -342,8 +349,10 @@ WriteLog("Tail=%X, Head=%X", rtail, rhead); // This is bad, Bad, BAD !!! DON'T ABORT BECAUSE WE DIDN'T GET OUR FREQ! !!! FIX !!! #warning !!! FIX !!! Aborting because of SDL audio problem is bad! WriteLog("DAC: Failed to initialize SDL sound: %s.\nDesired freq: %u\nShutting down!\n", SDL_GetError(), desired.freq); - log_done(); - exit(1); +// LogDone(); +// exit(1); + GUICrashGracefully("Failed to initialize SDL sound!"); + return; } }