Autor Thema: AES um komplettes Redraw bitten  (Gelesen 17927 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.801
  • Rock'n'Roll is the thing - Jerry Lee is the king!
AES um komplettes Redraw bitten
« am: Di 16.04.2013, 17:33:21 »
Hallo zusammen,

gibt es eine saubere Möglichkeit, dem AES mitzuteilen, daß bitte sämtliche Teile des Bildschirms neugezeichnet werden sollen, d.h. Menuleiste + Desktop + alle Fenster samt Inhalte, inklusive aller laufenden Programme bei Multitasking?

Grüße,
ssb
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: AES um komplettes Redraw bitten
« Antwort #1 am: Di 16.04.2013, 18:07:18 »
gibt es eine saubere Möglichkeit, dem AES mitzuteilen, daß bitte sämtliche Teile des Bildschirms neugezeichnet werden sollen, d.h. Menuleiste + Desktop + alle Fenster samt Inhalte, inklusive aller laufenden Programme bei Multitasking?
Das Problem ist die Menüleiste. Dort einen Redraw zu erzwingen ist meiner Erinnerung nach nicht direkt möglich. Für den Rest ist ein

form_dial(FMD_FINISH, ...)

mit den Außenmaßen des Bildschirms ausreichend (und wahrscheinlich das einfachste), um einen kompletten Redraw zu veranlassen (man tut so, als ob man gerade eine Dialogbox mit den Maßen des Desktops geschlossen hätte).

Was die Menüleiste angeht: wenn die Anwendung eine eigene Menüleiste hat, kann sie die als Workaround kurz ab- und wieder anmelden,

menu_bar(menu, 0);
menu_bar(menu, 1);


dann wird die auch neugezeichnet.

Gruß,
Markus
And remember: Beethoven wrote his first symphony in C

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: AES um komplettes Redraw bitten
« Antwort #2 am: Di 16.04.2013, 18:09:01 »
Kann man nicht auch die Bildschirm - Auflösung mittels VDI ermitteln und dann diesem Bereich eine WM_REDRAW Nachricht schicken?

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: AES um komplettes Redraw bitten
« Antwort #3 am: Di 16.04.2013, 18:12:19 »
Kann man nicht auch die Bildschirm - Auflösung mittels VDI ermitteln und dann diesem Bereich eine WM_REDRAW Nachricht schicken?

Das kann man auch, muß das dann aber für jede laufende Applikation machen, damit alle Fensterinhalte neu gezeichnet werden. Der Menüleiste nützt es nicht, die AES ignorieren den Bereich geflissentlich in der egoistischen Annahme, daß da niemand rumzumalen hat außer ihnen selbst.
And remember: Beethoven wrote his first symphony in C

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.801
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Re: AES um komplettes Redraw bitten
« Antwort #4 am: Di 16.04.2013, 19:57:30 »
Und was ist mit Anwendungen, die nicht das AES benutzen, ergo TOS-Applikationen sind?
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: AES um komplettes Redraw bitten
« Antwort #5 am: Di 16.04.2013, 20:07:03 »
Und was ist mit Anwendungen, die nicht das AES benutzen, ergo TOS-Applikationen sind?

TOS-Applikationen sollten in Multitasking-Umgebungen in der Konsole laufen, sonst sind sie keine ;).

