X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=gacela_core.c;fp=gacela_core.c;h=3d2a3983fa7ec4d263915953588170facb82fa85;hb=d4cff32858a9ff65b06f1430810699a91fbcc2b9;hp=0000000000000000000000000000000000000000;hpb=a77a0257caeeaaa3cc0977008d4cf9a92a9ee1cd;p=gacela.git diff --git a/gacela_core.c b/gacela_core.c new file mode 100644 index 0000000..3d2a398 --- /dev/null +++ b/gacela_core.c @@ -0,0 +1,85 @@ +#include +#include +#include +#include + +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) { + scm_c_eval_string("(define contador (+ contador incremento))"); + scm_c_eval_string("(if (> contador 1000) (define incremento -1))"); + scm_c_eval_string("(if (< contador 0) (define incremento 1))"); + } + pthread_exit(NULL); +} + +void *bucle2 () { + char *argv[0]; + + argv[0] = malloc(10); + strcpy(argv[0], "./gacela"); + scm_shell(1, argv); +} + +int lanzar_bucle2 () { + pthread_t t; + + pthread_create(&t, NULL, bucle2, NULL); + return 0; +} + +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[]) { + 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_c_eval_string("(define contador 0)"); + scm_c_eval_string("(define incremento 1)"); +// scm_shell (argc, argv); + lanzar_bucle2(); + while (1) {} +} +