(BUG?): Perdida de foco en iPhone

Started by JaViS, May 26, 2011, 02:05:42 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

JaViS

Hola,

estoy haciendo pruebas en iphone y hasta ahora va todo bien, con excepcion de un detalle.

Cuando el juego "pierde el foco", por ejemplo cuando hacen una llamada, o abro el menu de tareas corriendo, o inclusive cuando se muestra un dialogo de bateria baja, el juego se congela, y no hay forma de seguir usandolo.

Para volver a entrar tengo que salir al inicio, hacer click en el icono, esto va a matar el proceso y luego voy a poder correr la aplicacion nuevamente.


A alguien mas le pasa lo mismo?

muchas gracias
Working on Anarkade. A couch multiplayer 2D shooter.

JaViS

alguien pudo probar esto? me tiene preocupado  ::)
Working on Anarkade. A couch multiplayer 2D shooter.

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

yo tengo el viejuno iphone 2, pero sin jealbreak.

JaViS

El error ocurre inclusive con el ejemplo del uso del acelerometro hecho por Josebita.

Algo muy curioso, leyendo por internet nos dimos con que en Unity tienen el mismo problema, y lo solucionan dejando un archivo de audio corriendo. Con una prueba que hicimos, parte del problema se soluciona, pero al abrir el menu de multitarea se sigue clavando el problema.
Working on Anarkade. A couch multiplayer 2D shooter.

Hokutoy

Joseba ya esta trabajando en ello si no estoy mal informado.
A ver si se soluciona pronto.

Saludos!

josebita

Perdón por no responder. Efectivamente estoy intentando ver cómo resolverlo, pero no parece un bug sencillo.
SDL tiene un bug parecido a éste que no tengo claro si es la causa. Si le pones algún tipo de interactividad al juego (un mouse.left y que reproduzca un sonido) verás que el juego no está colgado, sólo el redibujado.
Al salir de la notificación o de la pantalla de bloqueo o del menú de multitarea parece que SDL vuelve a establecer el modo gráfico, pero quizás no lo esté haciendo bien o quizás cambie la dirección de memoria en la que está el buffer de pantalla... Me tiene un poco loco el bug.

Os aviso con lo que sea.

josebita

#7
Basicamente lo que ocurre es que al hacer cualquiera de las acciones que "congelan" la imagen SDL hace "algo" que jode el tema de la resolución. Sin entrar en por qué creo que ocurre eso, si después de eso se hace un set_mode() a la resolución apropiada el juego vuelve a funcionar correctamente.
Voy a intentarlo esta noche pero lo que quiero probar (e imagino que funcionará) es crear un proceso que esté activo durante toda la ejecución y compruebe que la resolución sea la correcta. Sólo no lo será en los momentos en los que ahora la ejecución se "congela": pues la reseteamos y listo. Insisto en que es un apaño bastante cerdo, pero por lo menos imagino que funcionará.

Con el resultado de las pruebas que haga escribiré un post en el blog. Aún así, creo que tengo un poco más claro por dónde van los tiros y seguiré intentando arreglar el bug de verdad, de forma que no hagan falta estos arerglos mierdosos.

JaViS

Gracias Josebita, estas haciendo un trabajo excelente :D

Como se puede detectar el cambio de resolucion?
Working on Anarkade. A couch multiplayer 2D shooter.

josebita

Ayer al final no pude subir ésto. Tengo un binario que lo hace más fácil. Intentaré subirlo esta tarde.
Tengo unas cuantas cosas pendientes a cuenta del port a iOS, pero es que me está costando bastante arreglarlo, a pesar de que le estoy dedicando un montón de tiempo.

josebita

Bueno, dejo el binario actualizado. Cuando ocurre alguno de los eventos que deberían forzar el redibujado se hace focus_status=1, el resto del tiempo es 0 (sé que no es el comportamiento normal de Bennu, de momento está ahí sólo por ir haciendo pruebas).
Seguiré trabajando para arreglar el bug.
http://code.google.com/p/bennugd-monolithic/downloads/detail?name=main

Aviso que es una versión en desarrollo que puede no enviar la señal bien, por si las moscas.

JaViS

buenisimo, ya mismo lo pruebo y te aviso como va. :)

basicamente lo que tengo que hacer es:

if (focus_status)
set_mode(...)
end


correcto?
Working on Anarkade. A couch multiplayer 2D shooter.

JaViS

Working on Anarkade. A couch multiplayer 2D shooter.

josebita

Pfff... Estoy tocando las señales...
Sigo con ello y os cuento.

amzg

Quote from: josebita on May 30, 2011, 04:53:26 PM
Pfff... Estoy tocando las señales...
Sigo con ello y os cuento.

ANIMO!!!  ;D