]> git.street.me.uk Git - andy/viking.git/blobdiff - src/acquire.c
Add new process stage for acquire methods.
[andy/viking.git] / src / acquire.c
index 1a65e91f9f42be58406a0248f910325fef91d3eb..a71df6221c6243b72a83cdcfbfa891a923a0bd4c 100644 (file)
@@ -119,6 +119,7 @@ static void get_from_anything ( w_and_interface_t *wi )
   }
   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);
@@ -129,6 +130,10 @@ static void get_from_anything ( w_and_interface_t *wi )
   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.");
   }
@@ -224,7 +229,8 @@ static void acquire ( VikWindow *vw, VikLayersPanel *vlp, VikViewport *vvp, VikD
   /* 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;
@@ -315,8 +321,8 @@ static void acquire ( VikWindow *vw, VikLayersPanel *vlp, VikViewport *vvp, VikD
        ( 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 ) {