int main(int argc, char *argv[]) { GError *error = NULL; GOptionContext *context; printf("lysdr starting\n"); // gtk3 remove threads, see how badly things go wrong //gdk_threads_init(); //gdk_threads_enter(); gtk_init(&argc, &argv); context = g_option_context_new ("-"); g_option_context_add_main_entries (context, opts, NULL); g_option_context_add_group (context, gtk_get_option_group (TRUE)); if (!g_option_context_parse (context, &argc, &argv, &error)) { g_print ("option parsing failed: %s\n", error->message); exit (1); } // create a new SDR, and set up the jack client sdr = sdr_new(fft_size); audio_start(sdr); // define a filter and configure a default shape sdr->filter = filter_fir_new(128, sdr->size); // hook up the jack ports and start the client fft_setup(sdr); audio_connect(sdr, connect_input, connect_output); sdr->centre_freq = centre_freq; gui_display(sdr); gtk_adjustment_set_value(GTK_ADJUSTMENT(sdr->tuning), 0); gtk_main(); audio_stop(sdr); filter_fir_destroy(sdr->filter); fft_teardown(sdr); sdr_destroy(sdr); //gdk_threads_leave(); }
void ionTerminate() { Sdr sdr = _ionsdr(NULL); Object obj = 0; sm_WmParms ionwmParms; char *ionvdbName = NULL; if (sdr) { sdr_destroy(sdr); sdr = NULL; oK(_ionsdr(&sdr)); /* To reset to NULL. */ } oK(_iondbObject(&obj)); ionwmParms.wmKey = 0; ionwmParms.wmSize = -1; ionwmParms.wmAddress = NULL; oK(_ionwm(&ionwmParms)); oK(_ionvdb(&ionvdbName)); }