Update of /cvsroot/pure-data/externals/io/hidio In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26094
Modified Files: hidio.c hidio.h hidio_darwin.c hidio_types.c Log Message: some changes to compile for Max again on OS X, still crashes when starting to poll
Index: hidio_types.c =================================================================== RCS file: /cvsroot/pure-data/externals/io/hidio/hidio_types.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** hidio_types.c 8 Dec 2006 06:33:26 -0000 1.1 --- hidio_types.c 8 Dec 2006 11:28:25 -0000 1.2 *************** *** 1,4 **** ! #include "m_pd.h" #include "hidio.h"
--- 1,7 ---- ! #ifdef PD #include "m_pd.h" + #else + #include "ext.h" + #endif #include "hidio.h"
Index: hidio.h =================================================================== RCS file: /cvsroot/pure-data/externals/io/hidio/hidio.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** hidio.h 8 Dec 2006 06:33:26 -0000 1.9 --- hidio.h 8 Dec 2006 11:28:25 -0000 1.10 *************** *** 77,83 **** #define REQUEST_READ 2 #define REQUEST_SEND 3 ! #define REQUEST_INFO 4 ! #define REQUEST_CLOSE 5 ! #define REQUEST_QUIT 6
--- 77,84 ---- #define REQUEST_READ 2 #define REQUEST_SEND 3 ! #define REQUEST_PRINT 4 ! #define REQUEST_INFO 5 ! #define REQUEST_CLOSE 6 ! #define REQUEST_QUIT 7
*************** *** 184,188 **** void hidio_build_device_list(void); void hidio_get_events(t_hidio *x); ! void hidio_print(t_hidio* x); /* print info to the console */ void hidio_platform_specific_info(t_hidio* x); /* device info on the status outlet */ void hidio_platform_specific_free(t_hidio *x); --- 185,189 ---- void hidio_build_device_list(void); void hidio_get_events(t_hidio *x); ! void hidio_doprint(t_hidio* x); /* print info to the console */ void hidio_platform_specific_info(t_hidio* x); /* device info on the status outlet */ void hidio_platform_specific_free(t_hidio *x); *************** *** 193,197 **** unsigned short usage);
- /* cross-platform force feedback functions */ t_int hidio_ff_autocenter(t_hidio *x, t_float value); --- 194,197 ----
Index: hidio_darwin.c =================================================================== RCS file: /cvsroot/pure-data/externals/io/hidio/hidio_darwin.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** hidio_darwin.c 8 Dec 2006 06:33:26 -0000 1.3 --- hidio_darwin.c 8 Dec 2006 11:28:25 -0000 1.4 *************** *** 739,743 ****
/* TODO: this should be dumped for [devices( and [elements( messages */ ! void hidio_print(t_hidio *x) { if( !HIDHaveDeviceList() ) hidio_build_device_list(); --- 739,743 ----
/* TODO: this should be dumped for [devices( and [elements( messages */ ! void hidio_doprint(t_hidio *x) { if( !HIDHaveDeviceList() ) hidio_build_device_list();
Index: hidio.c =================================================================== RCS file: /cvsroot/pure-data/externals/io/hidio/hidio.c,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** hidio.c 8 Dec 2006 06:33:26 -0000 1.11 --- hidio.c 8 Dec 2006 11:28:25 -0000 1.12 *************** *** 132,136 **** SETFLOAT(output_atom, output_value); #else ! atom_setlong(output_atom, output_value); #endif /* PD */ outlet_anything( x->x_status_outlet, selector, 1, output_atom); --- 132,136 ---- SETFLOAT(output_atom, output_value); #else ! atom_setlong(output_atom, (long)output_value); #endif /* PD */ outlet_anything( x->x_status_outlet, selector, 1, output_atom); *************** *** 167,176 **** for(i=0;i<element_count[x->x_device_number];++i) { SETSYMBOL(output_data, element[x->x_device_number][i]->type); SETSYMBOL(output_data + 1, element[x->x_device_number][i]->name); - #ifdef PD SETFLOAT(output_data + 2, element[x->x_device_number][i]->min); SETFLOAT(output_data + 3, element[x->x_device_number][i]->max); #else atom_setlong(output_data + 2, element[x->x_device_number][i]->min); atom_setlong(output_data + 3, element[x->x_device_number][i]->max); --- 167,178 ---- for(i=0;i<element_count[x->x_device_number];++i) { + #ifdef PD SETSYMBOL(output_data, element[x->x_device_number][i]->type); SETSYMBOL(output_data + 1, element[x->x_device_number][i]->name); SETFLOAT(output_data + 2, element[x->x_device_number][i]->min); SETFLOAT(output_data + 3, element[x->x_device_number][i]->max); #else + atom_setsym(output_data, element[x->x_device_number][i]->type); + atom_setsym(output_data + 1, element[x->x_device_number][i]->name); atom_setlong(output_data + 2, element[x->x_device_number][i]->min); atom_setlong(output_data + 3, element[x->x_device_number][i]->max); *************** *** 292,299 **** { t_atom event_data[3]; SETSYMBOL(event_data, output_data->name); SETFLOAT(event_data + 1, output_data->instance); SETFLOAT(event_data + 2, output_data->value); ! outlet_anything(x->x_data_outlet,output_data->type,3,event_data); } } --- 294,308 ---- { t_atom event_data[3]; + #ifdef PD SETSYMBOL(event_data, output_data->name); SETFLOAT(event_data + 1, output_data->instance); SETFLOAT(event_data + 2, output_data->value); ! #else ! atom_setsym(event_data, output_data->name); ! atom_setsym(event_data, output_data->name); ! atom_setlong(event_data + 1, (long)output_data->instance); ! atom_setlong(event_data + 2, (long)output_data->value); ! #endif ! outlet_anything(x->x_data_outlet, output_data->type, 3, event_data); } } *************** *** 425,432 **** double right_now = clock_getlogicaltime(); #else ! /* TODO: this should use gettime() not systime_ms(). This needs to be logical ! * time, not system time because the idea is that only one instance should get ! * events from the OS in each slice of logical time hans@at.or.at */ ! double right_now = (double)systime_ms(); #endif /* PD */ t_hid_element *current_element; --- 434,439 ---- double right_now = clock_getlogicaltime(); #else ! double right_now; ! clock_getftime(&right_now); #endif /* PD */ t_hid_element *current_element; *************** *** 470,473 **** --- 477,488 ---- }
+ static void hidio_print(t_hidio *x) + { + pthread_mutex_lock(&x->x_mutex); + x->x_requestcode = REQUEST_PRINT; + pthread_cond_signal(&x->x_requestcondition); + pthread_mutex_unlock(&x->x_mutex); + } + static void hidio_info(t_hidio *x) { *************** *** 580,583 **** --- 595,607 ---- pthread_cond_signal(&x->x_answercondition); } + else if (x->x_requestcode == REQUEST_PRINT) + { + pthread_mutex_unlock(&x->x_mutex); + hidio_doprint(x); + pthread_mutex_lock(&x->x_mutex); + if (x->x_requestcode == REQUEST_PRINT) + x->x_requestcode = REQUEST_NOTHING; + pthread_cond_signal(&x->x_answercondition); + } else if (x->x_requestcode == REQUEST_INFO) {