amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Screens schliessen [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

23.05.2005, 15:31 Uhr

DieterG
Posts: 164
Nutzer
Eine einfache aber doch wichtige Frage für mich.
Ich will mittels einer 68k-Anwendung einen Screen schliessen.
Doch sobald ich CloseScreen aufrufe, crashed der AmigaOne dermassen, das garnichts mehr geht.
Auf einem 68k-Amiga geht das ganze reibungslos, wie eigentlich auch nicht anders zu erwarten.
Kein hit kein garnichts, es geht dann einfach.

Um in dem Thema weiterzuzkommen habe ich auch probiert, einen eigenen Task zu erzeugen, diser öffnet und schliesst dann seinen Screen.
Doch wieder dasselbe, sobald der tochtertask seinen screen schliessen will, crashed der ganze AmigaOne,
68k geht wieder.
Zur zeit lasse ich unter AOS4 den Screen einfach offen, und schiebe ihn nur mittels ScreenToBack nach hinten.

An so sachen wie lockiBase oder gar Forbit/Permit habe ich schon probiert, doch immer dasselbe.

Kann es sein, das das AOS4 in der jetzigen version da ein Problem hat ?
Oder muss einfachn noch etwas anderes beachtet werden, wo ich jetzt nicht drauf komme ?


[ - Antworten - Zitieren - Direktlink - ]

23.05.2005, 15:52 Uhr

thomas
Posts: 7680
Nutzer

Also du meinst

struct Screen *screen = OpenScreenTags (....);

/* hier macht dein Programm irgendwas */


CloseScreen (screen); <--- das crasht ???

Kann ich mir nicht vorstellen. Da muß noch etwas anderes an deinem Programm faul sein. Kannst du mal ein vollständiges laufendes Beispiel schreiben und hier posten. Meistens fällt beim Schreiben des Beispiels schon der Fehler auf.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

25.05.2005, 15:08 Uhr

Micha1701
Posts: 938
Nutzer
Hi!

Ich hatte auch lange Zeit das Problem, daß mein Prog beim beenden und Screen schließen abgeschmiert ist. Auf 68k liefs immer einwandfrei auf OS4 nicht.

Es lag dann mal wieder an einem Reihenfolge Problem. Nicht der CloseScreen() wars sondern ein Befehl, der direkt dahinter kam (und auf Speicher verwies, der mir nicht mehr gehörte). Eventuell alloziierst Du auch ein wenig mehr als nur einen Screen und gibst das ganze dann in einer falschen Reihenfolge wieder frei. Daher der Fehler?
--
:boing: Micha :boing:

Look at my HPs:
http://www.lanser-online.de.vu

http://www.RealmsofPower.de.vu



[ - Antworten - Zitieren - Direktlink - ]

25.05.2005, 22:08 Uhr

DieterG
Posts: 164
Nutzer
Zitat:
Original von Micha1701:
Hi!

Ich hatte auch lange Zeit das Problem, daß mein Prog beim beenden und Screen schließen abgeschmiert ist. Auf 68k liefs immer einwandfrei auf OS4 nicht.

Es lag dann mal wieder an einem Reihenfolge Problem. Nicht der CloseScreen() wars sondern ein Befehl, der direkt dahinter kam (und auf Speicher verwies, der mir nicht mehr gehörte). Eventuell alloziierst Du auch ein wenig mehr als nur einen Screen und gibst das ganze dann in einer falschen Reihenfolge wieder frei. Daher der Fehler?
--
:boing: Micha :boing:

Look at my HPs:
http://www.lanser-online.de.vu


http://www.RealmsofPower.de.vu


eher nicht. Das habe ich alles schon überprüft.
Wenn ich also meine Anwendung den Screen nur nach hinten legen lasse, so das der Screen aufbleibt, dann meinen task beende und wirklich nichts mehr auf den Screen zugreift,
dann irgendwann mal den screen schliesse, der selbe Crash kommt.

Das seltsame ist allerdings, das auch nach dem offenlassen des Screens, also nur das "Screen2Back"
der screen nicht mal von Scout geschlossen werden kann ohne abzustürzen.
Ähnliches passiert aber manchmal auch bei anderen Anwendungen.
Z.B. ASM-Pro beim beenden,
Filer, wenn der 2.Screen geöffnet wurde (was zum Beispiel für den Textanzeiger passiert), und dieser wieder gschlossen wird, auch Turbocalc oder Wordworth hat manchmal diesen Effekt.
daher vermute ich doch eher ein problem beim schliessen des Screens grundsätzlich. Hauptsächlich passiert das auf Screens ,die kein Fenster geöffnet haben, oder besser gesagt, niemals eins offen hatten.
Diverse Screenblanker habe das Problem auch.



@thomas:

Wenns Dir nichts ausmacht, das es 68k-AssemblerCode ist, copiere ich hier gerne mal eine einfache variante rein.
Aber probier einfach mal selber: Öffne einen Screen,hier mittels openscreentaglist() ohne besondere Tags,
warte ein bischen, und versuche dann den Screen wieder zu schliessen.
In PPC-Code geht es, in 68k-Code crashed das AOS4 einfach ohne jegliche Meldung.


[ - Antworten - Zitieren - Direktlink - ]

25.05.2005, 22:29 Uhr

thomas
Posts: 7680
Nutzer

Hab's ausprobiert. Funktioniert ohne Probleme, egal ob PPC oder 68K.

code:
#include <proto/intuition.h>
#include <proto/dos.h>
int main (void)
{
struct Screen *scr;
if (scr = OpenScreenTags (NULL,SA_LikeWorkbench,TRUE,TAG_END))
   {
   Delay (50);
   CloseScreen (scr);
   }
return (0);
}



Auf dem A1 in Assembler zu programmieren finde ich den größten Blödsinn, den es gibt, gerade, wenn man das selbe Programm für 68K und PPC schreiben will.

Bei C kannst du einfach den gleichen Quelltext mit dem anderen Compiler umwandeln. Bei Assembler mußt du das ganze Programm neu schreiben.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

26.05.2005, 09:04 Uhr

gni
Posts: 1106
Nutzer
Zitat:
thomas:
Bei C kannst du einfach den gleichen Quelltext mit dem anderen Compiler umwandeln. Bei Assembler mußt du das ganze Programm neu schreiben.

Er kann doch verschiedene Assembler benutzen ;-) Zurück zum Thema: es ist verwunderlich, das andere Programme bei ihm auch Probleme mit Screens haben. Eventuell ist das Problem ja ein Patch (Hack)?

[ - Antworten - Zitieren - Direktlink - ]

28.05.2005, 09:36 Uhr

BenderIRC
Posts: 7
Nutzer
Du scheinst VORHER etwas illegal an den Screen oder ein Window
auf dem Screen weitergereicht zu haben. Z.b. nen Font
der einfach in die Struktur geschrieben wird ohne die OS Funktion
zunehmen. Möglich wäre auch, daß Du selbst was freigibst,
was beim CloseScreen nochmal freigegeben werden soll -> Crash

Dein Programm wäre hilfreich.

[ - Antworten - Zitieren - Direktlink - ]

02.06.2005, 12:19 Uhr

Amigalien
Posts: 63
Nutzer
...oder aber er macht eine printf(""); Ausgabe (z.B. für einen Test) ohne abschließenden \ n. Wenn ich das Prog dann von WB starte, dann kommt zumindest bei mir (gcc 3.x) beim Beenden der GR.

[ Dieser Beitrag wurde von Amigalien am 02.06.2005 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Screens schliessen [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2022 by amiga-news.de - alle Rechte vorbehalten.
.