version 1.2 | | version 1.3 |
---|
| | |
#include <stdio.h> | | #include <stdio.h> |
#include <sys/time.h> | | #include <sys/time.h> |
#include <ggi/ggi.h> | | #include <ggi/gii.h> |
| | #include <string.h> |
#include "event.h" | | #include "event.h" |
| | #include "error.h" |
#include "fix.h" | | #include "fix.h" |
| | |
static int initialised=0; | | static int initialised=0; |
| | |
| | #ifdef GGI_VIDEO |
| | #include <ggi/ggi.h> |
extern ggi_visual_t *screenvis; | | extern ggi_visual_t *screenvis; |
| | #endif |
gii_input_t inputs; | | gii_input_t inputs; |
| | |
extern void keyboard_handler(int key, ubyte state); | | extern void keyboard_handler(int key, ubyte state); |
| | |
| | |
if (!initialised) | | if (!initialised) |
event_init(); | | event_init(); |
| | if (inputs==NULL) |
| | return; |
| | // Error("GII error: no inputs (perhaps you need to set GII_INPUT env var)\n"); |
| | |
tv.tv_sec = 0; | | tv.tv_sec = 0; |
tv.tv_usec = 0; | | tv.tv_usec = 0; |
| | |
| | |
void event_close() | | void event_close() |
{ | | { |
| | if (inputs) |
giiClose(inputs); | | giiClose(inputs); |
giiExit(); | | giiExit(); |
} | | } |
| | |
| | #ifdef GII_XWIN |
| | int gii_xwin_initialized=0; |
| | #include <ggi/input/xwin.h> |
| | //void lock_nothing(void){return;} |
| | void init_gii_xwin(Display *disp,Window win){ |
| | printf("gii xwin %i %i\n",initialised,gii_xwin_initialized); |
| | if (!initialised) |
| | event_init(); |
| | if (gii_xwin_initialized){ |
| | gii_event ev; |
| | gii_xwin_cmddata_setparam *giiargs=(gii_xwin_cmddata_setparam *) &ev.cmd.data; |
| | memset(&ev,0,sizeof(gii_cmd_nodata_event)+sizeof(gii_xwin_cmddata_setparam)); |
| | ev.cmd.code=GII_CMDCODE_XWINSETPARAM; |
| | ev.any.type = evCommand; |
| | ev.any.size=sizeof(gii_cmd_nodata_event)+sizeof(gii_xwin_cmddata_setparam); |
| | giiargs->win=win; |
| | giiEventSend(inputs,&ev); |
| | }else{ |
| | gii_input_t inputs2; |
| | gii_inputxwin_arg giiargs; |
| | memset(&giiargs,0,sizeof(giiargs)); |
| | giiargs.disp=disp; |
| | giiargs.win=win; |
| | //giiargs.gglock=lock_nothing; |
| | inputs2=giiOpen("xwin",&giiargs,NULL); |
| | if (inputs2){ |
| | gii_xwin_initialized=1; |
| | if (inputs) |
| | inputs=giiJoinInputs(inputs,inputs2); |
| | else |
| | inputs=inputs2; |
| | } |
| | } |
| | } |
| | #endif |
| | |
int event_init() | | int event_init() |
{ | | { |
| | if (!initialised){ |
giiInit(); | | giiInit(); |
if (!initialised) | | #ifdef GGI_VIDEO |
inputs = ggiJoinInputs(screenvis, NULL); | | inputs = ggiJoinInputs(screenvis, NULL); |
| | #else |
| | inputs=giiOpen(NULL); |
| | #endif |
initialised = 1; | | initialised = 1; |
atexit(event_close); | | atexit(event_close); |
| | } |
return 0; | | return 0; |
} | | } |