Commit 6cea1aa

Nick committed on
Adding hack to prevent thread lockup
commit 6cea1aa63ab9f42415e5bca88929058bf8d75091 parent 0ed4be3
3 changed files +10−5
ModifiedGBEmu.lpi +5−0
@@ -310,6 +310,11 @@
310 <OptimizationLevel Value="0"/> 310 <OptimizationLevel Value="0"/>
311 </Optimizations> 311 </Optimizations>
312 </CodeGeneration> 312 </CodeGeneration>
313 <Linking>
314 <Debugging>
315 <TrashVariables Value="True"/>
316 </Debugging>
317 </Linking>
313 <Other> 318 <Other>
314 <CustomOptions Value="-dBorland -dVer150 -dDelphi7 -dCompiler6_Up -dPUREPASCAL -dDEVELOPMENT"/> 319 <CustomOptions Value="-dBorland -dVer150 -dDelphi7 -dCompiler6_Up -dPUREPASCAL -dDEVELOPMENT"/>
315 </Other> 320 </Other>
Modifiedemulationthread.pas +5−1
@@ -57,7 +57,11 @@ begin
57 FrameEnd := GetCounter; 57 FrameEnd := GetCounter;
58 58
59 frameElapsedInSec := (frameEnd - frameStart) / tickFreq; 59 frameElapsedInSec := (frameEnd - frameStart) / tickFreq;
60 until (frameElapsedInSec > TimePerFrame) and (not SoundBufferTooFull); 60 until ((frameElapsedInSec > TimePerFrame) and (not SoundBufferTooFull))
61 or (frameElapsedInSec > 1); // HACK: Prevent lockups from happening.
62
63 // Find out why this (super rarely) locks up and never stops looping. I think
64 // it has to do something with the SoundBufferTooFull call, but I really don't know.
61 65
62 frameStart := frameEnd; 66 frameStart := frameEnd;
63 until Terminated; 67 until Terminated;
Modifiedtracker.pas +0−4
@@ -693,8 +693,6 @@ begin
693 SymbolTable := ParseSymFile('hUGEDriver/preview.sym'); 693 SymbolTable := ParseSymFile('hUGEDriver/preview.sym');
694 694
695 // Start emulation on the rendered preview binary 695 // Start emulation on the rendered preview binary
696 EmulationThread.Terminate;
697 //EmulationThread.WaitFor;
698 EmulationThread.Free; 696 EmulationThread.Free;
699 EmulationThread := TEmulationThread.Create('hUGEDriver/preview.gb'); 697 EmulationThread := TEmulationThread.Create('hUGEDriver/preview.gb');
700 PokeSymbol(SYM_TICKS_PER_ROW, Song.TicksPerRow); 698 PokeSymbol(SYM_TICKS_PER_ROW, Song.TicksPerRow);
@@ -715,8 +713,6 @@ begin
715 TrackerGrid.HighlightedRow := -1; 713 TrackerGrid.HighlightedRow := -1;
716 ToolButton2.ImageIndex := 74; 714 ToolButton2.ImageIndex := 74;
717 715
718 EmulationThread.Terminate;
719 //EmulationThread.WaitFor;
720 EmulationThread.Free; 716 EmulationThread.Free;
721 EmulationThread := TEmulationThread.Create('halt.gb'); 717 EmulationThread := TEmulationThread.Create('halt.gb');
722 EmulationThread.Start; 718 EmulationThread.Start;