pull/5/head
Oona 2013-01-13 20:49:42 +02:00
rodzic ce8eb4942d
commit f6b2b8a115
7 zmienionych plików z 852 dodań i 750 usunięć

Wyświetl plik

@ -105,7 +105,7 @@ void changeDevices() {
gtk_widget_set_tooltip_text(gui.devstatusicon, "Device was opened, but doesn't support 44100 Hz");
break;
case -2:
gtk_image_set_from_stock(GTK_IMAGE(gui.devstatusicon),GTK_STOCK_NO,GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_image_set_from_stock(GTK_IMAGE(gui.devstatusicon),GTK_STOCK_DIALOG_ERROR,GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_set_tooltip_text(gui.devstatusicon, "Failed to open device");
break;
}
@ -115,3 +115,12 @@ void changeDevices() {
pthread_create (&thread1, NULL, Listen, NULL);
}
// Clear received picture & metadata
void clearPix() {
gdk_pixbuf_fill (DispPixbuf, 0);
gtk_image_set_from_pixbuf(GTK_IMAGE(gui.RxImage), DispPixbuf);
gtk_label_set_markup (GTK_LABEL(gui.idlabel), "");
gtk_label_set_markup (GTK_LABEL(gui.utclabel), "");
gtk_label_set_markup (GTK_LABEL(gui.lastmodelabel), "");
}

Wyświetl plik

@ -50,6 +50,7 @@ struct _GuiObjs {
GtkWidget *picdirentry;
GtkWidget *browsebtn;
GtkWidget *aboutdialog;
GtkWidget *btnclear;
};
extern GuiObjs gui;
@ -120,5 +121,6 @@ void populateDeviceList ();
void setNewRxDir ();
void chooseDir ();
void show_aboutdialog();
void clearPix ();
#endif

18
gui.c
Wyświetl plik

@ -45,17 +45,19 @@ void createGUI() {
gui.devstatusicon = GTK_WIDGET(gtk_builder_get_object(builder,"devstatusicon"));
gui.browsebtn = GTK_WIDGET(gtk_builder_get_object(builder,"browsebtn"));
gui.picdirentry = GTK_WIDGET(gtk_builder_get_object(builder,"picdirentry"));
gui.btnclear = GTK_WIDGET(gtk_builder_get_object(builder,"BtnClear"));
iconview = GTK_WIDGET(gtk_builder_get_object(builder,"SavedIconView"));
g_signal_connect (quititem, "activate", G_CALLBACK(delete_event), NULL);
g_signal_connect (gui.mainwindow,"delete-event",G_CALLBACK(delete_event), NULL);
g_signal_connect (aboutitem, "activate", G_CALLBACK(show_aboutdialog), NULL);
g_signal_connect_swapped(gui.togadapt, "toggled", G_CALLBACK(GetAdaptive), NULL);
g_signal_connect (gui.btnstart, "clicked", G_CALLBACK(ManualStart), NULL);
g_signal_connect (gui.btnabort, "clicked", G_CALLBACK(AbortRx), NULL);
g_signal_connect (gui.cardcombo, "changed", G_CALLBACK(changeDevices), NULL);
g_signal_connect (gui.browsebtn, "clicked", G_CALLBACK(chooseDir), NULL);
g_signal_connect (quititem, "activate", G_CALLBACK(delete_event), NULL);
g_signal_connect (gui.mainwindow, "delete-event", G_CALLBACK(delete_event), NULL);
g_signal_connect (aboutitem, "activate", G_CALLBACK(show_aboutdialog), NULL);
g_signal_connect_swapped(gui.togadapt, "toggled", G_CALLBACK(GetAdaptive), NULL);
g_signal_connect (gui.btnstart, "clicked", G_CALLBACK(ManualStart), NULL);
g_signal_connect (gui.btnabort, "clicked", G_CALLBACK(AbortRx), NULL);
g_signal_connect (gui.cardcombo, "changed", G_CALLBACK(changeDevices), NULL);
g_signal_connect (gui.browsebtn, "clicked", G_CALLBACK(chooseDir), NULL);
g_signal_connect (gui.btnclear, "clicked", G_CALLBACK(clearPix), NULL);
savedstore = GTK_LIST_STORE(gtk_icon_view_get_model(GTK_ICON_VIEW(iconview)));

9
pcm.c
Wyświetl plik

@ -27,9 +27,12 @@ void readPcm(gint numsamples) {
if (samplesread < numsamples) {
if (samplesread == -EPIPE) printf("ALSA: buffer overrun\n");
else if (samplesread == -EBADFD) printf("ALSA: PCM is not in the right state\n");
else if (samplesread == -ESTRPIPE) printf("ALSA: a suspend event occurred\n");
else if (samplesread < 0) printf("ALSA error %d\n", samplesread);
else if (samplesread < 0) {
printf("ALSA error %d (%s)\n", samplesread, snd_strerror(samplesread));
gtk_widget_set_tooltip_text(gui.devstatusicon, "ALSA error");
Abort = true;
pthread_exit(NULL);
}
else printf("Can't read %d samples\n", numsamples);
// On first appearance of error, update the status icon

Wyświetl plik

@ -72,6 +72,7 @@ void *Listen() {
gdk_threads_enter ();
gtk_widget_set_sensitive (gui.vugrid, true);
gtk_widget_set_sensitive (gui.btnabort, false);
gtk_widget_set_sensitive (gui.btnclear, true);
gdk_threads_leave ();
HedrShift = 0;
@ -81,12 +82,15 @@ void *Listen() {
snd_pcm_start (pcm_handle);
Abort = false;
// Wait for VIS
Mode = GetVIS();
do {
if (Abort) pthread_exit(NULL);
// Wait for VIS
Mode = GetVIS();
if (Mode == 0) exit(EXIT_FAILURE);
// Stop listening on ALSA error
if (Abort) pthread_exit(NULL);
} while (Mode == 0);
printf(" ==== %s ====\n", ModeSpec[Mode].Name);
@ -117,6 +121,7 @@ void *Listen() {
gtk_widget_set_sensitive (gui.manualframe, false);
gtk_widget_set_sensitive (gui.cardcombo, false);
gtk_widget_set_sensitive (gui.btnabort, true);
gtk_widget_set_sensitive (gui.btnclear, false);
gtk_statusbar_push (GTK_STATUSBAR(gui.statusbar), 0, "Receiving video..." );
gtk_label_set_markup (GTK_LABEL(gui.lastmodelabel), ModeSpec[Mode].Name);
gtk_label_set_markup (GTK_LABEL(gui.utclabel), rctime);
@ -247,7 +252,7 @@ int main(int argc, char *argv[]) {
gtk_main();
// Save config
// Save config on exit
ConfFile = fopen(confpath->str,"w");
if (ConfFile == NULL) {
perror("Unable to open config file for writing");

1545
slowrx.ui

Plik diff jest za duży Load Diff

2
vis.c
Wyświetl plik

@ -180,5 +180,3 @@ guchar GetVIS () {
else printf(" No VIS found\n");
return 0;
}