Seite 3 von 3

Re: Fenster schwarz nach Standby

Verfasst: 29.01.2022 16:47
von Re42
Vielen Dank für Deine Mühe mit dem Code-Beispiel, das werde ich mir gerne mal ansehen, wenn ich wieder Zugang zum WLAN habe oder ich tippe das einfach mal ab.
Ich Schreibe jetzt gerade wieder vom Handy aus

Es wäre ein gewaltiger Aufwand für mich, überall in meinem Code von ScreenOutput() auf SpriteOutput() umzustellen, allerdings waren nun auch gleich meine ersten Versuche dazu fehlgeschlagen, weil die RGB-Farbwerte der Boxen nicht mitgenommen wurden, die "Farbe" war schwarz. Erstmal Schluß damit. Danke nochmal an alle.

Re: Fenster schwarz nach Standby

Verfasst: 31.01.2022 01:15
von Re42
Ich mache da jetzt einfach kurzen Prozeß und lasse das Programm beenden, sobald der Energiesparmodus beendet wird. Es reicht ja dann ein einfacher Doppelklick, um das Programm neu zu starten. Das ist jetzt die einzig verbliebene Möglichkeit. Dieser Thread ist lehrreich für jeden Anfänger, der Wert darauf legt, daß seine Programme mit WindowedScreen() ordentlich aus dem Energiesparmodus zurück kommen. Das muß von der Pieke auf berücksichtigt werden.

Re: Fenster schwarz nach Standby

Verfasst: 31.01.2022 10:01
von HeX0R
Wenn Du magst, kannst Du Dein Projekt mal irgendwo hochladen, und ich schaue mir das an, gerne auch per PN, wenn Du nicht möchtest, dass es jeder sieht.
Weil eigentlich haben alle Beispiele in diesem Thread gezeigt, dass man eben nichts beachten muss bei einem WindowedScreen (ganz anders ist das in einem Fullscreen).

Re: Fenster schwarz nach Standby

Verfasst: 31.01.2022 21:11
von darius676
Probier mal dein Problem mit meinem Programm herbeizuführen <)

https://mark-dowen.itch.io/thorins-world-working-title

Es sollte egal sein ob du in Energiesparmodus wechselst, oder Fenster nach vorne holst, oder mit ALT+TAB durchschaltest usw.
das Program (Spiel) läuft und läuft und läuft.....

ich glaube, dass du das mit der Eventabfrage falsch verstehst? Wenn ich deine Schilderungen lese, habe ich den Verdacht, dein Programm verlässt eine EventSchleife erst sobald ein bestimmter Event eingetroffen ist, oder nur wenn bestimmte Events eintreffen, somit scheint von meinem Verständnis, dein Programm in einer Eventabfrage zu hängen (Kringel), dadurch wird der Rest (Screen) nicht aktualisiert, damit auch keine Grafikausgabe, oder aber dein Programm erreicht die notwendige Eventabfrage gar nicht und daher bleibt das Fenster (WindowedScreen()) mit einem "Kringel"...keine Rückmeldung, zurück.

Re: Fenster schwarz nach Standby

Verfasst: 01.02.2022 11:12
von Re42
Ich sehe das genauso: Es gibt prinzipiell und warum auch immer, Schwierigkeiten in der Event-Verarbeitung. Und das wird meßbar mit der Konstellation Repeat ... Until event = 0, weil dann plötzlich die Erstellung von OpenWindowedScreen() erst gar nicht angefangen werden kann. Der Wert 0 kommt aber rein, wenn ich das mit dem Repeat ... Until event = 0 nicht mache.

Bevor ich den Code abgespeckt hier einstelle, würde ich testhalber erst noch etwas umstellen wollen, was mir jetzt gerade noch einfällt. Ich melde mich wieder.

Re: Fenster schwarz nach Standby

Verfasst: 02.02.2022 17:04
von darius676
Wert 0 ? Also wartest du bis kein Ereignis in deinem Programm stattfindet? Ist dieser Zustand garantiert erreichbar?
Wenn auf Fenster/im Fenster gezeichnet wird ist meiner Meinung nach (bitte um Korrektur, falls falsch interpretiert) , immer ein Ereignis aktuell, aber nie "0" , du kannst "0" nie erreichen, daher "kringelt" das Programm, es kommt aus deiner Ereignisbehandlung nicht mehr raus.

Re: Fenster schwarz nach Standby