Alle Anwendungen können AES-Aufrufe durchführen, wenn sie sich richtig anmelden.
And remember: Beethoven wrote his first symphony in C

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.801
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Re: AES um komplettes Redraw bitten
« Antwort #6 am: Di 16.04.2013, 20:10:21 »
Meine TOS-Anwendungen schalten halt auf Singletasking mit Fullscreen in anderer Auflösung um. Bei der Rückkehr zum Desktop z.B. unter MinT tut alles, nur der Bildschirm bleibt weiß. Deswegen würd ich da gerne einen Redraw triggern. Eigenen Bildschirmspeicher zu benutzen macht irgendwie keinen Unterschied oder ich hab das konkrete Problem noch nicht erkannt :(
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

Offline Arthur

  • Benutzer
  • Beiträge: 10.309
  • Mein Atari erinnert mich an die gute alte Zeit..
Re: AES um komplettes Redraw bitten
« Antwort #7 am: Di 16.04.2013, 20:13:44 »
gibt es eine saubere Möglichkeit, dem AES mitzuteilen, daß bitte sämtliche Teile des Bildschirms neugezeichnet werden sollen, d.h. Menuleiste + Desktop + alle Fenster samt Inhalte, inklusive aller laufenden Programme bei Multitasking?
Das Problem ist die Menüleiste. Dort einen Redraw zu erzwingen ist meiner Erinnerung nach nicht direkt möglich. Für den Rest ist ein

form_dial(FMD_FINISH, ...)



mit den Außenmaßen des Bildschirms ausreichend (und wahrscheinlich das einfachste), um einen kompletten Redraw zu veranlassen (man tut so, als ob man gerade eine Dialogbox mit den Maßen des Desktops geschlossen hätte).

Was die Menüleiste angeht: wenn die Anwendung eine eigene Menüleiste hat, kann sie die als Workaround kurz ab- und wieder anmelden,

menu_bar(menu, 0);
menu_bar(menu, 1);


dann wird die auch neugezeichnet.

Gruß,
Markus

Klasse erklärt. Danke

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: AES um komplettes Redraw bitten
« Antwort #8 am: Di 16.04.2013, 21:47:12 »
Meine TOS-Anwendungen schalten halt auf Singletasking mit Fullscreen in anderer Auflösung um. Bei der Rückkehr zum Desktop z.B. unter MinT tut alles, nur der Bildschirm bleibt weiß. Deswegen würd ich da gerne einen Redraw triggern. Eigenen Bildschirmspeicher zu benutzen macht irgendwie keinen Unterschied oder ich hab das konkrete Problem noch nicht erkannt :(

Du brauchst keine TOS-Anwendungen zu schreiben.

Die Endung .TOS (und .TTP) wurde eigentlich nur für den Singletasking-Desktop erfunden, damit der weiß, daß er die Maus ausschalten, den Bildschirm löschen, Accessories schlafen legen und den Cursor einschalten muß (und am Programmende andersrum).

Im Multitasking-Desktop solltest Du IMHO all das lieber selbst tun (und mußt dich dazu - mit dem sicherlich bekannten Prozedere - beim GEM anmelden). Dann kannst Du auch gleich meinen Hinweis von oben einbauen.
And remember: Beethoven wrote his first symphony in C

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.801
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Re: AES um komplettes Redraw bitten
« Antwort #9 am: Mi 17.04.2013, 17:55:11 »
Kann ich mich temporär mit ein paar Zeilen und if aussenrum anmelden und abmelden oder nur fürs ganze? Bei letzterem steige ich aus, es geht halt prinzipiell um hardwarenahe Programme.
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: AES um komplettes Redraw bitten
« Antwort #10 am: Mi 17.04.2013, 20:10:20 »
Kann ich mich temporär mit ein paar Zeilen und if aussenrum anmelden und abmelden oder nur fürs ganze? Bei letzterem steige ich aus, es geht halt prinzipiell um hardwarenahe Programme.

Da spricht überhaupt nichts dagegen. Es steht auch nirgends geschrieben, daß die GEM-Anmeldung unbedingt am Anfang und die Abmeldung am Ende stehen muß. Um ein appl_init(), v_opnvwk() und ein paar weitere Aufrufe wirst Du allerdings nicht rumkommen.

Aber keine Angst, nur weil ein Programm ein paar GEM-Aufrufe macht, ist es noch lange keine GEM-Applikation und anstecken kann man sich auch nicht ;).
And remember: Beethoven wrote his first symphony in C

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.801
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Re: AES um komplettes Redraw bitten
« Antwort #11 am: Mi 17.04.2013, 20:43:59 »
Da ich da keinerlei Erfahrung mit habe, würde ich mich über eine genaue Befehlssequenz freuen, die das obige tut.

Ich wollte das ganze mit einem WENN MINT VIA COOKIE ERKANNT kapseln, so daß es unter reinem TOS nicht durchlaufen wird. Und sprachneutral, weil ich das später in m68k, in C und in GFABASIC verwenden würde ;)
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: AES um komplettes Redraw bitten
« Antwort #12 am: Do 18.04.2013, 00:20:40 »
Soweit ich weiss gibt es in MiNT Leider keinen System-Call um das Programm in den Single-Tasking mode zu versetzen, es gibt nur den Trick das Program mit Super() rechten auszuführen.

Das ist also schonmal Prinzipiell fehlende in MiNT, und schade das sich ein Programm mit
sowas herumschlagen muss...

Eine Idee hätte ich noch: In den Sourcen von SDL schauen wie dort der switch in den Fullscreen Modus gehandhabt wird, bzw. das beenden dieses Modus (was sicherlich schwerer zu finden ist als das intitialisieren des Fullscreen Modus =) ).

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.801
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Re: AES um komplettes Redraw bitten
« Antwort #13 am: Do 18.04.2013, 18:02:03 »
Mein Verdacht fällt aktuell auf Setscreen (XBIOS 5), welches ich am Falcon benutze, da ich mit "Videl Register von Hand retten" irgendwie bislang immer Dreckeffekte produziert habe.

Ich bin mir nicht sicher, habe aber den Verdacht, daß Setscreen beim Setzen der Auflösung den Bildschirm löscht.

Bzgl Singletask mache ich halt hauptsächlich Super() und unter C einen eigenen IKBD Handler einklinken, bzw. den alten zumindest ignorieren und von Hand pollen. Auch ein eigener VBL hilft....

Bis auf den gelöschten Bildschirm ist es auf dem Falcon ja auch eigentlich super lauffähig, temporär Singletask mit gewünschter Auflösung, all das klappt wie gewollt. Nur die Rückkehr auf die Desktopauflösung halt nicht.

I.d.R. schalte ich halt auf ST-LOW oder TC, und in Zukunft vllt mal auf 320x240 mit 8bpp.
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee