scsh-checkins
[Top] [All Lists]

[Scsh-checkins] CVS: scx/c/xlib event.c,1.4,1.5

To: scsh-checkins@lists.sourceforge.net
Subject: [Scsh-checkins] CVS: scx/c/xlib event.c,1.4,1.5
From: David Frese <frese@users.sourceforge.net>
Date: Thu, 19 Jul 2001 08:33:01 -0700
List-id: <scsh-checkins.lists.sourceforge.net>
Sender: scsh-checkins-admin@lists.sourceforge.net
Update of /cvsroot/scsh/scx/c/xlib
In directory usw-pr-cvs1:/tmp/cvs-serv26950

Modified Files:
        event.c 
Log Message:
added Get_Motion_Events. moved Event_Syms table to type.c. removed
commented code.


Index: event.c
===================================================================
RCS file: /cvsroot/scsh/scx/c/xlib/event.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** event.c     2001/07/16 11:55:03     1.4
--- event.c     2001/07/19 15:32:59     1.5
***************
*** 2,40 ****
  #include "scheme48.h"
  
- SYMDESCR Event_Syms[] = {
-   { "key-press",       KeyPress },
-   { "key-release",     KeyRelease },
-   { "button-press",    ButtonPress },
-   { "button-release",  ButtonRelease },
-   { "motion-notify",   MotionNotify },
-   { "enter-notify",    EnterNotify },
-   { "leave-notify",    LeaveNotify },
-   { "focus-in",        FocusIn },
-   { "focus-out",       FocusOut },
-   { "keymap-notify",   KeymapNotify },
-   { "expose",          Expose },
-   { "graphics-expose", GraphicsExpose },
-   { "no-expose",       NoExpose },
-   { "visibility-notify", VisibilityNotify },
-   { "create-notify",   CreateNotify },
-   { "destroy-notify",  DestroyNotify },
-   { "unmap-notify",    UnmapNotify },
-   { "map-notify",      MapNotify },
-   { "map-request",     MapRequest },
-   { "reparent-notify", ReparentNotify },
-   { "configure-notify", ConfigureNotify },
-   { "configure-request", ConfigureRequest },
-   { "gravity-notify",  GravityNotify },
-   { "resize-request",  ResizeRequest },
-   { "circulate-notify", CirculateNotify },
-   { "circulate-request", CirculateRequest },
-   { "property-notify", PropertyNotify },
-   { "selection-clear", SelectionClear },
-   { "selection-notify", SelectionNotify },
-   { "colormap-notify", ColormapNotify },
-   { "client-message",  ClientMessage },
-   { "mapping-notify",  MappingNotify }
- };
- 
  #define ECAST(name, type) type* name = (type*)e
  #define sidx 4
--- 2,5 ----
***************
*** 361,898 ****
    return s48_enter_integer(XPending(EXTRACT_DISPLAY(Xdisplay)));
  }
- 
- 
- /*
- 
- #include "xlib.h"
- 
- #define MAX_ARGS 14
- 
- static s48_value Argl, Argv;
- 
- static struct event_desc {
-     char *name;
-     int argc;
- } Event_Table[] = {
-     { "event-0",           1 },
-     { "event-1",             1 },
-     { "key-press",          12 },
-     { "key-release",        12 },
-     { "button-press",       12 },
-     { "button-release",     12 },
-     { "motion-notify",      12 },
-     { "enter-notify",       14 },
-     { "leave-notify",       14 },
-     { "focus-in",            4 },
-     { "focus-out",           4 },
-     { "keymap-notify",       3 },
-     { "expose",              7 },
-     { "graphics-expose",     9 },
-     { "no-expose",           4 },
-     { "visibility-notify",   3 },
-     { "create-notify",       9 },
-     { "destroy-notify",      3 },
-     { "unmap-notify",        4 },
-     { "map-notify",          4 },
-     { "map-request",         3 },
-     { "reparent-notify",     7 },
-     { "configure-notify",   10 },
-     { "configure-request",  11 },
-     { "gravity-notify",      5 },
-     { "resize-request",      4 },
-     { "circulate-notify",    4 },
-     { "circulate-request",   4 },
-     { "property-notify",     5 },
-     { "selection-clear",     4 },
-     { "selection-request",   7 },
-     { "selection-notify",    6 },
-     { "colormap-notify",     5 },
-     { "client-message",      4 },
-     { "mapping-notify",      4 },
-     { 0,                     0 }
- };
- 
- struct predicate_arg {
-     s48_value *funcs;
-     s48_value *ret;
- };
- 
- //ARGSUSED
- 
- static Event_Predicate (dpy, ep, ptr) Display *dpy; XEvent *ep;
- #ifdef XLIB_RELEASE_5_OR_LATER
-               XPointer ptr; {
- #else
-               char *ptr; {
- #endif
-     struct predicate_arg *ap = (struct predicate_arg *)ptr;
-     register i;
-     s48_value args;
-     S48_DECLARE_GC_PROTECT(1);
- 
-     if ((i = ep->type) < LASTEvent && !S48_NULL_P (ap->funcs[i])) {
-       args = Get_Event_Args (ep);
-       S48_GC_PROTECT_1 (args);
-       *ap->ret = Funcall (ap->funcs[i], args, 0);
-       Destroy_Event_Args (args);
-       S48_GC_UNPROTECT;
-     }
-     return S48_TRUE_P (*ap->ret);
- }
- 
- // (handle-events display discard? peek? clause...)
- // clause = (event function) or ((event...) function) or (else function)
- // loops/blocks until a function returns x != #f, then returns x.
- // discard?: discard unprocessed events.
- // peek?: don't discard processed events.
- //
- 
- static s48_value P_Handle_Events (argl) s48_value argl; {
-     s48_value next, clause, func, ret, funcs[LASTEvent], args;
-     register i, discard, peek;
-     Display *dpy;
-     char *errmsg = "event occurs more than once";
-     S48_DECLARE_GC_PROTECT(3); struct gcnode gcv;
-     TC_Prolog;
- 
-     TC_Disable;
-     clause = args = S48_NULL;
-     S48_GC_PROTECT_3 (argl, clause, args);
-     next = Eval (S48_CAR (argl));
-     Check_Type (next, T_Display);
-     dpy = DISPLAY(next)->dpy;
-     argl = S48_CDR (argl);
-     next = Eval (S48_CAR (argl));
-     Check_Type (next, T_Boolean);
-     discard = S48_TRUE_P (next);
-     argl = S48_CDR (argl);
-     next = Eval (S48_CAR (argl));
-     Check_Type (next, T_Boolean);
-     peek = S48_TRUE_P (next);
-     for (i = 0; i < LASTEvent; i++)
-       funcs[i] = S48_NULL;
-     gcv.gclen = 1+LASTEvent; gcv.gcobj = funcs; gcv.next = &gc3; GC_List = 
&gcv;
-     for (argl = S48_CDR (argl); !S48_NULL_P (argl); argl = S48_CDR (argl)) {
-       clause = S48_CAR (argl);
-       Check_List (clause);
-       if (Fast_Length (clause) != 2)
-           Primitive_Error ("badly formed event clause");
-       func = Eval (S48_CAR (S48_CDR (clause)));
-       Check_Procedure (func);
-       clause = S48_CAR (clause);
-       if (S48_EQ_P(clause, Sym_Else)) {
-           for (i = 0; i < LASTEvent; i++)
-               if (S48_NULL_P (funcs[i])) funcs[i] = func;
-       } else {
-           if (S48_PAIR_P(clause)) {
-               for (; !S48_NULL_P (clause); clause = S48_CDR (clause)) {
-                   i = Encode_Event (S48_CAR (clause));
-                   if (!S48_NULL_P (funcs[i]))
-                       Primitive_Error (errmsg);
-                   funcs[i] = func;
-               }
-           } else {
-               i = Encode_Event (clause);
-               if (!S48_NULL_P (funcs[i]))
-                   Primitive_Error (errmsg);
-               funcs[i] = func;
-           }
-       }
-     }
-     ret = S48_FALSE;
-     while (!S48_TRUE_P (ret)) {
-       XEvent e;
-       if (discard) {
-           (peek ? XPeekEvent : XNextEvent) (dpy, &e);
-           if ((i = e.type) < LASTEvent && !S48_NULL_P (funcs[i])) {
-               args = Get_Event_Args (&e);
-               ret = Funcall (funcs[i], args, 0);
-               Destroy_Event_Args (args);
-           } else {
-               if (peek)
-                   XNextEvent (dpy, &e);  // discard it
-           }
-       } else {
-           struct predicate_arg a;
-           a.funcs = funcs;
-           a.ret = &ret;
-           (peek ? XPeekIfEvent : XIfEvent) (dpy, &e, Event_Predicate,
- #ifdef XLIB_RELEASE_5_OR_LATER
-               (XPointer)&a);
- #else
-               (char *)&a);
- #endif
-       }
-     }
-     S48_GC_UNPROTECT;
-     TC_Enable;
-     return ret;
- }
- 
- static s48_value Get_Time_Arg (t) Time t; {
-     return t == CurrentTime ? Sym_Now : s48_enter_integer ((unsigned long)t);
- }
- 
- s48_value Get_Event_Args (ep) XEvent *ep; {
-     s48_value tmpargs[MAX_ARGS];
-     register e, i;
-     register s48_value *a, *vp;
-     struct gcnode gcv;
-     s48_value dummy;
-     S48_DECLARE_GC_PROTECT(1);
- 
-     e = ep->type;
-     dummy = S48_NULL;
-     a = tmpargs;
-     for (i = 0; i < MAX_ARGS; i++)
-       a[i] = S48_NULL;
-     S48_GC_PROTECT_1 (dummy);
-     gcv.gclen = 1 + MAX_ARGS; gcv.gcobj = a; gcv.next = &gc1; GC_List = &gcv;
-     switch (e) {
-     case KeyPress: case KeyRelease:
-     case ButtonPress: case ButtonRelease:
-     case MotionNotify:
-     case EnterNotify: case LeaveNotify: {
-       register XKeyEvent *p = (XKeyEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->window);
-       a[2] = Make_Window (0, p->display, p->root);
-       a[3] = Make_Window (0, p->display, p->subwindow);
-       a[4] = Get_Time_Arg (p->time);
-       a[5] = s48_enter_integer (p->x);
-       a[6] = s48_enter_integer (p->y);
-       a[7] = s48_enter_integer (p->x_root);
-       a[8] = s48_enter_integer (p->y_root);
-       if (e == KeyPress || e == KeyRelease) {
-           a[9] = Bits_To_Symbols ((unsigned long)p->state, 1, State_Syms);
-           a[10] = s48_enter_integer (p->keycode);
-           a[11] = p->same_screen ? S48_TRUE : S48_FALSE;
-       } else if (e == ButtonPress || e == ButtonRelease) {
-           register XButtonEvent *q = (XButtonEvent *)ep;
-           a[9] = Bits_To_Symbols ((unsigned long)q->state, 1, State_Syms);
-           a[10] = Bits_To_Symbols ((unsigned long)q->button, 0, Button_Syms);
-           a[11] = q->same_screen ? S48_TRUE : S48_FALSE;
-       } else if (e == MotionNotify) {
-           register XMotionEvent *q = (XMotionEvent *)ep;
-           a[9] = Bits_To_Symbols ((unsigned long)q->state, 1, State_Syms);
-           a[10] = q->is_hint ? S48_TRUE : S48_FALSE;
-           a[11] = q->same_screen ? S48_TRUE : S48_FALSE;
-       } else {
-           register XCrossingEvent *q = (XCrossingEvent *)ep;
-           a[9] = Bits_To_Symbols ((unsigned long)q->mode, 0, Cross_Mode_Syms);
-           a[10] = Bits_To_Symbols ((unsigned long)q->detail, 0,
-               Cross_Detail_Syms);
-           a[11] = q->same_screen ? S48_TRUE : S48_FALSE;
-           a[12] = q->focus ? S48_TRUE : S48_FALSE;
-           a[13] = Bits_To_Symbols ((unsigned long)q->state, 1, Button_Syms);
-       }
-     } break;
-     case FocusIn: case FocusOut: {
-       register XFocusChangeEvent *p = (XFocusChangeEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->window);
-       a[2] = Bits_To_Symbols ((unsigned long)p->mode, 0, Cross_Mode_Syms);
-       a[3] = Bits_To_Symbols ((unsigned long)p->detail, 0, Focus_Detail_Syms);
-     } break;
-     case KeymapNotify: {
-       register XKeymapEvent *p = (XKeymapEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->window);
-       a[2] = Make_String (p->key_vector, 32);
-     } break;
-     case Expose: {
-       register XExposeEvent *p = (XExposeEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->window);
-       a[2] = s48_enter_integer (p->x);
-       a[3] = s48_enter_integer (p->y);
-       a[4] = s48_enter_integer (p->width);
-       a[5] = s48_enter_integer (p->height);
-       a[6] = s48_enter_integer (p->count);
-     } break;
-     case GraphicsExpose: {
-       register XGraphicsExposeEvent *p = (XGraphicsExposeEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->drawable);
-       a[2] = s48_enter_integer (p->x);
-       a[3] = s48_enter_integer (p->y);
-       a[4] = s48_enter_integer (p->width);
-       a[5] = s48_enter_integer (p->height);
-       a[6] = s48_enter_integer (p->count);
-       a[7] = s48_enter_integer (p->major_code);
-       a[8] = s48_enter_integer (p->minor_code);
-     } break;
-     case NoExpose: {
-       register XNoExposeEvent *p = (XNoExposeEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->drawable);
-       a[2] = s48_enter_integer (p->major_code);
-       a[3] = s48_enter_integer (p->minor_code);
-     } break;
-     case VisibilityNotify: {
-       register XVisibilityEvent *p = (XVisibilityEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->window);
-       a[2] = Bits_To_Symbols ((unsigned long)p->state, 0, Visibility_Syms);
-     } break;
-     case CreateNotify: {
-       register XCreateWindowEvent *p = (XCreateWindowEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->parent);
-       a[2] = Make_Window (0, p->display, p->window);
-       a[3] = s48_enter_integer (p->x);
-       a[4] = s48_enter_integer (p->y);
-       a[5] = s48_enter_integer (p->width);
-       a[6] = s48_enter_integer (p->height);
-       a[7] = s48_enter_integer (p->border_width);
-       a[8] = p->override_redirect ? S48_TRUE : S48_FALSE;
-     } break;
-     case DestroyNotify: {
-       register XDestroyWindowEvent *p = (XDestroyWindowEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->event);
-       a[2] = Make_Window (0, p->display, p->window);
-     } break;
-     case UnmapNotify: {
-       register XUnmapEvent *p = (XUnmapEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->event);
-       a[2] = Make_Window (0, p->display, p->window);
-       a[3] = p->from_configure ? S48_TRUE : S48_FALSE;
-     } break;
-     case MapNotify: {
-       register XMapEvent *p = (XMapEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->event);
-       a[2] = Make_Window (0, p->display, p->window);
-       a[3] = p->override_redirect ? S48_TRUE : S48_FALSE;
-     } break;
-     case MapRequest: {
-       register XMapRequestEvent *p = (XMapRequestEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->parent);
-       a[2] = Make_Window (0, p->display, p->window);
-     } break;
-     case ReparentNotify: {
-       register XReparentEvent *p = (XReparentEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->event);
-       a[2] = Make_Window (0, p->display, p->window);
-       a[3] = Make_Window (0, p->display, p->parent);
-       a[4] = s48_enter_integer (p->x);
-       a[5] = s48_enter_integer (p->y);
-       a[6] = p->override_redirect ? S48_TRUE : S48_FALSE;
-     } break;
-     case ConfigureNotify: {
-       register XConfigureEvent *p = (XConfigureEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->event);
-       a[2] = Make_Window (0, p->display, p->window);
-       a[3] = s48_enter_integer (p->x);
-       a[4] = s48_enter_integer (p->y);
-       a[5] = s48_enter_integer (p->width);
-       a[6] = s48_enter_integer (p->height);
-       a[7] = s48_enter_integer (p->border_width);
-       a[8] = Make_Window (0, p->display, p->above);
-       a[9] = p->override_redirect ? S48_TRUE : S48_FALSE;
-     } break;
-     case ConfigureRequest: {
-       register XConfigureRequestEvent *p = (XConfigureRequestEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->parent);
-       a[2] = Make_Window (0, p->display, p->window);
-       a[3] = s48_enter_integer (p->x);
-       a[4] = s48_enter_integer (p->y);
-       a[5] = s48_enter_integer (p->width);
-       a[6] = s48_enter_integer (p->height);
-       a[7] = s48_enter_integer (p->border_width);
-       a[8] = Make_Window (0, p->display, p->above);
-       a[9] = Bits_To_Symbols ((unsigned long)p->detail, 0, Stack_Mode_Syms);
-       a[10] = s48_enter_integer (p->value_mask);
-     } break;
-     case GravityNotify: {
-       register XGravityEvent *p = (XGravityEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->event);
-       a[2] = Make_Window (0, p->display, p->window);
-       a[3] = s48_enter_integer (p->x);
-       a[4] = s48_enter_integer (p->y);
-     } break;
-     case ResizeRequest: {
-       register XResizeRequestEvent *p = (XResizeRequestEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->window);
-       a[2] = s48_enter_integer (p->width);
-       a[3] = s48_enter_integer (p->height);
-     } break;
-     case CirculateNotify: {
-       register XCirculateEvent *p = (XCirculateEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->event);
-       a[2] = Make_Window (0, p->display, p->window);
-       a[3] = Bits_To_Symbols ((unsigned long)p->place, 0, Place_Syms);
-     } break;
-     case CirculateRequest: {
-       register XCirculateRequestEvent *p = (XCirculateRequestEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->parent);
-       a[2] = Make_Window (0, p->display, p->window);
-       a[3] = Bits_To_Symbols ((unsigned long)p->place, 0, Place_Syms);
-     } break;
-     case PropertyNotify: {
-       register XPropertyEvent *p = (XPropertyEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->window);
-       a[2] = Make_Atom (p->atom);
-       a[3] = Get_Time_Arg (p->time);
-       a[4] = Bits_To_Symbols ((unsigned long)p->state, 0, Prop_Syms);
-     } break;
-     case SelectionClear: {
-       register XSelectionClearEvent *p = (XSelectionClearEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->window);
-       a[2] = Make_Atom (p->selection);
-       a[3] = Get_Time_Arg (p->time);
-     } break;
-     case SelectionRequest: {
-       register XSelectionRequestEvent *p = (XSelectionRequestEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->owner);
-       a[2] = Make_Window (0, p->display, p->requestor);
-       a[3] = Make_Atom (p->selection);
-       a[4] = Make_Atom (p->target);
-       a[5] = Make_Atom (p->property);
-       a[6] = Get_Time_Arg (p->time);
-     } break;
-     case SelectionNotify: {
-       register XSelectionEvent *p = (XSelectionEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->requestor);
-       a[2] = Make_Atom (p->selection);
-       a[3] = Make_Atom (p->target);
-       a[4] = Make_Atom (p->property);
-       a[5] = Get_Time_Arg (p->time);
-     } break;
-     case ColormapNotify: {
-       register XColormapEvent *p = (XColormapEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->window);
-       a[2] = Make_Colormap (0, p->display, p->colormap);
-       a[3] = p->new ? S48_TRUE : S48_FALSE;
-       a[4] = p->state == ColormapInstalled ? S48_TRUE : S48_FALSE;
-     } break;
-     case ClientMessage: {
-       register XClientMessageEvent *p = (XClientMessageEvent *)ep;
-       register i;
- 
-       a[1] = Make_Window (0, p->display, p->window);
-       a[2] = Make_Atom (p->message_type);
-       switch (p->format) {
-       case 8:
-           a[3] = Make_String (p->data.b, 20);
-           break;
-       case 16:
-           a[3] = s48_make_vector (10, S48_NULL);
-           for (i = 0; i < 10; i++)
-               S48_VECTOR_SET(a[3], i, s48_enter_integer (p->data.s[i]);)
-           break;
-       case 32:
-           a[3] = s48_make_vector (5, S48_NULL);
-           for (i = 0; i < 5; i++)
-               S48_VECTOR_SET(a[3], i, s48_enter_integer (p->data.l[i]);)
-           break;
-       default:
-           a[3] = s48_enter_integer (p->format);   // ???
-       }
-     } break;
-     case MappingNotify: {
-       register XMappingEvent *p = (XMappingEvent *)ep;
-       a[1] = Make_Window (0, p->display, p->window);
-       a[2] = Bits_To_Symbols ((unsigned long)p->request, 0, Mapping_Syms);
-       a[3] = s48_enter_integer (p->first_keycode);
-       a[4] = s48_enter_integer (p->count);
-     } break;
-     }
- 
-     a[0] = Intern (Event_Table[e].name);
-     for (vp = VECTOR(Argv)->data, i = 0; i < Event_Table[e].argc; i++) {
-       if (i) vp++;
-       S48_CAR (*vp) = a[i];
-       S48_CDR (*vp) = vp[1];
-     }
-     S48_CDR (*vp) = S48_NULL;
-     S48_GC_UNPROTECT;
-     return Argl;
- }
- 
- void Destroy_Event_Args (args) s48_value args; {
-     s48_value t;
- 
-     for (t = args; !S48_NULL_P (t); t = S48_CDR (t))
-       S48_CAR (t) = S48_NULL;
- }
- 
- */
- 
- 
- /*
- 
- Encode_Event (e) s48_value e; {
-     s48_value s;
-     register char *p;
-     register struct event_desc *ep;
-     register n;
- 
-     Check_Type (e, T_Symbol);
-     s = s48_extract_string(S48_SYMBOL_TO_STRING(e));
-     p = STRING(s)->data;
-     n = STRING(s)->size;
-     for (ep = Event_Table; ep->name; ep++)
-       if (n && strncmp (ep->name, p, n) == 0) break;
-     if (ep->name == 0)
-       Primitive_Error ("no such event: ~s", e);
-     return ep-Event_Table;
- }
- 
- static s48_value P_Get_Motion_Events (w, from, to) s48_value w, from, to; {
-     XTimeCoord *p;
-     int n;
-     register i;
-     s48_value e, ret;
-     S48_DECLARE_GC_PROTECT(2);
- 
-     Check_Type (w, T_Window);
-     p = XGetMotionEvents (WINDOW(w)->dpy, WINDOW(w)->win, Get_Time (from),
-       Get_Time (to), &n);
-     e = ret = s48_make_vector (n, S48_NULL);
-     S48_GC_PROTECT_2 (ret, e);
-     for (i = 0; i < n; i++) {
-       e = P_Make_List (s48_enter_integer (3), S48_NULL);
-       S48_VECTOR_SET(ret, i, e;)
-       S48_CAR (e) = Get_Time_Arg (p[i].time); e = S48_CDR (e);
-       S48_CAR (e) = s48_enter_integer (p[i].x); e = S48_CDR (e);
-       S48_CAR (e) = s48_enter_integer (p[i].y);
-     }
-     S48_GC_UNPROTECT;
-     XFree ((char *)p);
-     return ret;
- }
- 
- static s48_value P_Event_Listen (d, wait_flag) s48_value d, wait_flag; {
-     Display *dpy;
-     register n;
-     XEvent e;
- 
-     Check_Type (d, T_Display);
-     Check_Type (wait_flag, T_Boolean);
-     dpy = DISPLAY(d)->dpy;
-     n = XPending (dpy);
-     if (n == 0 && S48_EQ_P(wait_flag, S48_TRUE)) {
-       XPeekEvent (dpy, &e);
-       n = XPending (dpy);
-     }
-     return s48_enter_integer (n);
- }
  
! elk_init_xlib_event () {
!     s48_value t;
!     register i;
! 
!     Argl = P_Make_List (s48_enter_integer (MAX_ARGS), S48_NULL);
!     Global_S48_GC_PROTECT_1 (Argl);
!     Argv = s48_make_vector (MAX_ARGS, S48_NULL);
!     Global_S48_GC_PROTECT_1 (Argv);
!     for (i = 0, t = Argl; i < MAX_ARGS; i++, t = S48_CDR (t))
!       S48_VECTOR_SET(Argv, i, t;)
!     Define_Primitive (P_Handle_Events,   "handle-events",     3, MANY, 
NOEVAL);
!     Define_Primitive (P_Get_Motion_Events,
!                       "get-motion-events",                  3, 3, EVAL);
!     Define_Primitive (P_Event_Listen,    "event-listen",      2, 2, EVAL);
  }
  
- */
- 
  void s48_init_event(void) {
    S48_EXPORT_FUNCTION(Next_Event);
    S48_EXPORT_FUNCTION(Peek_Event);
    S48_EXPORT_FUNCTION(Events_Pending);
!   // Encode_Event
!   // Get_Motion_Events ??
  }
    
--- 326,358 ----
    return s48_enter_integer(XPending(EXTRACT_DISPLAY(Xdisplay)));
  }
  
! s48_value Get_Motion_Events(s48_value Xdisplay, s48_value Xwindow,
!                           s48_value from, s48_value to) {
!   int n,i;
!   XTimeCoord *p = XGetMotionEvents(EXTRACT_DISPLAY(Xdisplay),
!                                  EXTRACT_WINDOW(Xwindow),
!                                  EXTRACT_TIME(from),
!                                  EXTRACT_TIME(to),
!                                  &n);
!   s48_value v = s48_make_vector(n, S48_FALSE);
!   s48_value l = S48_NULL;
!   S48_DECLARE_GC_PROTECT(2);
!   S48_GC_PROTECT_2(v,l);
!   for (i = 0; i < n; i++) {
!     l = s48_cons(ENTER_TIME(p[i].time),
!                s48_cons(s48_enter_integer(p[i].x),
!                         s48_cons(s48_enter_integer(p[i].y), S48_NULL)));
!     S48_VECTOR_SET(v, i, l);
!   }
!   S48_GC_UNPROTECT();
!   XFree((char*)p);
!   return v;
  }
  
  void s48_init_event(void) {
    S48_EXPORT_FUNCTION(Next_Event);
    S48_EXPORT_FUNCTION(Peek_Event);
    S48_EXPORT_FUNCTION(Events_Pending);
!   S48_EXPORT_FUNCTION(Get_Motion_Events);
  }
    



<Prev in Thread] Current Thread [Next in Thread>
  • [Scsh-checkins] CVS: scx/c/xlib event.c,1.4,1.5, David Frese <=