Fuerza la actualización constante de la ventana WINE

1

Estoy intentando ejecutar Imperialism 2 en Crossover (WINE), en modo de escritorio virtual. El juego casi funciona, excepto que la pantalla no se actualiza.

Lo que quiero decir con esto es que la ventana WINE es inicialmente negra. Si luego arrastro otra ventana sobre ella y la arrastro de nuevo, la ventana ahora muestra una imagen del juego en este punto. Si luego hago clic en cosas dentro del juego, nada sucede visualmente, hasta que de nuevo arrastre otra ventana encima de WINE.

Entonces, lo que parece estar sucediendo es que la ventana de WINE no se da cuenta de que necesita seguir actualizando lo que se muestra. Solo cuando su contenido se oculta y luego se revela nuevamente, se da cuenta de que tiene que volver a dibujar. Esto es bastante frustrante: el juego funciona bien, los gráficos se dibujan correctamente, pero simplemente no se muestran.

¿Hay alguna manera de seguir enviando un "mensaje de redibujado" a una ventana para forzar que estos redibujes ocurran? Imp 2 es un juego por turnos, por lo que si los redibujes ocurrieran solo unas pocas veces por segundo, estaría bien.

    
pregunta Zarkonnen 05.11.2012 - 19:24

1 respuesta

0

He encontrado una forma completamente horrenda pero viable de solucionar mi problema. Primero, descargue e instale Afloat , que le permite configurar ventanas como superposiciones globales translúcidas que no se pueden hacer clic.

Luego, cree un archivo HTML cuyo fondo cambie entre blanco puro y blanco casi puro 20 veces por segundo. Algo como esto:

<!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>

Finalmente, abra este archivo en Safari, cambie el tamaño de la ventana para llenar la pantalla tanto como sea posible, y use Afloat para establecer la ventana como una superposición global casi transparente que no se puede hacer clic. ¿El resultado? La pantalla completa (incluida la ventana WINE) se fuerza a actualizar cada 50 ms.

¿Esto es completamente horrible? Sí. Pero funciona.

    
respondido por el Zarkonnen 09.11.2012 - 12:50

Lea otras preguntas en las etiquetas