@@ -143,30 +143,32 @@ void mpr_dev_init(mpr_dev dev, int is_local, const char *name, mpr_id id)
143143
144144 /* these properties need to be added in alphabetical order */
145145#define link (PROP , TYPE , DATA , FLAGS ) \
146- mpr_tbl_link_value(tbl, MPR_PROP_##PROP, 1, TYPE, DATA, FLAGS | PROP_SET );
147- link (DATA , MPR_PTR , & dev -> obj .data , MOD_LOCAL | INDIRECT | LOCAL_ACCESS );
148- link (ID , MPR_INT64 , & dev -> obj .id , MOD_NONE );
146+ mpr_tbl_link_value(tbl, MPR_PROP_##PROP, 1, TYPE, DATA, FLAGS | MPR_TBL_SET );
147+ link (DATA , MPR_PTR , & dev -> obj .data , MPR_TBL_MOD_LOC | MPR_TBL_INDIRECT | MPR_TBL_ACC_LOC );
148+ link (ID , MPR_INT64 , & dev -> obj .id , MPR_TBL_MOD_NONE );
149149 qry = mpr_graph_new_query (dev -> obj .graph , 0 , MPR_DEV , (void * )cmp_qry_linked , "v" , & dev );
150- link (LINKED , MPR_LIST , qry , MOD_NONE | PROP_OWNED );
151- link (NAME , MPR_STR , & dev -> name , MOD_NONE | INDIRECT | LOCAL_ACCESS );
152- link (NUM_MAPS_IN , MPR_INT32 , & dev -> num_maps_in , MOD_NONE );
153- link (NUM_MAPS_OUT , MPR_INT32 , & dev -> num_maps_out , MOD_NONE );
154- link (NUM_SIGS_IN , MPR_INT32 , & dev -> num_inputs , MOD_NONE );
155- link (NUM_SIGS_OUT , MPR_INT32 , & dev -> num_outputs , MOD_NONE );
156- link (ORDINAL , MPR_INT32 , & dev -> ordinal , MOD_NONE );
150+ link (LINKED , MPR_LIST , qry , MPR_TBL_MOD_NONE | MPR_TBL_OWNED );
151+ link (NAME , MPR_STR , & dev -> name , MPR_TBL_MOD_NONE | MPR_TBL_INDIRECT
152+ | MPR_TBL_ACC_LOC | MPR_TBL_OWNED );
153+ link (NUM_MAPS_IN , MPR_INT32 , & dev -> num_maps_in , MPR_TBL_MOD_NONE );
154+ link (NUM_MAPS_OUT , MPR_INT32 , & dev -> num_maps_out , MPR_TBL_MOD_NONE );
155+ link (NUM_SIGS_IN , MPR_INT32 , & dev -> num_inputs , MPR_TBL_MOD_NONE );
156+ link (NUM_SIGS_OUT , MPR_INT32 , & dev -> num_outputs , MPR_TBL_MOD_NONE );
157+ link (ORDINAL , MPR_INT32 , & dev -> ordinal , MPR_TBL_MOD_NONE );
157158 if (!is_local ) {
159+ // why only local devs??
158160 qry = mpr_graph_new_query (dev -> obj .graph , 0 , MPR_SIG , (void * )cmp_qry_sigs ,
159161 "hi" , dev -> obj .id , MPR_DIR_ANY );
160- link (SIG , MPR_LIST , qry , MOD_NONE | PROP_OWNED );
162+ link (SIG , MPR_LIST , qry , MPR_TBL_MOD_NONE | MPR_TBL_OWNED );
161163 }
162- link (STATUS , MPR_INT32 , & dev -> obj .status , MOD_NONE | LOCAL_ACCESS );
163- link (SYNCED , MPR_TIME , & dev -> synced , MOD_NONE | LOCAL_ACCESS );
164- link (VERSION , MPR_INT32 , & dev -> obj .version , MOD_NONE );
164+ link (STATUS , MPR_INT32 , & dev -> obj .status , MPR_TBL_MOD_NONE | MPR_TBL_ACC_LOC );
165+ link (SYNCED , MPR_TIME , & dev -> synced , MPR_TBL_MOD_NONE | MPR_TBL_ACC_LOC );
166+ link (VERSION , MPR_INT32 , & dev -> obj .version , MPR_TBL_MOD_NONE );
165167#undef link
166168
167169 if (is_local )
168- mpr_tbl_add_record (tbl , MPR_PROP_LIBVER , NULL , 1 , MPR_STR , PACKAGE_VERSION , MOD_NONE );
169- mpr_tbl_add_record (tbl , MPR_PROP_IS_LOCAL , NULL , 1 , MPR_BOOL , & is_local , LOCAL_ACCESS | MOD_NONE );
170+ mpr_tbl_add_record (tbl , MPR_PROP_LIBVER , NULL , 1 , MPR_STR , PACKAGE_VERSION , MPR_TBL_MOD_NONE );
171+ mpr_tbl_add_record (tbl , MPR_PROP_IS_LOCAL , NULL , 1 , MPR_BOOL , & is_local , MPR_TBL_ACC_LOC | MPR_TBL_MOD_NONE );
170172}
171173
172174/*! Allocate and initialize a device. This function is called to create a new
@@ -180,6 +182,8 @@ mpr_dev mpr_dev_new(const char *name_prefix, mpr_graph graph)
180182 ++ name_prefix ;
181183 TRACE_RETURN_UNLESS (!strchr (name_prefix , '/' ), NULL , "error: character '/' "
182184 "is not permitted in device name.\n" );
185+ TRACE_RETURN_UNLESS (!strchr (name_prefix , ' ' ), NULL , "error: character ' ' "
186+ "is not permitted in device name.\n" );
183187 if (graph ) {
184188 g = graph ;
185189 }
@@ -299,7 +303,6 @@ void mpr_dev_free(mpr_dev dev)
299303void mpr_dev_free_mem (mpr_dev dev )
300304{
301305 FUNC_IF (free , dev -> linked );
302- FUNC_IF (free , dev -> name );
303306}
304307
305308static void on_registered (mpr_local_dev dev )
@@ -319,11 +322,13 @@ static void on_registered(mpr_local_dev dev)
319322 qry = mpr_graph_new_query (dev -> obj .graph , 0 , MPR_SIG , (void * )cmp_qry_sigs ,
320323 "hi" , dev -> obj .id , MPR_DIR_ANY );
321324 mpr_tbl_add_record (dev -> obj .props .synced , MPR_PROP_SIG , NULL ,
322- 1 , MPR_LIST , qry , MOD_NONE | PROP_OWNED );
325+ 1 , MPR_LIST , qry , MPR_TBL_MOD_NONE | MPR_TBL_OWNED );
326+ /* the table makes a copy so we can free this query */
327+ mpr_list_free (qry );
323328 dev -> registered = 1 ;
324329 dev -> ordinal = dev -> ordinal_allocator .val ;
325330
326- snprintf (dev -> name + dev -> prefix_len + 1 , dev -> prefix_len + 6 , "%d" , dev -> ordinal );
331+ snprintf (dev -> name + dev -> prefix_len + 1 , 5 , "%d" , dev -> ordinal );
327332 name = strdup (dev -> name );
328333 free (dev -> name );
329334 dev -> name = name ;
@@ -1069,7 +1074,8 @@ int mpr_dev_set_from_msg(mpr_dev dev, mpr_msg msg)
10691074 break ;
10701075 }
10711076 default :
1072- updated += mpr_tbl_add_record_from_msg_atom (dev -> obj .props .synced , atom , MOD_REMOTE );
1077+ updated += mpr_tbl_add_record_from_msg_atom (dev -> obj .props .synced , atom ,
1078+ MPR_TBL_MOD_REM );
10731079 break ;
10741080 }
10751081 }
0 commit comments