FlipBuffers() bleibt manchmal minutenlang hängen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Gimbly
Beiträge: 169
Registriert: 28.12.2005 14:26
Wohnort: NRW

Beitrag von Gimbly »

@Riacon: es hängt nur, wenn man lange Zeit keine Eingabe macht, es z.B. nur im Hintergrund mit läuft, während man im Vordergrund z.B. surft und es dann wieder nach vorne holt und dann Esc drückt.
Gruß
Markus
Riacon
Beiträge: 61
Registriert: 21.01.2008 09:40

Beitrag von Riacon »

Gimbly hat geschrieben:@Riacon: es hängt nur, wenn man lange Zeit keine Eingabe macht, es z.B. nur im Hintergrund mit läuft, während man im Vordergrund z.B. surft und es dann wieder nach vorne holt und dann Esc drückt.
wie lange ca.?
pb 4.51 win7 64
Gimbly
Beiträge: 169
Registriert: 28.12.2005 14:26
Wohnort: NRW

Beitrag von Gimbly »

Viertel Stunde. Kann auch länger dauern - wirklich mysteriös das Ganze.
Gruß
Markus
Riacon
Beiträge: 61
Registriert: 21.01.2008 09:40

Beitrag von Riacon »

ca. 5-10min
das teil hängt.
in der titelzeile steht "keine rückmeldung"
escape functioniert nicht. bei closebutton bekomm ich die alternative sofort beenden oder nochmal warten.

das teil reagiert nicht (genügend) auf die windowsmessages
pb 4.51 win7 64
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Gimbly
Beiträge: 169
Registriert: 28.12.2005 14:26
Wohnort: NRW

Beitrag von Gimbly »

Muss mich für heute leider abmelden, da ich meine Tochter vom Flughafen abholen muss.

Erstmal vielen Dank für eure Mithilfe!
Gruß
Markus
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

gute Fahrt!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Gimbly
Beiträge: 169
Registriert: 28.12.2005 14:26
Wohnort: NRW

Beitrag von Gimbly »

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.
Gruß
Markus
Riacon
Beiträge: 61
Registriert: 21.01.2008 09:40

Beitrag von Riacon »

kaeru hatte recht:

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 

End
ich denke mal: WaitWindowEvent() = WaitWindowEvent(0)
ein timeout von 1 müßte aber auch reichen
pb 4.51 win7 64
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ein timeout von 10 ist immer ausreichend.
normalerweise läuft der desktop auf 60-80 fps, das bedeutet 16.6 bis 12.5 ms per frame.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten