La version résumée de cet article est que Black Light Pro 1.1 est sorti, et est aussi maintenant disponible dans le Mac App Store. Si vous être intéressé à l’histoire qui a mené à ça, lisez la suite.
L’année dernière, quand je développais Black Light Pro, j’avais l’intention de publier l’application sur l’App Store en plus de mon site web, comme pour toutes mes autres applications. Les choses ne fonctionnent pas toujours comme prévu, cependant. L’App Store est connu pour ses règles strictes de l’environnement contrôlé (sandbox), bloquant l’accès à toute sortes de fonctions de macOS au nom de la sécurité. Une de ces fonctions est celle qui change le profil de couleur d’un écran.
Il y a deux façons de modifier comment le système d’exploitation affiche les couleurs rendues sur l’écran :
On peut changer directement la table de transfert de l’écran pour avoir un effet instantané. C’est un peu fragile parce que plusieurs choses peuvent rétablir la table d’origine, telle que rallumer un écran, quitter d’autres applications, etc.
On peut changer le profil de couleurs de l’écran. Le profil de couleur contient toutes sortes d’informations à propos de l’écran, l’une d’elle étant la table de transfert à utiliser. Quand la table de transfert d’origine est rétablie après avoir utilisé la méthode #1, c’est celle du profil qui s’applique. Ceci rend le profil l’endroit idéal pour appliquer un effet de longue durée.
Black Light a toujours utilisé la méthode #1. Pour Black Light Pro je voulais utiliser la méthode #2 pour rendre l’effet plus robuste en changeant le profil pendant que l’application est en marche. C’est mieux parce que ça évite les flashs de couleurs « normales » qui arrivent quand la table de transfert du profil est rétablie.
Donc l’environnement contrôlé (sandbox) bloque les choses. Puisqu’il est impossible de changer le profil dans un tel environnement, cette fonctionnalité doit être exclue de la version Mac App Store. L’application pourrait toujours fonctionner, mais changer le profil ne fonctionnerait pas.
Je ne voulais pas enlever la fonctionnalité (parce que je la trouve vraiment utile), et je ne voulais pas créer une version différente pour l’environnement contrôlé pour éviter diverses complications. Finalement, j’ai publié l’application uniquement sur ce site web.
Il y a quelque mois, j’ai constaté que Black Light Pro pouvait parfois planter sans y avoir touché. Ceci se manifeste par l’icône de l’application disparaissant de la barre des menus et les effets prévus à l’horaire qui ne s’appliquent plus. D’après les rapports de crash, ça semblait venir du code qui effectuait le changement de profil.
Je n’ai pas pu trouver exactement comment reproduire le problème, mais ça ressemble à un problème de compteur de référence d’un appel de fonction servant à changer le profil. Sans être certain de si je pouvais y faire quelque chose (le bogue pourrait être du côté d’Apple), j’ai décidé de déplacer le code qui applique le profil dans un processus séparé : si le processus séparé plante, alors un nouveau est reparti et continue où le précédent a laissé. Le système est tolérant aux plantages maintenant !
Cette réparation de bogue pour le moins compliquée a un effet intéressant : il est maintenant possible de placer le processus principal de Black Light Pro dans l’environnement contrôlé. Et en conséquence il est maintenant compatible avec le Mac App Store… tant que la fonctionnalité touchant au profil n’y est pas incluse. Et c’est ce que j’ai fait pour la version 1.1.
Je suis donc fier d’annoncer que Black Light Pro est maintenant disponible sur l’App Store. Et pour la version directe, le code de gestion du profil de couleur est beaucoup plus robuste maintenant.