Obligement - L'Amiga au maximum

Vendredi 08 mai 2026 - 18:52  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in English


Réseaux sociaux

Suivez-nous sur Mastodon




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Point de vue : Le développement de Rave (dixième partie)
(Article écrit par Daniel Jedlicka et extrait de Rear Window - avril 2026)


Un plantage de trop.

Il y a une vieille blague qui dit que la programmation, c'est comme le sexe : une seule erreur, et c'est la galère pour le restant de ses jours. Il y a du vrai dans cette affirmation - et de l'expérience - car même les plans les mieux conçus des développeurs peuvent être mis à mal par des problèmes imprévus. C'est exactement ce qui m'est arrivé avec la mise à jour 1.9 de Rave que j'ai publiée en février 2026.

Rave

La publication en elle-même s'est déroulée sans problème, mais très vite, des signalements ont commencé à arriver : l'éditeur plantait à l'ouverture de la fenêtre des paramètres. C'était pour le moins curieux, car je jure que je n'avais pas touché à cette partie du code depuis des mois, voire des années. Le plus intéressant, c'est que tous les signalements provenaient d'utilisateurs d'AmigaOne X1000. Ces plantages spécifiques à certaines machines étaient une nouveauté pour moi, et cela a mis en lumière une triste réalité : même en testant sur trois systèmes AmigaOS 4 différents, comme je le fais, ce n'est pas toujours suffisant.

Bien sûr, cela n'aurait pas fait un article très intéressant si la cause avait été évidente et que j'avais corrigé le bogue immédiatement. L'impossibilité de reproduire le plantage sur mes machines n'a certainement pas arrangé les choses, et les rapports d'erreur qu'on m'envoyait pointaient mystérieusement vers un composant sans rapport. Heureusement, la partie du code concernée est assez simple, et grâce à l'aide - et à la patience - du bêta-testeur Niels Bache, j'ai finalement pu identifier la cause du problème : une routine auxiliaire qui vérifie le chemin d'accès aux fichiers d'annulation de Rave. En résumé : j'avais utilisé un tampon de texte défini trop localement, ce qui rendait le pointeur de tampon invalide avant que le gadget bouton n'ait fini de l'utiliser, provoquant ainsi une condition de concurrence assez gênante.

Cependant, corriger le code en cause ressemblait plus à un palliatif, et je me suis demandé pourquoi une telle situation s'était produite. Mon code avait peut-être mis le bouton dans une situation critique, mais pourquoi ne pouvait-il pas s'en sortir ? J'étais de plus en plus convaincu que le véritable problème résidait dans la classe "button.gadget". Sachant que le problème était dû à une chaîne de caractères à durée de vie trop courte, j'ai analysé attentivement l'utilisation du pointeur et il est vite apparu que le gadget était un peu trop désinvolte quant à la gestion du contenu textuel.

Un bon gadget BOOPSI est une entité binaire très méfiante qui ne sous-estime jamais la créativité sans bornes du programmeur Amiga. De ce fait, la plupart des classes s'assurent de "posséder" tout texte fourni en en créant une copie interne. Le gadget bouton le faisait - et en même temps, non. En réalité, le bouton transmettait immédiatement le texte à "bevel.image" (qui gère l'affichage du texte et du cadre), et une copie y était créée. Je suppose que c'était le comportement prévu à l'origine, et je suis sûr que c'était bien intentionné et que cela fonctionnait, car le pointeur de chaîne n'était plus référencé après son passage à "bevel".

Malheureusement, au fil des années et des ajouts de fonctionnalités par divers contributeurs, la vision d'ensemble s'est peu à peu perdue, et le pointeur de chaîne d'origine s'est retrouvé référencé à plusieurs endroits. Cela a créé une vulnérabilité, et Rave en a été la victime involontaire. Heureusement, pas pour longtemps !

Corriger un bogue est toujours gratifiant, mais cette fois-ci, ma joie était quelque peu tempérée par la pensée que les utilisateurs de Rave - ceux qui avaient découvert et signalé le bogue - devraient se contenter de ma solution de contournement jusqu'à la publication du bouton corrigé. Alors, en guise de remerciement, j'ai décidé de faire de Rave 1.10 bien plus qu'une simple mise à jour corrective. J'ai passé en revue ma longue liste de tâches, espérant trouver une fonctionnalité qui réponde aux trois critères essentiels : "réalisable", "satisfaisante pour les utilisateurs" et "utile pour moi-même".

Après réflexion, j'en suis arrivé à la conclusion qu'il était grand temps d'intégrer une règle temporelle à l'affichage de la forme d'onde dans Rave - un outil permettant au moins de se repérer dans l'échantillon. J'avais déjà tenté d'implémenter cette fonctionnalité par le passé, mais j'avais toujours fini par l'abandonner face aux problèmes de zoom, d'échelle et autres complications liées au dessin simultané d'éléments dépendant du temps et des pixels. Le fait que de nombreux éditeurs audio Amiga s'en passent montre bien que sa mise en oeuvre est loin d'être simple.

Cette fois-ci, cependant, je l'ai abordée avec un esprit plus ouvert et sans idées préconçues, et j'ai réussi à trouver une solution fonctionnelle en un seul week-end (certes chargé). L'implémentation actuelle est volontairement simple : elle indique simplement le temps ou la position de l'échantillon. Mais la règle remplit sa fonction et, plus important encore, elle ouvre la voie à l'ajout de fonctionnalités plus utiles à l'avenir.

Rave
Affichage de la forme d'onde avec la règle de la ligne de temps

C'est tout pour le moment. Rave 1.10 arrive juste à temps pour le week-end de Pâques, avec quelques correctifs importants et une petite nouveauté bien pratique. J'espère maintenir le rythme et publier d'autres mises à jour plus tard cette année, idéalement sans mauvaises surprises. En attendant, passez de bonnes fêtes et bon bidouillage audio !


[Retour en haut] / [Retour aux articles] [Article précédent]