Sujet : Re: Défauts de conception d'applications GEM
De : ol.google (at) *nospam* lutece.net (OL)
Groupes : fr.comp.sys.atariDate : 30. Nov 2024, 23:40:53
Autres entêtes
Organisation : Nemoweb
Message-ID : <6fOc69DcI-wyaSazWqGcBkZWkV4@jntp>
References : 1 2
User-Agent : Nemo/1.0
Le 30/11/2024 à 20:29, Pierre TON-THAT a écrit :
Plop,
Le 30/11/2024 à 19:05, OL a écrit :
Depuis le temps que je peste contre des programmes qui font des choses très étranges au niveau de l'AES, je me dis plutôt que de juste trouver des solutions dans MyAES, je pourrais aussi consigner tous les trucs inutiles ou foireux que je peux voir dans un document.
Typiquement un truc comme les applications qui font un form_dial(FMD_START) mais ne font jamais un form_dial(FMD_FINISH)
Heu... Je sens que va falloir faire une revue totale de mon code et updater toute mes productions. Merci pour le taf supplémentaire :)
Sinon, le form_dial(FMD_FINISH) tout seul, c'est bien pour provoquer un redraw d'une partie de l'écran (le plus souvent au startup, quand on installe le menu avec) sans avoir à le faire par Tube GEM.
D'une manière générale, quand on ouvre/requiert une ressource, on la ferme/libère. Si c'est pour poukaver des logiciels non compatibles sur les AES récents, alors qu'ils tournaient bien sur l'AES de l'époque, autant que ce soit sur des trucs maintenus, sinon c'est un peu dénigrer le travail de gens absents.
Tchuss,
L'idée c'est pour ceux qui programment encore, je ne vois pas trop l'intérêt pour les anciens softs, de toute façon la plupart des trucs pas super clean (on ne savait pas, la doc est souvent interprétable à coup d'essai je pense à un truc de dingue comme la gestion des clicks souris, c'est un truc de barjot pour celui qui refait un AES et pourtant sur le papier c'est super simple mais quand on fait tourner les softs pas un ne fait pareil, tu as toujours quelques récalcitrants alors on bricole et on rebricole). Dans des softs pourtant très bien écrits et débuggué comme Thing tu trouves parfois des dérapages, non pas que cela ne marche pas et soit faux mais tu ne comprends pas pourquoi l'interface est lente ou marche de manière maladroite et là tu as le code et tu te dis mais pourquoi ils ont fait comme cela c'est ultra compliqué alors tu retires systématiquement les trucs qui ne servent à rien et tout à coup tout devient fluide, pas seulement sur les aes modernes mais sur un bon vieux TOS aussi, dans Thing dans les modifications c'est à 80% du code retiré dans les modifications faites. Remarques quand je code MyAES aujourd'hui souvent c'est plus de la simplification que de l'ajout et dieu sait à quel point il y aurait encore à faire, pour transformer un truc pataud en un truc efficace.
form_dial(FMD_FINISH) peut être utilisé seul pour forcer le redraw, il n'y a pas de soucis là dedans, je l'utilise beaucoup en interne, form_dial(FMD_START) c'est une histoire complètement stupide, selon la doucumentation originale d'Atari : "Reserves screen space for the dialog box" Il y a donc la notion de réservation mémoire donc si on ne fait pas FMD_FINISH il y a un bloc qui est oublié quelque part, sauf qu'en fait le TOS ne fait strictement rien! donc form_dial(FMD_START) sans form_dial(FMD_FINISH) n'est pas franchement une erreur sauf par rapport à la documentation! Mais presque tous les programmes anciens qui n'utilisent pas les fenêtres pour dessiner leur boite de dialogue (ce qui n'est pas cool du tout sur les systèmes AES qui n'ont aucun moyen de faire de l'offscreen) le font (pour rien!) , alors si on réfléchi un peu cela peut être utile pour aider l'AES moderne plutôt que de tout bloquer comme sur cet exemple video de PureC :
http://myaes.lutece.net/images/form_dial.mp4 Mais si un soft oublie derrière de faire FMD_FINISH alors il peut se passer des truc très bizarre à l'écran!
Dans les trucs un peu bizarre des softs:
Beaucoup font un wind_update (BEGUPDATE ou BEGMCTRL) avant d'appeler le sélecteur de fichier, a quoi cela sert mystère pour moi.
Erreur de format pour form_alert, il n'y a pas à dire l'AES est tolérant!
Faire in wind_update(BEGUPDATE) avant d'appeler une routine event_xxx bof pas très sympa comme façon de faire
objc_draw() avec un largeur d'objet de 0! Et bien l'AES redessine tout!
Il y en a qui oublient de faire un appl_exit et d'autres qui appellent l'AES sans appl_init (bon souvent c'est pour des choses qui sont assez basiques comme graf_handle mais quand même c'est un peu ennuyant)
Dans les trucs cocasse de l'AES:
G_STRING se fout du de la largeur et hauteur de son objet et dépasse sans se poser de question