#15 Octubre 11, 2015, 07:51:04 PM Ultima modificación: Octubre 11, 2015, 10:04:05 PM por fasst007
Ya te solucioné el problema!! Particularmente me ha gustado la idea de penumbra de guardar el surface en un sprite porque me parece que podría dar una mayor flexibilidad.

Por lo tanto hice un proyecto tomando esta idea para dar un ejemplo del funcionamiento. El mismo consta con dos rooms que no son persistentes (ya no es necesario).

Al arrancar el juego aparece la pizarra de un paint y al hacer clic arrastrando se dibujan líneas. Con "P" se pasa al room del pausa y en este momento es cuando se guarda el surface en el sprite y se libera la memoria del surface, luego con otra vez "P" se retorna al room del dibujo y se crea nuevamente el surface con la imagen del sprite y posteriormente se libera la memoria del sprite.

Si bien el ejemplo es para windows (únicamente por la cuestión de que se necesita teclear la tecla "P" y "S") debería andar para android simplemente cambiando el evento del release de la tecla "P" y "S" por otra cosa. 

Saludos.

Gracias a todos, pero todos los problemas residían en el tratamiento de la surface como una variable global para poder trabajar con ella mas fluidamente, el cual funcionaba muy bien para muchas cosas pero no para la que necesitaba ahora.
Igualmente quiero aprovechar y agradecer a cada uno de los que me han tratado de ayudar como siempre lo hacen, esta MUY BUENO, pertenecer a una comunidad tan abierta, y con el afán de compartir conocimientos, ESE HECHO ES INIGUALABLE, saber que uno cuenta con amigos, y digo amigos, porque asi los considero.
GRACIAS A TODOS Y UN GRAN ABRAZO

Estaba pensando que tal vez creas superficies nuevas cada vez que entras a la room de dibujo, entonces no se podía recuperar el dibujo porque la variable hacía referencia a una superficie diferente. Revisa que no suceda eso, porque estarías llenando la memoria con superficies que no usas. Puedes escribir algo así para verificarlo:
[gml]
if( variableSuperficie > 0 )
show_error( "Creando superficies innecesarias", false );
[/gml]

Gracias CLAMUD ya esta solucionado dirijo todas las acciones al objeto que maneja las surface y las trato como una variable local, igualmente lo que me llamo la atencion es que la variable global, se comportaba como no esperaba.
Gracias