flipbuffers()
flipbuffers()
wenn ich z.B. bei den unten geposteten Programmen <strg><alt><del> drücke hängt sich deren Anzeige unwiderrufbar auf. die Programme selbst scheinen weiter zu laufen.
http://forums.purebasic.com/german/view ... 02bd34f3d9
ich tippe auf ein Problem zwischen flipbuffers() und meinem System.
Ich habe:
Win 7 64bit
DirectX 11
Pb 4.51 (64bit)
http://forums.purebasic.com/german/view ... 02bd34f3d9
ich tippe auf ein Problem zwischen flipbuffers() und meinem System.
Ich habe:
Win 7 64bit
DirectX 11
Pb 4.51 (64bit)
- PureLust
- Beiträge: 1145
- Registriert: 21.07.2005 00:02
- Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
- Wohnort: am schönen Niederrhein
Re: flipbuffers()
Das mit dem Flipbuffers() ist ein leidiges Thema.
Versuch doch mal das hier, ob das bei Dir ohne Probleme läuft.
Ich hatte mich damals sehr mit dem FlipBuffers-Problem auseinander gesetzt und meine, eine Lösung gefunden zu haben. Zumindest unter WinXP hatte ich das Problem im Griff.
Was genau ich damals getrickst hatte, damit es (zumindest unter WinXP) stabil läuft weiss ich nicht mehr so genau (war auf jeden Fall viel Tüftelei).
Wenn es nun aber auch noch bei Dir unter Win7 stabil läuft, schaue ich gerne mal, ob ich noch irgendwo den alten Source finde.

Versuch doch mal das hier, ob das bei Dir ohne Probleme läuft.
Ich hatte mich damals sehr mit dem FlipBuffers-Problem auseinander gesetzt und meine, eine Lösung gefunden zu haben. Zumindest unter WinXP hatte ich das Problem im Griff.
Was genau ich damals getrickst hatte, damit es (zumindest unter WinXP) stabil läuft weiss ich nicht mehr so genau (war auf jeden Fall viel Tüftelei).
Wenn es nun aber auch noch bei Dir unter Win7 stabil läuft, schaue ich gerne mal, ob ich noch irgendwo den alten Source finde.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
- Grillmeister
- Beiträge: 23
- Registriert: 17.04.2008 09:54
- Wohnort: Hannover
- Kontaktdaten:
Re: flipbuffers()
Moin !
Ich hatte das gleiche Problem und hab`s mit GetActiveWindow() gelöst.
Hier mal der Code von STARGÅTE quick & dirty editiert:
Ich hatte das gleiche Problem und hab`s mit GetActiveWindow() gelöst.
Hier mal der Code von STARGÅTE quick & dirty editiert:
Code: Alles auswählen
InitSprite()
xP = 400
yP = 400
xP2 = xP/2
yP2 = yP/2
OpenWindow(0, 0, 0, xP+200, yP, "SCREEN", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 200, 0, xP, yP, 0, 0, 0)
screenon = 1
CreateSprite(1, xP, yP)
Phi1.f = 1
Phi1_.f = 0
Phi1__.f = 0
Phi2.f = -2
Phi2_.f = 0
Phi2__.f = 0
l1.f = 100
l2.f = 100
m1.f = 10
m2.f = 10
g.f = 9.81/70
TextGadget(110, 10, 10, 80, 20, "Masse 1") : StringGadget(111, 100, 10, 80, 20, StrF(m1))
TextGadget(120, 10, 40, 80, 20, "Länge 1") : StringGadget(121, 100, 40, 80, 20, StrF(l1))
TextGadget(130, 10, 70, 80, 20, "Phi 1") : StringGadget(131, 100, 70, 80, 20, StrF(Phi1))
TextGadget(210, 10, 110, 80, 20, "Masse 2") : StringGadget(211, 100, 110, 80, 20, StrF(m2))
TextGadget(220, 10, 140, 80, 20, "Länge 2") : StringGadget(221, 100, 140, 80, 20, StrF(l2))
TextGadget(230, 10, 170, 80, 20, "Phi 2") : StringGadget(231, 100, 170, 80, 20, StrF(Phi2))
ButtonGadget(0, 10, 300, 180, 20, "Simulation starten")
Repeat
Delay(5)
If GetActiveWindow() = 0
If screenon = 0
If OpenWindowedScreen(WindowID(0), 200, 0, xP, yP, 0, 0, 0)
CreateSprite(1, xP, yP)
screenon = 1
EndIf
EndIf
Else
screenon = 0
EndIf
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case 0
UseBuffer(1)
ClearScreen(0)
UseBuffer(-1)
Phi1_.f = 0
Phi1__.f = 0
Phi2_.f = 0
Phi2__.f = 0
Phi1 = ValF(GetGadgetText(131))
Phi2 = ValF(GetGadgetText(231))
x1_ = 0
Case 111
m1 = ValF(GetGadgetText(111))
Case 121
l1 = ValF(GetGadgetText(121))
Case 131
Phi1 = ValF(GetGadgetText(131))
Case 211
m2 = ValF(GetGadgetText(211))
Case 221
l2 = ValF(GetGadgetText(221))
Case 231
Phi2 = ValF(GetGadgetText(231))
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case 0
EndSelect
EndSelect
Until Not Event
ClearScreen(0)
For n = 1 To 10
Phi1__ = -g/l1*Sin(Phi1) -m2/(m1+m2)*(l2/l1)*(Cos(Phi2-Phi1)*Phi2__+Sin(Phi1-Phi2)*Phi2_*Phi2_)
Phi2__ = -g/l2*Sin(Phi2) -(l1/l2)*(Cos(Phi2-Phi1)*Phi1__-Sin(Phi1-Phi2)*Phi1_*Phi1_)
Next
Phi1_ + Phi1__
Phi1 + Phi1_
Phi2_ + Phi2__
Phi2 + Phi2_
x1 = xP2 + Sin(Phi1)*l1
y1 = yP2 + Cos(Phi1)*l1
x2 = x1 + Sin(Phi2)*l2
y2 = y1 + Cos(Phi2)*l2
If x1_
StartDrawing(SpriteOutput(1))
LineXY(x1, y1, x1_, y1_, $5050A0)
LineXY(x2, y2, x2_, y2_, $50A000)
StopDrawing()
EndIf
x1_ = x1
y1_ = y1
x2_ = x2
y2_ = y2
DisplaySprite(1,0,0)
StartDrawing(ScreenOutput())
DrawingMode(1)
LineXY(xP2, yP2, x1, y1, $808080)
Circle(x1, y1, 5, $A0A0F0)
LineXY(x1, y1, x2, y2, $808080)
Circle(x2, y2, 5, $A0F0A0)
DrawText(0, 50, StrF(E), $FFFFFF)
StopDrawing()
FlipBuffers()
ForEver
Zuletzt geändert von Grillmeister am 13.11.2010 14:14, insgesamt 1-mal geändert.
Re: flipbuffers()
@PureLust
nice. aber sobald ich den Affengriff mache, ist das Fenster weis
@Grillmeister
das klappt mit der Meldung "windowed screen neu gestartet"
nice. aber sobald ich den Affengriff mache, ist das Fenster weis
@Grillmeister
das klappt mit der Meldung "windowed screen neu gestartet"
pb 4.51 win7 64
- Grillmeister
- Beiträge: 23
- Registriert: 17.04.2008 09:54
- Wohnort: Hannover
- Kontaktdaten:
Re: flipbuffers()
Die Meldung kommt ja nur um anzuzeigen, dass es geklappt hat 
Wenn Du das
und
raus nimmst, gibt es logischerweise keine Meldung mehr 
Schönes Wochenende !

