Force le rafraîchissement constant de la fenêtre WINE

1

J'essaie d'exécuter Imperialism 2 sur Crossover (WINE) en mode de bureau virtuel. Le jeu fonctionne presque sauf que l'écran ne se met pas à jour.

Ce que je veux dire par là, c'est que la fenêtre WINE est initialement noire. Si je fais glisser une autre fenêtre par-dessus et la déplace à nouveau, la fenêtre affiche maintenant une image du jeu à ce stade. Si je clique ensuite sur des éléments du jeu, rien ne se passe de manière visuelle, jusqu'à ce que je fasse de nouveau glisser une autre fenêtre au-dessus de celle de WINE.

Donc, ce qui semble se passer, c'est que la fenêtre WINE ne se rend pas compte qu'elle doit continuer à mettre à jour ce qu'elle montre. Ce n'est que lorsque son contenu est obscurci et ensuite révélé à nouveau qu'il remarque qu'il doit redessiner. C'est assez frustrant: le jeu fonctionne bien, les graphiques sont dessinés correctement, mais ils ne sont tout simplement pas affichés.

Y a-t-il un moyen de continuer à envoyer un "message de retrait" à une fenêtre pour forcer ces retraits à se produire? Imp 2 est un jeu au tour par tour, donc si les retraits se produisent seulement quelques fois par seconde, ce serait bien.

Zarkonnen
la source

Réponses:

0

J'ai trouvé un moyen complètement horrible mais pratique de résoudre mon problème. Tout d’abord, téléchargez et installez Afloat , qui vous permet de définir les fenêtres comme superpositions globales translucides et non cliquables.

Créez ensuite un fichier HTML dont l’arrière-plan bascule entre le blanc pur et le blanc presque pur 20 fois par seconde. Quelque chose comme ça:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Strobe Light</title>
    <script language="javascript" type="text/javascript">
      <!--
      var c = 0;

      function strobe() {
        document.bgColor = c ? '#fefefe' : '#ffffff';
        c = (c + 1) % 2;
      }

      function startStrobe() {
        setInterval(strobe, 50);
      }
      -->
    </script>
  </head>
  <body onload="startStrobe();">
  </body>
</html>

Enfin, ouvrez ce fichier dans Safari, redimensionnez la fenêtre afin de remplir l'écran autant que possible et utilisez Afloat pour définir la fenêtre en tant que superposition globale non transparente cliquable. Le résultat? La totalité de l'écran (y compris la fenêtre WINE) est obligée de se mettre à jour toutes les 50 ms.

Est-ce complètement horrible? Oui. Mais ça marche.

Zarkonnen
la source