- int frag = 0, bsize, buffers;\r
-\r
- // if no settings change, we don't need to do anything\r
- if (rate == s_oldrate && s_oldbits == bits && s_oldstereo == stereo) return;\r
-\r
- if (sounddev > 0) close(sounddev);\r
- sounddev = open("/dev/dsp", O_WRONLY|O_ASYNC);\r
- if (sounddev == -1)\r
- printf("open(\"/dev/dsp\") failed with %i\n", errno);\r
-\r
- ioctl(sounddev, SNDCTL_DSP_SPEED, &rate);\r
- ioctl(sounddev, SNDCTL_DSP_SETFMT, &bits);\r
- ioctl(sounddev, SNDCTL_DSP_STEREO, &stereo);\r
- // calculate buffer size\r
- buffers = 16;\r
- bsize = rate / 32;\r
- if (rate > 22050) { bsize*=4; buffers*=2; } // 44k mode seems to be very demanding\r
- while ((bsize>>=1)) frag++;\r
- frag |= buffers<<16; // 16 buffers\r
- ioctl(sounddev, SNDCTL_DSP_SETFRAGMENT, &frag);\r
- printf("gp2x_set_sound: %i/%ibit/%s, %i buffers of %i bytes\n",\r
- rate, bits, stereo?"stereo":"mono", frag>>16, 1<<(frag&0xffff));\r
-\r
- s_oldrate = rate; s_oldbits = bits; s_oldstereo = stereo;\r
- usleep(100000);\r
-}\r
+ unsigned short pressure;\r
+ unsigned short x;\r
+ unsigned short y;\r
+ unsigned short pad;\r
+ struct timeval stamp;\r
+} UCB1X00_TS_EVENT;\r
+\r
+int gp2x_touchpad_read(int *x, int *y)\r
+{\r
+ UCB1X00_TS_EVENT event;\r
+ static int zero_seen = 0;\r
+ int retval;\r