/** * Emits a warning if the sound connection is lost, usually * via a dialog window (with option to reinitialize alsa) or stderr. */ void warn_sound_conn_lost(void) { if (popup_window) { gint resp; GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(popup_window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_YES_NO, _("Warning: Connection to sound system failed.")); gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), _("Do you want to re-initialize the connection to alsa?\n\n" "If you do not, you will either need to restart PNMixer " "or select the 'Reload Alsa' option in the right click " "menu in order for PNMixer to function.")); gtk_window_set_title(GTK_WINDOW(dialog), _("PNMixer Error")); resp = gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); if (resp == GTK_RESPONSE_YES) do_alsa_reinit(); } else fprintf(stderr, _("Warning: Connection to sound system failed, " "you probably need to restart pnmixer\n")); }
/** * We need to re-init alsa in an idle moment, it doesn't seem * very safe to do that while handling data in poll_cb(). * This function is attached via g_idle_add() in poll_cb(). * * @param data passed to the function, * set when the source was created * @return FALSE if the source should be removed, * TRUE otherwise */ static gboolean idle_alsa_reinit(gpointer data) { do_alsa_reinit(); return FALSE; }