Verfasst: 02.02.2022 20:09
von HeX0R
Ein WindowEvent() resultiert in 0, wenn kein Event mehr in der Queue ist.
Genauso gibt ein WaitWindowEvent(5) eine 0 zurück, sobald der Timer (hier 5ms) greift (kann aber sein, dass sich das bei einer großen Anzahl an Events in der Queue auch mal verzögert... denke ich).
Nur WaitWindowEvent() sollte niemals 0 zurückgeben.

Re: Fenster schwarz nach Standby

Verfasst: 03.02.2022 02:45
von Re42
Ich bin gerade von Berufs wegen zwischendurch mal in meiner Zweitwohnung, wo ich jetzt meinen Laptop nicht dabei habe. Der blaue Kringel ist inzwischen weg, das lag daran, daß das Event = WaitWindowEvent(5) versehentlich ein Repeat zu hoch stand.

Das Problem mit dem Energiesparmodus ist ja eigentlich nicht so essenziell, aber trotzdem ist es ja von der Sache her ein totales Nogo, was da überhaupt passiert: Da setzt Windows einen schwarzen Screen ab und widersetzt setzt sich dann auch noch beharrlich mit aller Macht gegen jedweden Versuch, wieder einigermaßen normal aus dem Energiesparmodus herauskommen zu wollen. Mit "einigermaßen normal" meine ich in meinem Fall, dass es mir schon völlig ausreichen würde, wenn wenigstens der Startscreen wieder auf dem Monitor wäre und ich dann das Programm wieder so bedienen könnte, als wäre es gerade frisch gestartet.

Ich will hier mal grob beschreiben, wie mein Programm aufgebaut ist:

a) Inits für Sprites, Maus, Keyboard usw.
b) Loadsounds(), Loadsprites()
c) OpenWindow(), OpenWindowedScreen()
d) Zeichnen der Programm-Oberfläche auf dem WindowedScreen() (ScreenOutput())
e) 1. Repeat-Schleife, gefolgt von 2. Repeat-Schleife, genau wie im PB-Beispiel zu WindowedScreen()
f) Sub-Routinen nach dem End.

Ich hatte inzwischen auch ein winziges abgespecktes Programm gemäß dem obigen Aufbau erstellt, um Fehler ausschließen zu wollen, die sich vielleicht irgendwo in meinem eigentlichen Code verbergen, aber auch so konnte ich die Rückkehr aus dem Energiesparmodus nicht bewältigen.

Wenn mir hier jetzt mal jemand anhand eines kleinen Beispiels zeigen könnte, wie man gemäß dem obigen Code-Aufbau die Rückkehr aus dem Energiesparmodus bewältigt, sage ich jetzt schonmal dafür DANKE! Das Problem dabei ist ja, daß der Ausgangs-Screen nicht dauernd neu gezeichnet werden kann, denn dann wäre ja alles sofort wieder weg, was danach dann noch auf den Screen gezeichnet wird, es sei denn, man würde einen Heidenaufwand betreiben, zum Nachteil der Performance, weil das ja alles Rechenzeit kostet. Eventuell kann man mit meinem Programmtyp ja auch in der Tat nicht aus dem Energiesparmodus zurück kommen und vielleicht läuft es ja nun auch genau auf diese Abklärung hinaus, oder auch nicht, ich bin gespannt.

Re: Fenster schwarz nach Standby

Verfasst: 03.02.2022 09:12
von HeX0R
Du kannst nicht erwarten, dass sich jetzt jemand hinsetzt und mit diesen Angaben ein Beispiel für Dich erstellt.
Wenn Du doch so ein "winziges abgespecktes Programm" erstellt hast, das den selben Effekt zeigt, wieso stellst Du das nicht einfach hier rein?

>>Das Problem dabei ist ja, daß der Ausgangs-Screen nicht dauernd neu gezeichnet werden kann
Genau das muss man aber in einem Screen machen!
Wenn Du das nicht machst, dann hast Du einen konzeptionellen Fehler und weder Windows noch PB kann irgendwas dafür!

Nix für Ungut, aber ich bin dann hier raus.
Ich bekomme Kopfschmerzen von zuvielen Erklärungen ohne handfesten Code.

Re: Fenster schwarz nach Standby

Verfasst: 03.02.2022 10:26
von Re42
Damit ist meine Frage doch beantwortet. Es geht so also überhaupt nicht mit meinem Programm. Ich kann den Screen nicht ständig neu zeichnen, weil genau das dem Programm zuwiderlaufen würde. Evtl. geht es ja mit Canvas, das werde ich im kleinen mal testen. Wie gesagt, habe ich meinen Laptop jetzt in meiner Zweitwohnung gar nicht mit und habe hier auch ohnehin kein Internet. Danke nochmals an alle.