Home

¿Cual es la forma correcta de salir de nano-x?

hperez

AZmod
Loco por OpenSPA
Fan de OpenSPA
10 Dic 2009
1.659
19
0
He instalado nano-x y estoy mirando si soy capaz de hacer un plug-in.

He conseguido dibujar unas cuantas cosas en pantalla, lo que no sé es qué hay que hacer para salir del programa correctamente.

Ahora mismo ejecuto
Código:
GrClose();
return 0;

el plug-in se cierra, sí, pero me aparece una pantalla en negro, y tengo que pulsar la tecla "exit" para que me salga el menú de los plug-ins del azbox.

Si pulso la tecla "exit" con el programa en marcha, vuelve al menú de los plug-ins, pero mi programa se sigue ejecutando de fondo (literalmente, mi plug-in se sigue viendo en el fondo de la pantalla).
 

The_Doc

AZvip
Loco por OpenSPA
4 Ago 2009
303
0
0
prueba esto a ver si acierto!!

para guardar el trabajo realizado ctrl + o
para salir del Programa ctrl + x

Suerte
 

potus

Usuario
Amigo OpenSPA
19 Sep 2009
37
1
0
xHperez:

Te explico, mas o menos, como va el 'asunto' (bajo mi experiencia y sin querer sentar catedra ni mucho menos):

Como te comentaba en el otro hilo, bajo el menu de PLUGINS todo se ejecuta bajo la 'tutela' de un proceso del firm, es decir tu aplicacion no se ejecutara libremente en el sistema, sino dentro de otro proceso. Es por ello que cuando cierras el nano-X con GrClose() se te queda el marco en negro y tu plugin sigue corriendo, porque solo has cerrado el servidor y el proceso que tutela no ha sido avisado de que el plugin ha terminado, porque de hecho no ha terminado, sino que sigue corriendo. Para ello no queda otra que pulsar la tecla exit. Es mas, deberas de pulsar la tecla exit o deberas simular que se ha pulsado dicha tecla mediante el 'falseo' de una evento GR_EVENT_TYPE_BUTTON_DOWN, para que el proceso tutor cierre todo lo que tenga que cerrar.

A titulo de ejemplo este es un trozo de codigo de un plugin mio:


Código:
        case GR_EVENT_TYPE_KEY_DOWN:
if ((event.keystroke.ch == MWKEY_ESCAPE))//SALIR
{
GrDestroyFont(font);
GrDestroyFont(font2);
GrFreeImage(s_pBgImage);
//                GrFreeImage(rojo);            
//                GrFreeImage(verde);
//                GrFreeImage(azul);
//                GrFreeImage(amarillo);
GrClose();
exit(0);
break;
Como ves no hago nada especial, simplemente asocio el cierre del nano-X a la pulsacion de EXIT (escape para el AZBOX), proceso la liberacion de memoria usada y cierro el servidor grafico, el proceso tutor ya se encarga de interceptar la pulsacion de la tecla y hacer lo que tenga que hacer. Eso es todo.





Salu2
 

hperez

AZmod
Loco por OpenSPA
Fan de OpenSPA
10 Dic 2009
1.659
19
0
Pues te agradezco enormemente la explicación, creo que con esto más o menos he resuelto el problema que tenía (aunque aún tengo que probarlo en el deco).
 

hperez

AZmod
Loco por OpenSPA
Fan de OpenSPA
10 Dic 2009
1.659
19
0
Pues mi gozo en un pozo. Lo acabo de probar en el deco y no va.

¿La forma de simular la pulsación de la tecla exit es con la función GrInjectKeyboardEvent?

Estoy usando esto:
Código:
GrInjectKeyboardEvent(main_window, MWKEY_ESCAPE, 0, 0, GR_TRUE);

Esto funciona en el ordenador, pero no en el deco.
 

potus

Usuario
Amigo OpenSPA
19 Sep 2009
37
1
0
xhperez:

Esto funciona en el ordenador, pero no en el deco.
Obviamente, porque con GrInjectKeyboardEvent solo estas injertando un EVENT a la cola de eventos del servidor, no estas mandando nada al 'proceso tutor' de los plugins (en el ordenata -Ubuntu me imagino- al no existir el 'proceso tutor' la cosa va bien), por lo que tu plugin sigue corriendo tan pancho por el sistema. Esto solo te servira para interceptar el evento dentro del plugin y cerrar el servidor nano-X, pero no para cerrar el plugin en si:alucinar:

De todas formas, opinion personal, no te compliques y pulsa EXIT del mando ....problema resuelto.


Salu2
 

hperez

AZmod
Loco por OpenSPA
Fan de OpenSPA
10 Dic 2009
1.659
19
0
potus dijo:
xhperez:

Obviamente, porque con GrInjectKeyboardEvent solo estas injertando un EVENT a la cola de eventos del servidor, no estas mandando nada al 'proceso tutor' de los plugins (en el ordenata -Ubuntu me imagino- al no existir el 'proceso tutor' la cosa va bien), por lo que tu plugin sigue corriendo tan pancho por el sistema. Esto solo te servira para interceptar el evento dentro del plugin y cerrar el servidor nano-X, pero no para cerrar el plugin en si

Es lo que he pensado más tarde, si no se pulsa realmente exit el azbox no se entera, no se le puede engañar.

potus dijo:
De todas formas, opinion personal, no te compliques y pulsa EXIT del mando ....problema resuelto.

Es lo que he hecho al final.