]> git.jsancho.org Git - gacela.git/blob - gacela.c
(no commit message)
[gacela.git] / gacela.c
1 #include <SDL/SDL.h>
2 #include <GL/gl.h>
3 #include <libguile.h>
4 #include <pthread.h>
5
6 int contador = 0;
7 int incremento = 1;
8
9 SCM prueba () {
10         int flags;
11
12         SDL_Init (SDL_INIT_EVERYTHING);
13
14         SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1);
15
16         flags = SDL_OPENGL | SDL_GL_DOUBLEBUFFER | SDL_HWPALETTE | SDL_RESIZABLE | SDL_SWSURFACE;
17         SDL_SetVideoMode (200, 200, 32, flags);
18
19         glShadeModel (GL_SMOOTH);
20         glClearColor (0, 0, 0, 0);
21         glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
22         glViewport (0, 0, 200, 200);
23         glMatrixMode (GL_PROJECTION);
24         glLoadIdentity ();
25         glOrtho (-200, 200, -200, 200, 0, 1);
26         glMatrixMode (GL_MODELVIEW);
27         glLoadIdentity ();
28
29         return SCM_UNSPECIFIED;
30 }
31
32 void *bucle () {
33         while (1) {
34                 contador = contador + incremento;
35                 if (contador > 1000) incremento = -1;
36                 else if (contador < 0) incremento = 1;
37         }
38         pthread_exit(NULL);
39 }
40
41 SCM lanzar_bucle () {
42         pthread_t t;
43
44         pthread_create(&t, NULL, bucle, NULL);
45         return SCM_UNSPECIFIED;
46 }
47
48 SCM ver_contador () {
49         return scm_from_int(contador);
50 }
51
52 static void*
53 register_functions (void* data)
54 {
55         scm_c_define_gsubr ("prueba", 0, 0, 0, &prueba);
56         scm_c_define_gsubr ("ver-contador", 0, 0, 0, &ver_contador);
57         scm_c_define_gsubr ("lanzar-bucle", 0, 0, 0, &lanzar_bucle);
58         return NULL;
59 }
60
61
62 int main (int argc, char *argv[]) {
63 /*      GSCM_status status;
64         GSCM_top_level toplev;
65
66         status = gscm_eval_str(NULL, toplev, "(use-modules (ice-9 readline))");
67         status = gscm_eval_str(NULL, toplev, "(activate-readline)");
68 */
69         scm_with_guile (&register_functions, NULL);
70         scm_c_eval_string("(set-repl-prompt! \"gacela>\")");
71         scm_c_eval_string("(use-modules (ice-9 readline))");
72         scm_c_eval_string("(activate-readline)");
73         scm_shell (argc, argv);
74 }
75