}
gdk_threads_leave();
+ // TODO consider removing 'type' and make everything run via the specficied process function
switch ( source_interface->type ) {
case VIK_DATASOURCE_GPSBABEL_DIRECT:
result = a_babel_convert_from (vtl, cmd, (BabelStatusFunc) progress_func, extra, w);
case VIK_DATASOURCE_SHELL_CMD:
result = a_babel_convert_from_shellcommand ( vtl, cmd, extra, (BabelStatusFunc) progress_func, w);
break;
+ case VIK_DATASOURCE_INTERNAL:
+ if ( source_interface->process_func )
+ result = source_interface->process_func ( vtl, cmd, extra, (BabelStatusFunc) progress_func, w );
+ break;
default:
g_critical("Houston, we've had a problem.");
}
/* for manual dialogs */
GtkWidget *dialog = NULL;
GtkWidget *status;
- gchar *cmd, *extra;
+ gchar *cmd = NULL;
+ gchar *extra = NULL;
gchar *cmd_off = NULL;
gchar *extra_off = NULL;
acq_dialog_widgets_t *w;
( pass_along_data, &cmd, &extra, name_src_track );
g_free ( name_src_track );
- } else
- source_interface->get_cmd_string_func ( pass_along_data, &cmd, &extra );
+ } else if ( source_interface->get_cmd_string_func )
+ source_interface->get_cmd_string_func ( pass_along_data, &cmd, &extra );
/* Get data for Off command */
if ( source_interface->off_func ) {