Wenn Du das
Code: Alles auswählen
Debug "Windowed Screen neu gestartet"
Code: Alles auswählen
Debug "Pause"

Schönes Wochenende !

- PureLust
- Beiträge: 1145
- Registriert: 21.07.2005 00:02
- Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
- Wohnort: am schönen Niederrhein
Re: flipbuffers()
Ah, ok ... im Windowed-Mode hatte ich's eben nicht ausprobiert. Hierbei bleibt's unter Win7 tatsächlich dann weis.Riacon hat geschrieben:@PureLust
nice. aber sobald ich den Affengriff mache, ist das Fenster weis
Ich hatte es eben nur mal im FullScreen-Mode getestet (einfach Teste "f" für den FullScreen-Mode drücken).
Im FullScreen-Mode funktionierte das problemlos.
@Grillmeister:
Da dein Beispiel die anfallenden Events im "Pause"-Modus nicht verarbeitet, hängt es sich nach einiger Zeit dann wegen Event-Überflutung auf (keine Rückmeldung).
Das mit dem Delay(500) solltest Du dir also nochmal überlegen.

[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
- Grillmeister
- Beiträge: 23
- Registriert: 17.04.2008 09:54
- Wohnort: Hannover
- Kontaktdaten:
Re: flipbuffers()
Stimmt - war ja auch nur mal so nebenbei zusammengeklatscht.@Grillmeister:
Da dein Beispiel die anfallenden Events im "Pause"-Modus nicht verarbeitet, hängt es sich nach einiger Zeit dann wegen Event-Überflutung auf (keine Rückmeldung).
Das mit dem Delay(500) solltest Du dir also nochmal überlegen.

Habe den Code oben noch mal angepasst und nu sollte es klappen ohne dass sich das Programm weghängt.
