X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=gacela.c;fp=gacela.c;h=80d4abc79b24b11efe7f810741a1b653d39de16b;hb=25fde6ed8bbdf1d2f82eebdb96722eceb956a3e6;hp=0000000000000000000000000000000000000000;hpb=d0e2cdc7308eabc4727729f9ac085f2959696b90;p=gacela.git diff --git a/gacela.c b/gacela.c new file mode 100644 index 0000000..80d4abc --- /dev/null +++ b/gacela.c @@ -0,0 +1,75 @@ +#include +#include +#include +#include + +int contador = 0; +int incremento = 1; + +SCM prueba () { + int flags; + + SDL_Init (SDL_INIT_EVERYTHING); + + SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1); + + flags = SDL_OPENGL | SDL_GL_DOUBLEBUFFER | SDL_HWPALETTE | SDL_RESIZABLE | SDL_SWSURFACE; + SDL_SetVideoMode (200, 200, 32, flags); + + glShadeModel (GL_SMOOTH); + glClearColor (0, 0, 0, 0); + glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); + glViewport (0, 0, 200, 200); + glMatrixMode (GL_PROJECTION); + glLoadIdentity (); + glOrtho (-200, 200, -200, 200, 0, 1); + glMatrixMode (GL_MODELVIEW); + glLoadIdentity (); + + return SCM_UNSPECIFIED; +} + +void *bucle () { + while (1) { + contador = contador + incremento; + if (contador > 1000) incremento = -1; + else if (contador < 0) incremento = 1; + } + pthread_exit(NULL); +} + +SCM lanzar_bucle () { + pthread_t t; + + pthread_create(&t, NULL, bucle, NULL); + return SCM_UNSPECIFIED; +} + +SCM ver_contador () { + return scm_from_int(contador); +} + +static void* +register_functions (void* data) +{ + scm_c_define_gsubr ("prueba", 0, 0, 0, &prueba); + scm_c_define_gsubr ("ver-contador", 0, 0, 0, &ver_contador); + scm_c_define_gsubr ("lanzar-bucle", 0, 0, 0, &lanzar_bucle); + return NULL; +} + + +int main (int argc, char *argv[]) { +/* GSCM_status status; + GSCM_top_level toplev; + + status = gscm_eval_str(NULL, toplev, "(use-modules (ice-9 readline))"); + status = gscm_eval_str(NULL, toplev, "(activate-readline)"); +*/ + scm_with_guile (®ister_functions, NULL); + scm_c_eval_string("(set-repl-prompt! \"gacela>\")"); + scm_c_eval_string("(use-modules (ice-9 readline))"); + scm_c_eval_string("(activate-readline)"); + scm_shell (argc, argv); +} +