~ubuntu-branches/ubuntu/natty/libsdl1.2/natty

« back to all changes in this revision

Viewing changes to src/joystick/bsd/SDL_sysjoystick.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2007-12-05 20:29:43 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20071205202943-ryogi07hodn5cdif
Tags: 1.2.12-1ubuntu1
* Merge with Debian; remaining changes:
  - Remove svgalib support.
  - Prefer libgl1-mesa-dev build-dependency over xlibmesa-gl-dev.
  - Build for lpia as for i386.
* Link using -Wl,-Bsymbolic-functions.

Show diffs side-by-side

added added

removed removed

Lines of Context:
123
123
        struct  report_desc *repdesc;
124
124
        struct  report inreport;
125
125
        int     axis_map[JOYAXE_count]; /* map present JOYAXE_* to 0,1,..*/
 
126
        int     x;
 
127
        int     y;
 
128
        int     xmin;
 
129
        int     ymin;
 
130
        int     xmax;
 
131
        int     ymax;
126
132
};
127
133
 
128
134
static char *joynames[MAX_JOYS];
257
263
        joy->hwdata = hw;
258
264
        hw->fd = fd;
259
265
        hw->path = strdup(path);
 
266
        hw->x = 0;
 
267
        hw->y = 0;
 
268
        hw->xmin = 0xffff;
 
269
        hw->ymin = 0xffff;
 
270
        hw->xmax = 0;
 
271
        hw->ymax = 0;
260
272
        if (! SDL_strncmp(path, "/dev/joy", 8)) {
261
273
                hw->type = BSDJOY_JOY;
262
274
                joy->naxes = 2;
380
392
 
381
393
#if defined(__FREEBSD__) || SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H
382
394
        struct joystick gameport;
383
 
        static int x, y, xmin = 0xffff, ymin = 0xffff, xmax = 0, ymax = 0;
384
395
 
385
396
        if (joy->hwdata->type == BSDJOY_JOY) {
386
397
                if (read(joy->hwdata->fd, &gameport, sizeof gameport) != sizeof gameport)
387
398
                        return;
388
 
                if (abs(x - gameport.x) > 8) {
389
 
                        x = gameport.x;
390
 
                        if (x < xmin) {
391
 
                                xmin = x;
392
 
                        }
393
 
                        if (x > xmax) {
394
 
                                xmax = x;
395
 
                        }
396
 
                        if (xmin == xmax) {
397
 
                                xmin--;
398
 
                                xmax++;
399
 
                        }
400
 
                        v = (Sint32)x;
401
 
                        v -= (xmax + xmin + 1)/2;
402
 
                        v *= 32768/((xmax - xmin + 1)/2);
 
399
                if (abs(joy->hwdata->x - gameport.x) > 8) {
 
400
                        joy->hwdata->x = gameport.x;
 
401
                        if (joy->hwdata->x < joy->hwdata->xmin) {
 
402
                                joy->hwdata->xmin = joy->hwdata->x;
 
403
                        }
 
404
                        if (joy->hwdata->x > joy->hwdata->xmax) {
 
405
                                joy->hwdata->xmax = joy->hwdata->x;
 
406
                        }
 
407
                        if (joy->hwdata->xmin == joy->hwdata->xmax) {
 
408
                                joy->hwdata->xmin--;
 
409
                                joy->hwdata->xmax++;
 
410
                        }
 
411
                        v = (Sint32)joy->hwdata->x;
 
412
                        v -= (joy->hwdata->xmax + joy->hwdata->xmin + 1)/2;
 
413
                        v *= 32768/((joy->hwdata->xmax - joy->hwdata->xmin + 1)/2);
403
414
                        SDL_PrivateJoystickAxis(joy, 0, v);
404
415
                }
405
 
                if (abs(y - gameport.y) > 8) {
406
 
                        y = gameport.y;
407
 
                        if (y < ymin) {
408
 
                                ymin = y;
409
 
                        }
410
 
                        if (y > ymax) {
411
 
                                ymax = y;
412
 
                        }
413
 
                        if (ymin == ymax) {
414
 
                                ymin--;
415
 
                                ymax++;
416
 
                        }
417
 
                        v = (Sint32)y;
418
 
                        v -= (ymax + ymin + 1)/2;
419
 
                        v *= 32768/((ymax - ymin + 1)/2);
 
416
                if (abs(joy->hwdata->y - gameport.y) > 8) {
 
417
                        joy->hwdata->y = gameport.y;
 
418
                        if (joy->hwdata->y < joy->hwdata->ymin) {
 
419
                                joy->hwdata->ymin = joy->hwdata->y;
 
420
                        }
 
421
                        if (joy->hwdata->y > joy->hwdata->ymax) {
 
422
                                joy->hwdata->ymax = joy->hwdata->y;
 
423
                        }
 
424
                        if (joy->hwdata->ymin == joy->hwdata->ymax) {
 
425
                                joy->hwdata->ymin--;
 
426
                                joy->hwdata->ymax++;
 
427
                        }
 
428
                        v = (Sint32)joy->hwdata->y;
 
429
                        v -= (joy->hwdata->ymax + joy->hwdata->ymin + 1)/2;
 
430
                        v *= 32768/((joy->hwdata->ymax - joy->hwdata->ymin + 1)/2);
420
431
                        SDL_PrivateJoystickAxis(joy, 1, v);
421
432
                }
422
433
                if (gameport.b1 != joy->buttons[0]) {