fix : unfocus player
All checks were successful
release / build (push) Successful in 24s
release / verify-windows (push) Successful in 1m33s

This commit is contained in:
jeanotx32
2026-08-12 16:46:23 +02:00
parent 8c82807368
commit 2dc3009432

View File

@@ -241,8 +241,10 @@ function requireUrl(params: Record<string, unknown>): string {
/** /**
* Séquence complète : ouvrir la page, laisser le lecteur démarrer, passer en * Séquence complète : ouvrir la page, laisser le lecteur démarrer, passer en
* plein écran, lancer l'enregistrement. Chaque étape est journalisée séparément * plein écran, régler la qualité, lancer l'enregistrement. Chaque étape est
* pour qu'un échec désigne son maillon. * journalisée séparément pour qu'un échec désigne son maillon. L'ordre entre
* plein écran et qualité n'est pas arbitraire — voir le commentaire sur
* l'appel à {@link selectMaxStreamQuality}.
*/ */
async function startCapture(params: Record<string, unknown>): Promise<unknown> { async function startCapture(params: Record<string, unknown>): Promise<unknown> {
if (!browserSettings.enabled) { if (!browserSettings.enabled) {
@@ -256,8 +258,6 @@ async function startCapture(params: Record<string, unknown>): Promise<unknown> {
report('info', `Attente de ${Math.round(wait / 1000)} s avant le plein écran`); report('info', `Attente de ${Math.round(wait / 1000)} s avant le plein écran`);
await sleep(wait); await sleep(wait);
await selectMaxStreamQuality();
const fullscreen = watcher.snapshotSettings.fullscreen; const fullscreen = watcher.snapshotSettings.fullscreen;
let fullscreenResult: unknown = 'ignoré'; let fullscreenResult: unknown = 'ignoré';
if (fullscreen.enabled) { if (fullscreen.enabled) {
@@ -278,6 +278,16 @@ async function startCapture(params: Record<string, unknown>): Promise<unknown> {
}); });
} }
// Après, et non avant, le plein écran : celui-ci envoie une touche au
// lecteur, et la plupart des lecteurs vidéo traitent n'importe quelle touche
// comme une activité qui réaffiche les contrôles — y compris une touche sans
// rapport avec la qualité. Dans l'ordre inverse, le curseur écarté en fin de
// sélection de qualité (pour laisser la surbrillance des contrôles
// s'estomper) se faisait donc aussitôt annuler par cette touche. Ici,
// l'éloignement du curseur reste la dernière chose à toucher la page avant
// l'enregistrement.
await selectMaxStreamQuality();
// Dernière chance d'écrire un preset en attente : une fois l'enregistrement // Dernière chance d'écrire un preset en attente : une fois l'enregistrement
// commencé, OBS refuse toute modification jusqu'à l'arrêt. Sans cet appel // commencé, OBS refuse toute modification jusqu'à l'arrêt. Sans cet appel
// explicite, l'écriture dépendait du hasard d'un cycle de statut (toutes les // explicite, l'écriture dépendait du hasard d'un cycle de statut (toutes les