diff options
-rw-r--r-- | src/glut/directfb/events.c | 70 | ||||
-rw-r--r-- | src/glut/directfb/internal.h | 7 |
2 files changed, 48 insertions, 29 deletions
diff --git a/src/glut/directfb/events.c b/src/glut/directfb/events.c index 17c58483c9..babd617e50 100644 --- a/src/glut/directfb/events.c +++ b/src/glut/directfb/events.c @@ -50,7 +50,7 @@ glutForceJoystickFunc( void ) { if (g_game && joystick && joystick_func) { joystick_func( g_game->buttons, - g_game->cx, g_game->cy, g_game->cz ); + g_game->jx, g_game->jy, g_game->jz ); } } @@ -270,7 +270,7 @@ __glutInputEvent( DFBInputEvent *e ) if (joystick_func) { __glutSetWindow( g_game ); joystick_func( g_game->buttons, - g_game->cx, g_game->cy, g_game->cz ); + g_game->jx, g_game->jy, g_game->jz ); } } else { @@ -287,7 +287,7 @@ __glutInputEvent( DFBInputEvent *e ) if (joystick_func) { __glutSetWindow( g_game ); joystick_func( g_game->buttons, - g_game->cx, g_game->cy, g_game->cz ); + g_game->jx, g_game->jy, g_game->jz ); } } else { @@ -299,36 +299,52 @@ __glutInputEvent( DFBInputEvent *e ) } break; case DIET_AXISMOTION: - switch (e->axis) { - case DIAI_X: - if (e->flags & DIEF_AXISABS) - g_game->cx = e->axisabs; - else if (e->flags & DIEF_AXISREL) - g_game->cx += e->axisrel; - break; - case DIAI_Y: - if (e->flags & DIEF_AXISABS) - g_game->cy = e->axisabs; - else if (e->flags & DIEF_AXISREL) - g_game->cy += e->axisrel; - break; - case DIAI_Z: - if (e->flags & DIEF_AXISABS) - g_game->cz = e->axisabs; - else if (e->flags & DIEF_AXISREL) - g_game->cz += e->axisrel; - break; - default: - return; - } if (e->device_id == DIDID_JOYSTICK) { + switch (e->axis) { + case DIAI_X: + if (e->flags & DIEF_AXISABS) + g_game->jx = e->axisabs; + else if (e->flags & DIEF_AXISREL) + g_game->jx += e->axisrel; + break; + case DIAI_Y: + if (e->flags & DIEF_AXISABS) + g_game->jy = e->axisabs; + else if (e->flags & DIEF_AXISREL) + g_game->jy += e->axisrel; + break; + case DIAI_Z: + if (e->flags & DIEF_AXISABS) + g_game->jz = e->axisabs; + else if (e->flags & DIEF_AXISREL) + g_game->jz += e->axisrel; + break; + default: + break; + } if (joystick_func) { __glutSetWindow( g_game ); joystick_func( g_game->buttons, - g_game->cx, g_game->cy, g_game->cz ); + g_game->jx, g_game->jy, g_game->jz ); } } - else if (e->axis != DIAI_Z) { + else { + switch (e->axis) { + case DIAI_X: + if (e->flags & DIEF_AXISABS) + g_game->cx = e->axisabs; + else if (e->flags & DIEF_AXISREL) + g_game->cx += e->axisrel; + break; + case DIAI_Y: + if (e->flags & DIEF_AXISABS) + g_game->cy = e->axisabs; + else if (e->flags & DIEF_AXISREL) + g_game->cy += e->axisrel; + break; + default: + return; + } if (e->buttons && motion_func) { __glutSetWindow( g_game ); motion_func( g_game->cx, g_game->cy ); diff --git a/src/glut/directfb/internal.h b/src/glut/directfb/internal.h index 787ef89543..2e986c9f28 100644 --- a/src/glut/directfb/internal.h +++ b/src/glut/directfb/internal.h @@ -61,10 +61,13 @@ typedef struct __GlutWindow_s { IDirectFBSurface *surface; IDirectFBGL *gl; - /* pointer position in fullscreen mode */ + /* cursor position in fullscreen mode */ int cx; int cy; - int cz; + /* joystick position */ + int jx; + int jy; + int jz; /* pressed modifiers */ int modifiers; /* pressed buttons */ |