Bau dir nen Minimal Loop für sowas.
jedoch verstehe ich nicht ganz warum du ein Flipbuffers brauchst ( welches ja für die Anzeige gedacht ist ) wenn dein Fenster minimiert ist ?
Klar du willst das dein Spiel weiterläuft - aber überleg dir mal was du dazu brauchst ...
Kleiner Tip:
In der Regel verwendet man mindestens 2 Loops ( Klar geht auch mit einem aber das ganze aufzusplitten macht schon sinn )
1: - Mainloop
2: - Drawingloop
3: - Input / Processingloop
Entweder verwendest du dafür Threads ( diese können auch unterschiedlich schnell durchlaufen , sind aber schwerer zu Handhaben ).
Oder du baust dir eine kleine Art Eventsystem welches merkt wenn das Fenster minimiert ist und dann währenddessen nicht versucht alles neuzuzeichnen .. macht eh keinen sinn...

und zb im Hintergrund deine Sprites bewegt, game pausiert, daten updated ..was auch immer...
Generell solltest du alle Eingaben respektive Rückgaben solcher Funktionen überprüfen um a. ein stabiles Programm schreiben zu können und b. zum leichter Debuggen.
zb.
Als Tip : Dort wo du Variablen überprüfen musst reicht ein :
anstelle eines
Die erste methode ist einiges shcneller zb. da nurnoch Boolisch geprüft wird und keine AND / Expression Operation mehr gemacht wird. geht natürlich nicht überall, jedoch bei Funktionen die du oft in einem Loop aufrufst solltest du drauf achten möglichst effektiv mit den ressourcen umzugehen.
Thalius