Fixed some issues regarding events interfering with each other

This commit is contained in:
Brian Hrebec 2012-03-11 13:05:59 -07:00
parent 379640f0b5
commit 7315f23a90

View file

@ -12,11 +12,6 @@
The latest version of joy2script can be found at The latest version of joy2script can be found at
http://www.brianhrebec.com/joy2script http://www.brianhrebec.com/joy2script
Revision History
----------------
2.0 (3 June 2008) - Added repeat timers, reworked the config file format
1.0 (3 June 2008) - First version.
*/ */
#include "config.h" #include "config.h"
@ -113,6 +108,7 @@ void make_daemon();
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
int i;
struct js_event js; struct js_event js;
fd_set js_fdset; fd_set js_fdset;
@ -124,7 +120,7 @@ int main(int argc, char **argv)
JOY2SCRIPT_VERSION, __DATE__, __TIME__); JOY2SCRIPT_VERSION, __DATE__, __TIME__);
memset(mode, 0, sizeof(mode)); memset(mode, 0, sizeof(mode));
argc=check_config(argc, argv); argc=check_config(argc, argv);
process_args(argc, argv); process_args(argc, argv);
@ -145,9 +141,12 @@ int main(int argc, char **argv)
return 1; return 1;
} }
FD_ZERO(&js_fdset); /* Invalidate all fds */
for (i = 0; i < numaxes; i++)
mode[current_mode].axis[i].timer_fd = -1;
memset(&js, 0, sizeof(struct js_event)); for (i = 0; i < numbuttons; i++)
mode[current_mode].button[i].timer_fd = -1;
signal(SIGINT, cleanup); signal(SIGINT, cleanup);
signal(SIGTERM, cleanup); signal(SIGTERM, cleanup);
@ -162,11 +161,11 @@ int main(int argc, char **argv)
puts("Initialization complete, entering main loop, ^C to exit..."); puts("Initialization complete, entering main loop, ^C to exit...");
} }
/* Main Loop */ /* Main Loop */
for(;;) for(;;)
{ {
int i; FD_ZERO(&js_fdset);
memset(&js, 0, sizeof(struct js_event)); memset(&js, 0, sizeof(struct js_event));
/* Add timer fds to set for select() */ /* Add timer fds to set for select() */
@ -564,7 +563,6 @@ void parse_config()
mode[current_mode].axis[current_item].deadzone = DEFAULT_DEADZONE; mode[current_mode].axis[current_item].deadzone = DEFAULT_DEADZONE;
mode[current_mode].axis[current_item].deadzone_size = mode[current_mode].axis[current_item].deadzone_size =
DEFAULT_DEADZONE_SIZE; DEFAULT_DEADZONE_SIZE;
mode[current_mode].axis[current_item].timer_fd = -1;
parsing_axis=1; parsing_axis=1;
#if DEBUG #if DEBUG
printf("Found axis: %d\n", current_item); printf("Found axis: %d\n", current_item);