summaryrefslogtreecommitdiff
path: root/src/glut/directfb
diff options
context:
space:
mode:
Diffstat (limited to 'src/glut/directfb')
-rw-r--r--src/glut/directfb/events.c70
-rw-r--r--src/glut/directfb/internal.h7
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 */