gnome-media r4185 - in trunk/gnome-volume-control: . src
- From: hadess svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-media r4185 - in trunk/gnome-volume-control: . src
- Date: Thu, 12 Feb 2009 10:23:53 +0000 (UTC)
Author: hadess
Date: Thu Feb 12 10:23:53 2009
New Revision: 4185
URL: http://svn.gnome.org/viewvc/gnome-media?rev=4185&view=rev
Log:
2009-02-12 Bastien Nocera <hadess hadess net>
* src/dialog-main.c (on_control_ready), (warning_dialog_answered),
(dialog_popup_timeout), (main): When PulseAudio isn't running,
or takes a long time to connect to, popup a dialogue telling
the user what we're waiting for, and the ability to cancel
(Closes: #566835)
Modified:
trunk/gnome-volume-control/ChangeLog
trunk/gnome-volume-control/src/dialog-main.c
Modified: trunk/gnome-volume-control/src/dialog-main.c
==============================================================================
--- trunk/gnome-volume-control/src/dialog-main.c (original)
+++ trunk/gnome-volume-control/src/dialog-main.c Thu Feb 12 10:23:53 2009
@@ -34,13 +34,16 @@
#include "gvc-mixer-dialog.h"
#define GVCA_DBUS_NAME "org.gnome.VolumeControl"
-
-#define IS_STRING_EMPTY(x) ((x)==NULL||(x)[0]=='\0')
+#define DIALOG_POPUP_TIMEOUT 3
static gboolean show_version = FALSE;
static gboolean debug = FALSE;
static gchar* page = NULL;
+static guint popup_id = 0;
+static GtkWidget *dialog = NULL;
+static GtkWidget *warning_dialog = NULL;
+
static void
on_dialog_response (GtkDialog *dialog,
guint response_id,
@@ -72,9 +75,16 @@
on_control_ready (GvcMixerControl *control,
UniqueApp *app)
{
- GvcMixerDialog *dialog;
+ if (popup_id != 0) {
+ g_source_remove (popup_id);
+ popup_id = 0;
+ }
+ if (warning_dialog != NULL) {
+ gtk_widget_destroy (warning_dialog);
+ warning_dialog = NULL;
+ }
- dialog = gvc_mixer_dialog_new (control);
+ dialog = GTK_WIDGET (gvc_mixer_dialog_new (control));
g_signal_connect (dialog,
"response",
G_CALLBACK (on_dialog_response),
@@ -85,12 +95,38 @@
NULL);
if (page != NULL)
- gvc_mixer_dialog_set_page(dialog, page);
+ gvc_mixer_dialog_set_page(GVC_MIXER_DIALOG (dialog), page);
g_signal_connect (app, "message-received",
G_CALLBACK (message_received_cb), dialog);
- gtk_widget_show (GTK_WIDGET (dialog));
+ gtk_widget_show (dialog);
+}
+
+static void
+warning_dialog_answered (GtkDialog *d,
+ gpointer data)
+{
+ gtk_widget_destroy (warning_dialog);
+ gtk_main_quit ();
+}
+
+static gboolean
+dialog_popup_timeout (gpointer data)
+{
+ warning_dialog = gtk_message_dialog_new (NULL,
+ 0,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_CANCEL,
+ _("Waiting for sound system to respond"));
+ g_signal_connect (warning_dialog, "response",
+ G_CALLBACK (warning_dialog_answered), NULL);
+ g_signal_connect (warning_dialog, "close",
+ G_CALLBACK (warning_dialog_answered), NULL);
+
+ gtk_widget_show (warning_dialog);
+
+ return FALSE;
}
int
@@ -141,7 +177,9 @@
app);
gvc_mixer_control_open (control);
- /* FIXME: add timeout in case ready doesn't happen */
+ popup_id = g_timeout_add_seconds (DIALOG_POPUP_TIMEOUT,
+ dialog_popup_timeout,
+ NULL);
gtk_main ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]