FlipBuffers() bleibt manchmal minutenlang hängen
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
ne sorry... war nich bös gemeint, ich wußte halt nicht wie viel dir bewusst ist.
ist wohl eine komplexere geschichte....
klingt fast, als ob dein proggi alle globalen events in die queue packt,
und nur eins pro zehntel sekunde verarbeiten kann,
sodass wenn man was anderes macht, tausend events in der queue hängen,
und das eben tausend durchläufe braucht, bis es wieder ansprechbar ist....
aber das ist eigentlich illusorisch, deine event-queu so aufzublasen,
da musst du schon echt mist baun mit der API...
ist wohl eine komplexere geschichte....
klingt fast, als ob dein proggi alle globalen events in die queue packt,
und nur eins pro zehntel sekunde verarbeiten kann,
sodass wenn man was anderes macht, tausend events in der queue hängen,
und das eben tausend durchläufe braucht, bis es wieder ansprechbar ist....
aber das ist eigentlich illusorisch, deine event-queu so aufzublasen,
da musst du schon echt mist baun mit der API...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Konnt's mir nicht verkneifen, nochmal einen letzten Blick rein zu werfen.
Doch es verarbeitet alle Events korrekt, denn es reagiert noch auf Esc, schreibt in die Zwischenablage "kurz vor FlipBuffers()", ruft dann FlippBuffers() auf und bleibt hängen. Dass "kurz vor FlipBuffers()" in der Zwischenablage steht, kann man durch Einfügen in einen Editor sehen. Das war also die letzte Aktion, die als Reaktion auf Esc ausgeführt wurde.
Doch es verarbeitet alle Events korrekt, denn es reagiert noch auf Esc, schreibt in die Zwischenablage "kurz vor FlipBuffers()", ruft dann FlippBuffers() auf und bleibt hängen. Dass "kurz vor FlipBuffers()" in der Zwischenablage steht, kann man durch Einfügen in einen Editor sehen. Das war also die letzte Aktion, die als Reaktion auf Esc ausgeführt wurde.
Gruß
Markus
Markus
kaeru hatte recht:
ich denke mal: WaitWindowEvent() = WaitWindowEvent(0)
ein timeout von 1 müßte aber auch reichen
Code: Alles auswählen
InitSprite()
Breite=300 : Hoehe=200
OpenWindow(0,0,0,Breite,Hoehe,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,Breite,Hoehe,0,0,0)
AddKeyboardShortcut(0,#PB_Shortcut_Escape,#PB_Shortcut_Escape)
Repeat : Event=WaitWindowEvent(10) ;<================
If Event=#PB_Event_Menu : Taste=EventMenu()
If Taste=#PB_Shortcut_Escape
SetClipboardText("kurz vor FlipBuffers()"+Chr(10)) ;letzte Aktion vor dem Hänger in Zwischenablage protokollieren
FlipBuffers()
SetClipboardText("nach FlipBuffers()"+Chr(10))
If MessageRequester("", "Programm beenden?", #MB_YESNO|#MB_ICONQUESTION|#MB_DEFBUTTON2)=#IDYES
End
EndIf
EndIf
EndIf
Until Event=#PB_Event_CloseWindow
Endein timeout von 1 müßte aber auch reichen
pb 4.51 win7 64
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22