package gnome-power-manager tags 472637 + patch fixed-upstream thanks As suggested upstream, the patch from Subversion r2743 seems to fix this issue (and, as a bonus, g-p-m disconnects from pulseaudio when not actively making noise, which will hopefully cause the audio device to be released when pulseaudio is otherwise idle).
Please consider applying this patch in Debian if there isn't a release soon. (Cc'ing Daf, who was also experiencing this bug) Regards, Simon
diff -u gnome-power-manager-2.22.0/debian/changelog gnome-power-manager-2.22.0/debian/changelog --- gnome-power-manager-2.22.0/debian/changelog +++ gnome-power-manager-2.22.0/debian/changelog @@ -1,3 +1,11 @@ +gnome-power-manager (2.22.0-1+smcv1) local; urgency=low + + * Local build + * Apply patch from svn r2743 to fix lockups/memory exhaustion if + pulseaudio disconnects us (Closes: #472637) + + -- Simon McVittie <[EMAIL PROTECTED]> Thu, 27 Mar 2008 12:03:32 +0000 + gnome-power-manager (2.22.0-1) unstable; urgency=low [ Michael Biebl ] only in patch2: unchanged: --- gnome-power-manager-2.22.0.orig/debian/patches/74-gst-stop-bin.patch +++ gnome-power-manager-2.22.0/debian/patches/74-gst-stop-bin.patch @@ -0,0 +1,60 @@ +--- branches/gnome-2-22/src/gpm-sound.c 2008/03/26 09:06:54 2742 ++++ branches/gnome-2-22/src/gpm-sound.c 2008/03/26 09:10:25 2743 +@@ -225,6 +225,37 @@ + } + + /** ++ * gpm_sound_class_init: ++ * ++ * Needed to change state of the playbin back to NULL to avoid lockups ++ **/ ++static void ++gpm_sound_gst_bus_cb (GstBus *bus, GstMessage *message, GpmSound *sound) ++{ ++ switch (GST_MESSAGE_TYPE (message)) { ++ case GST_MESSAGE_ERROR: { ++ GError *error; ++ gchar *debug; ++ ++ gst_element_set_state (sound->priv->playbin, GST_STATE_NULL); ++ ++ gst_message_parse_error (message, &error, &debug); ++ gpm_warning ("%s (%s)", error->message, debug); ++ ++ g_error_free (error); ++ g_free (debug); ++ break; ++ } ++ case GST_MESSAGE_EOS: { ++ gst_element_set_state (sound->priv->playbin, GST_STATE_NULL); ++ break; ++ } ++ default: ++ break; ++ } ++} ++ ++/** + * gpm_sound_init: + * @sound: This class instance + * +@@ -236,6 +267,7 @@ + gpm_sound_init (GpmSound *sound) + { + GstElement *audio_sink; ++ GstBus *bus; + + sound->priv = GPM_SOUND_GET_PRIVATE (sound); + +@@ -264,6 +296,11 @@ + if (audio_sink != NULL) + g_object_set (sound->priv->playbin, "audio-sink", audio_sink, NULL); + ++ bus = gst_element_get_bus (GST_ELEMENT (sound->priv->playbin)); ++ gst_bus_add_signal_watch (bus); ++ g_signal_connect (bus, "message", G_CALLBACK (gpm_sound_gst_bus_cb), sound); ++ gst_object_unref (bus); ++ + /* do we beep? */ + gpm_conf_get_bool (sound->priv->conf, GPM_CONF_UI_ENABLE_BEEPING, &sound->priv->enable_beeping); + }
signature.asc
Description: Digital signature