PDA

Ver la versión completa : Forma correcta de finalizar una aplicación



sharek
04/10/2010, 22:36
Al terminar mi programa, la wiz se queda frita, pantalla negra....

He visto en el ejemplo del SDK (C++), que llaman a una función de una clase al final del programa .CallGP2XMenu();

En C, he encontrado por foros y demás que usan execl y llaman al menú (uh?)

Estoy programando en C, la solución de execl me parece francamente horrible (y por cierto, tampoco me funciona)

Mi codigo actualmente es:

/* free's varios */
SDL_Quit();
TTF_Quit();
#ifdef WITHWIZEXIT
execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL);
#endif
return EXIT_SUCCESS;

Aparte de no funcionarme (compilo con -DWITHWIZEXIT ;) me parece una solución monstruosa...

Que pasos debo seguir para regresar al interfaz del sistema ?

Los ejemplos que encuentro son todos C++ y me gustaría seguir en C

hardyx
05/10/2010, 00:02
Tanto si te gusta como si no, hay que llamar al menú, sino se te queda frita como dices. Realmente se queda en la línea de comandos de Linux, pero no se ve nada gráfico. Esto se hace porque el menú se descarga al iniciarse un juego, para dejarte toda la memoria.

Este es el código, funciona tanto en C como en C++. El define WIZ lo pones al compilar para Wiz (target), y no existe en modo PC (host). Hay quien lo añade a un script externo en vez de cambiar el código fuente.

Versión código:

#ifdef WIZ
chdir("/usr/gp2x");
execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL);
#endif

Versión script:


#!/bin/sh
./programa.gpe
sync
cd /usr/gp2x/
exec ./gp2xmenu

sharek
05/10/2010, 09:11
Comprendo la necesidad en un sistema embedded de ahorrar memoria a toda costa, pero bien podrían solucionarlo de una forma un poco mas elegante... abuf

gracias hardyx

Drumpi
05/10/2010, 20:34
"Sistema empotrado" y "solución elegante" nunca han ido de la mano :D La máxima de un sistema embebido es "debe funcionar... y punto" :lol:

Pero vamos, que esto que te comentan es una forma de hacerlo: en lugar de tener el entorno funcionando, se tiene como un programa más, y hay que volver a llamarlo al terminar, porque no hay un watchdog o un demonio que lo haga por ti.

jduranmaster
05/10/2010, 20:36
sistema embebido

como vuelvas a escribir esto te reporto. :lol:


fuera de coñas, quien fue el listo que decidio traducir embebed por "embebido", es que no lo soporto.

Drumpi
05/10/2010, 20:40
como vuelvas a escribir esto te reporto. :lol:


fuera de coñas, quien fue el listo que decidio traducir embebed por "embebido", es que no lo soporto.

Eso se lo cuentas a mis profesores del departamento de tecnología electrónica. A mi tampoco me suena bien para nada, pero a día de hoy, es mejor sinónimo para sistema empotrado o integrado (y llevo toda la tarde hablando (yo solo) de estos sistemas y ya no se cuando he dicho una cosa u otra ^^U).