Da das Laden von vielen Sprites etwas mehr Zeit in Anspruch nimmt, würde ich gerne einen Ladeanimation auf meinem Screen zeigen, während ich die Grafiken (Sprites) einlade.
Leider musste ich nun feststellen, dass sich mein Programm manchmal aufhängt, wenn ich (trotz ThreadSafe Aktivierung) LoadSprite in einem Thread benutze, während in der Hauptschleife der Screen aktualisiert wird (FlipBuffers usw.)
Ist die Sprite-Lib von PB nicht Threadsicher?
Code: Alles auswählen
InitSprite()
InitSprite3D()
Enumeration
#Window
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "ScreenTitle", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window), 0, 0, 0)
UsePNGImageDecoder()
Procedure Test(A)
For n = 1 To 50
LoadSprite(n, "...") ; Hier bitte irgend ein großes Bild nehmen (zB 2560x1920px)
Next
EndProcedure
Define Thread = CreateThread(@Test(), #Null)
Repeat
Repeat
Select WindowEvent()
Case #PB_Event_CloseWindow
End
Case #Null
Break
EndSelect
ForEver
ClearScreen(0)
StartDrawing(ScreenOutput())
DrawText(0, 0, Str(ElapsedMilliseconds()))
If IsThread(Thread)
DrawText(0, 20, "Ladevorgang")
Else
DrawText(0, 20, "Fertig")
EndIf
StopDrawing()
FlipBuffers()
ForEver