summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGene Z. Ragan <gzr@eazel.com>2001-04-05 17:01:57 +0000
committerGene Ragan <gzr@src.gnome.org>2001-04-05 17:01:57 +0000
commit58f18d162799245e531f720300c2654926b30d7e (patch)
treeb47b9f5d6b84c1efb9731305c578140a4bc28a96
parentde6dc4e973fb98358d7b4fade4072c3b0365e8ce (diff)
downloadnautilus-58f18d162799245e531f720300c2654926b30d7e.tar.gz
Fixed bug 7790, Music View silently fails if sound hardware busy or
2001-04-05 Gene Z. Ragan <gzr@eazel.com> Fixed bug 7790, Music View silently fails if sound hardware busy or missing * components/music/esd-audio.c: (esdout_playing), (esdout_close), (esdout_loop), (esdout_open): Modify logic used to determine if another process has opened a connection to esd, blocking us from doing so. * components/music/nautilus-music-view.c: (update_play_controls_status), (play_current_file), (add_play_controls): Add code in anticipation of adding support to disable controls at appropriate times.
-rw-r--r--ChangeLog16
-rw-r--r--components/music/esd-audio.c25
-rw-r--r--components/music/nautilus-music-view.c91
3 files changed, 83 insertions, 49 deletions
diff --git a/ChangeLog b/ChangeLog
index 060da04fd..0704d289d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2001-04-05 Gene Z. Ragan <gzr@eazel.com>
+
+ Fixed bug 7790, Music View silently fails if sound
+ hardware busy or missing
+
+ * components/music/esd-audio.c: (esdout_playing), (esdout_close),
+ (esdout_loop), (esdout_open):
+ Modify logic used to determine if another process has opened a
+ connection to esd, blocking us from doing so.
+
+ * components/music/nautilus-music-view.c:
+ (update_play_controls_status), (play_current_file),
+ (add_play_controls):
+ Add code in anticipation of adding support to disable controls at
+ appropriate times.
+
2001-04-05 Ramiro Estrugo <ramiro@eazel.com>
* components/rpmview/Makefile.am:
diff --git a/components/music/esd-audio.c b/components/music/esd-audio.c
index 693bd3be4..d8020fa1c 100644
--- a/components/music/esd-audio.c
+++ b/components/music/esd-audio.c
@@ -222,11 +222,22 @@ esdout_used (void)
gint
esdout_playing (void)
{
- if (!going)
+ int fd;
+
+ fd = esd_open_sound (hostname);
+ if (fd == -1) {
+ return TRUE;
+ }
+ esd_close (fd);
+
+ if (!going) {
return FALSE;
- if (!esdout_used())
+ }
+
+ if (!esdout_used ()) {
return FALSE;
-
+ }
+
return TRUE;
}
@@ -305,7 +316,7 @@ esdout_close (void)
wr_index = 0;
rd_index = 0;
going = 0;
- g_free(hostname);
+ g_free (hostname);
hostname = NULL;
pthread_join (buffer_thread, NULL);
}
@@ -335,8 +346,8 @@ esdout_loop (void *arg)
prebuffer = FALSE;
}
- if (esdout_used() > 0 && !paused && !prebuffer) {
- length = MIN (blk_size, esdout_used());
+ if (esdout_used () > 0 && !paused && !prebuffer) {
+ length = MIN (blk_size, esdout_used ());
while (length > 0) {
cnt = MIN(length,buffer_size-rd_index);
esdout_write_audio ((gchar *)buffer + rd_index, cnt);
@@ -399,7 +410,7 @@ esdout_open (AFormat fmt, gint rate, gint nch)
remove_prebuffer = FALSE;
if (hostname)
- g_free(hostname);
+ g_free (hostname);
if (esd_cfg.use_remote)
hostname = g_strdup_printf("%s:%d", esd_cfg.server, esd_cfg.port);
else
diff --git a/components/music/nautilus-music-view.c b/components/music/nautilus-music-view.c
index 07ee73331..d6c33e659 100644
--- a/components/music/nautilus-music-view.c
+++ b/components/music/nautilus-music-view.c
@@ -100,12 +100,15 @@ struct NautilusMusicViewDetails {
GtkWidget *play_control_box;
GtkWidget *song_label;
- //GtkWidget *total_track_time;
GtkWidget *playtime;
GtkWidget *playtime_bar;
GtkObject *playtime_adjustment;
+ GtkWidget *previous_track_button;
+ GtkWidget *pause_button;
+ GtkWidget *stop_button;
+ GtkWidget *next_track_button;
GtkWidget *inactive_play_pixwidget;
GtkWidget *active_play_pixwidget;
GtkWidget *inactive_pause_pixwidget;
@@ -1008,19 +1011,21 @@ static void
update_play_controls_status (NautilusMusicView *music_view, PlayerState state)
{
if (state == PLAYER_PLAYING) {
- gtk_widget_show(music_view->details->active_play_pixwidget);
- gtk_widget_hide(music_view->details->inactive_play_pixwidget);
+ gtk_widget_show (music_view->details->active_play_pixwidget);
+ gtk_widget_hide (music_view->details->inactive_play_pixwidget);
+ //gtk_widget_set_sensitive (music_view->details->pause_button, TRUE);
} else {
- gtk_widget_hide(music_view->details->active_play_pixwidget);
- gtk_widget_show(music_view->details->inactive_play_pixwidget);
+ gtk_widget_hide (music_view->details->active_play_pixwidget);
+ gtk_widget_show (music_view->details->inactive_play_pixwidget);
}
if (state == PLAYER_PAUSED) {
- gtk_widget_show(music_view->details->active_pause_pixwidget);
- gtk_widget_hide(music_view->details->inactive_pause_pixwidget);
+ gtk_widget_show (music_view->details->active_pause_pixwidget);
+ gtk_widget_hide (music_view->details->inactive_pause_pixwidget);
+ //gtk_widget_set_sensitive (music_view->details->pause_button, FALSE);
} else {
- gtk_widget_hide(music_view->details->active_pause_pixwidget);
- gtk_widget_show(music_view->details->inactive_pause_pixwidget);
+ gtk_widget_hide (music_view->details->active_pause_pixwidget);
+ gtk_widget_show (music_view->details->inactive_pause_pixwidget);
}
}
@@ -1176,7 +1181,9 @@ play_current_file (NautilusMusicView *music_view, gboolean from_start)
"or your sound card is not configured properly. Try quitting any "
"applications that may be blocking use of the sound card."),
_("Unable to Play File"),
- GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (&music_view->details->event_box->parent))));
+ //GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (&music_view->details->event_box->parent))));
+ NULL);
+
return;
}
@@ -1508,14 +1515,14 @@ add_play_controls (NautilusMusicView *music_view)
/* previous track button */
box = xpm_label_box (music_view, prev_xpm);
gtk_widget_show (box);
- button = gtk_button_new ();
- gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltips), button, _("Previous"), NULL);
- gtk_container_add (GTK_CONTAINER (button), box);
- gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (prev_button_callback), music_view);
- gtk_widget_set_sensitive (button, TRUE);
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NORMAL);
- gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
- gtk_widget_show (button);
+ music_view->details->previous_track_button = gtk_button_new ();
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltips), music_view->details->previous_track_button, _("Previous"), NULL);
+ gtk_container_add (GTK_CONTAINER (music_view->details->previous_track_button), box);
+ gtk_signal_connect (GTK_OBJECT (music_view->details->previous_track_button), "clicked", GTK_SIGNAL_FUNC (prev_button_callback), music_view);
+ gtk_widget_set_sensitive (music_view->details->previous_track_button, TRUE);
+ gtk_button_set_relief (GTK_BUTTON (music_view->details->previous_track_button), GTK_RELIEF_NORMAL);
+ gtk_box_pack_start (GTK_BOX (hbox), music_view->details->previous_track_button, FALSE, FALSE, 0);
+ gtk_widget_show (music_view->details->previous_track_button);
/* play button */
box = xpm_dual_label_box (music_view, play_xpm, play_green_xpm,
@@ -1536,44 +1543,44 @@ add_play_controls (NautilusMusicView *music_view)
&music_view->details->inactive_pause_pixwidget,
&music_view->details->active_pause_pixwidget);
gtk_widget_show (box);
- button = gtk_button_new ();
- gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltips), button, _("Pause"), NULL);
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NORMAL);
- gtk_container_add (GTK_CONTAINER (button), box);
- gtk_widget_set_sensitive (button, TRUE);
+ music_view->details->pause_button = gtk_button_new ();
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltips), music_view->details->pause_button, _("Pause"), NULL);
+ gtk_button_set_relief (GTK_BUTTON (music_view->details->pause_button), GTK_RELIEF_NORMAL);
+ gtk_container_add (GTK_CONTAINER (music_view->details->pause_button), box);
+ gtk_widget_set_sensitive (music_view->details->pause_button, TRUE);
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
+ gtk_signal_connect (GTK_OBJECT (music_view->details->pause_button), "clicked",
GTK_SIGNAL_FUNC(pause_button_callback), music_view);
- gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
- gtk_widget_show (button);
+ gtk_box_pack_start (GTK_BOX (hbox), music_view->details->pause_button, FALSE, FALSE, 0);
+ gtk_widget_show (music_view->details->pause_button);
/* stop button */
box = xpm_label_box (music_view, stop_xpm);
gtk_widget_show (box);
- button = gtk_button_new ();
- gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltips), button, _("Stop"), NULL);
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NORMAL);
- gtk_container_add (GTK_CONTAINER (button), box);
- gtk_widget_set_sensitive (button, TRUE);
+ music_view->details->stop_button = gtk_button_new ();
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltips), music_view->details->stop_button, _("Stop"), NULL);
+ gtk_button_set_relief (GTK_BUTTON (music_view->details->stop_button), GTK_RELIEF_NORMAL);
+ gtk_container_add (GTK_CONTAINER (music_view->details->stop_button), box);
+ gtk_widget_set_sensitive (music_view->details->stop_button, TRUE);
- gtk_signal_connect(GTK_OBJECT (button), "clicked",
+ gtk_signal_connect (GTK_OBJECT (music_view->details->stop_button), "clicked",
GTK_SIGNAL_FUNC (stop_button_callback), music_view);
- gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
- gtk_widget_show (button);
+ gtk_box_pack_start (GTK_BOX (hbox), music_view->details->stop_button, FALSE, FALSE, 0);
+ gtk_widget_show (music_view->details->stop_button);
/* next button */
box = xpm_label_box (music_view, next_xpm);
gtk_widget_show (box);
- button = gtk_button_new();
- gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltips), button, _("Next"), NULL);
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NORMAL);
- gtk_container_add (GTK_CONTAINER (button), box);
- gtk_widget_set_sensitive (button, TRUE);
+ music_view->details->next_track_button = gtk_button_new();
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltips), music_view->details->next_track_button, _("Next"), NULL);
+ gtk_button_set_relief (GTK_BUTTON (music_view->details->next_track_button), GTK_RELIEF_NORMAL);
+ gtk_container_add (GTK_CONTAINER (music_view->details->next_track_button), box);
+ gtk_widget_set_sensitive (music_view->details->next_track_button, TRUE);
- gtk_signal_connect (GTK_OBJECT (button), "clicked",
+ gtk_signal_connect (GTK_OBJECT (music_view->details->next_track_button), "clicked",
GTK_SIGNAL_FUNC (next_button_callback), music_view);
- gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
- gtk_widget_show (button);
+ gtk_box_pack_start (GTK_BOX (hbox), music_view->details->next_track_button, FALSE, FALSE, 0);
+ gtk_widget_show (music_view->details->next_track_button);
/* Song title label */
music_view->details->song_label = eel_label_new ("");