Update of /cvsroot/pure-data/externals/hcs/hid In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23680
Modified Files: TODO hid.c hid.h hid_darwin.c Log Message: first attempt at having one instance do all of the device polling, based on clock_getlogicaltime(). It works for multiple instances in one patch, but does not work for multiple instances in different patches (i.e. they both still seem to get events...)
Index: TODO =================================================================== RCS file: /cvsroot/pure-data/externals/hcs/hid/TODO,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** TODO 2 Jun 2006 21:32:53 -0000 1.26 --- TODO 2 Jun 2006 23:41:36 -0000 1.27 *************** *** 66,69 **** --- 66,71 ---- http://lists.apple.com/archives/mac-games-dev/2005/Oct/msg00060.html
+ - current method only works for instances in the same patch... + ______________________________________________________________________________ = [poll 1( message set to exact delay based on block size
Index: hid_darwin.c =================================================================== RCS file: /cvsroot/pure-data/externals/hcs/hid/hid_darwin.c,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** hid_darwin.c 2 Jun 2006 21:32:53 -0000 1.25 --- hid_darwin.c 2 Jun 2006 23:41:36 -0000 1.26 *************** *** 625,630 **** void hid_get_events(t_hid *x) { - //debug_print(LOG_DEBUG,"hid_get_events"); - unsigned int i; pRecDevice pCurrentHIDDevice; --- 625,628 ---- *************** *** 661,670 **** (pRecElement)current_element->os_pointer); } - if(current_element->previous_value != current_element->value) - { - hid_output_event(x, current_element); - if(!current_element->relative) - current_element->previous_value = current_element->value; - } } } --- 659,662 ----
Index: hid.h =================================================================== RCS file: /cvsroot/pure-data/externals/hcs/hid/hid.h,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** hid.h 2 Jun 2006 21:32:53 -0000 1.25 --- hid.h 2 Jun 2006 23:41:36 -0000 1.26 *************** *** 43,46 **** --- 43,47 ---- void *x_ff_device; short x_device_number; + short x_instance; t_int x_has_ff; t_int x_started; *************** *** 63,66 **** --- 64,70 ---- t_int hid_instance_count;
+ /* this is used to test for the first instance to execute */ + double last_execute_time[MAX_DEVICES]; + extern unsigned short global_debug_level;
Index: hid.c =================================================================== RCS file: /cvsroot/pure-data/externals/hcs/hid/hid.c,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** hid.c 2 Jun 2006 21:32:53 -0000 1.26 --- hid.c 2 Jun 2006 23:41:36 -0000 1.27 *************** *** 340,346 **** { // debug_print(LOG_DEBUG,"hid_read"); ! ! hid_get_events(x); if (x->x_started) { --- 340,364 ---- { // debug_print(LOG_DEBUG,"hid_read"); ! unsigned int i; ! double right_now = clock_getlogicaltime(); ! t_hid_element *current_element; + if(right_now > last_execute_time[x->x_device_number]) + { + hid_get_events(x); + last_execute_time[x->x_device_number] = right_now; + /* post("executing: instance %d/%d at %ld", + x->x_instance, hid_instance_count, right_now);*/ + } + for(i=0; i< element_count[x->x_device_number]; ++i) + { + current_element = element[x->x_device_number][i]; + if(current_element->previous_value != current_element->value) + { + hid_output_event(x, current_element); + if(!current_element->relative) + current_element->previous_value = current_element->value; + } + } if (x->x_started) { *************** *** 352,374 **** }
- /* eventually, this will be used to open devices by long name - static void hid_anything(t_hid *x, t_symbol *s, t_int argc, t_atom *argv) - { - int i; - t_symbol *my_symbol; - //char device_name[MAXPDSTRING]; - - startpost("ANYTHING! selector: %s data:"); - for(i=0; i<argc; ++i) - { - my_symbol = atom_getsymbolarg(i,argc,argv); - if(my_symbol != NULL) - post(" %s",my_symbol->s_name); - else - post(" %f",atom_getfloatarg(i,argc,argv)); - } - } - */ - static void hid_info(t_hid *x) { --- 370,373 ---- *************** *** 412,415 **** --- 411,415 ---- { t_hid *x = (t_hid *)pd_new(hid_class); + unsigned int i;
debug_print(LOG_DEBUG,"hid_%s",s->s_name); *************** *** 435,438 **** --- 435,439 ---- x->x_started = 0; x->x_delay = DEFAULT_DELAY; + for(i=0; i<MAX_DEVICES; ++i) last_execute_time[i] = 0;
x->x_clock = clock_new(x, (t_method)hid_read); *************** *** 444,447 **** --- 445,449 ---- x->x_device_number = get_device_number_from_arguments(argc, argv);
+ x->x_instance = hid_instance_count; hid_instance_count++;