Package: gnome-applets Version: 2.18.0-3 Severity: normal Hi,
mixer_applet2 wakes up every 200ms or so to check the volume, possibly reducing laptop battery life. The included patch (which depends on gstreamer support, filed as a separate bug) fixes this. It's taken from the Ubuntu patch set, but AFAIK it's taken from upstream Bugzilla, in turn written by the PowerTOP people. -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental') Architecture: i386 (i686) Kernel: Linux 2.6.22-rc1 (SMP w/2 CPU cores; PREEMPT) Locale: LANG=nb_NO.UTF-8, LC_CTYPE=nb_NO.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages gnome-applets depends on: ii debconf [debconf-2.0] 1.5.13 Debian configuration management sy ii gconf2 2.18.0.1-3 GNOME configuration database syste ii gnome-applets-data 2.18.0-3 Various applets for GNOME 2 panel ii gnome-icon-theme 2.18.0-2 GNOME Desktop icon theme ii gnome-panel 2.18.1-1+b1 launcher and docking facility for ii gstreamer0.10-alsa 0.10.12-2 GStreamer plugin for ALSA ii gstreamer0.10-plugins-good 0.10.5-5 GStreamer plugins from the "good" ii libapm1 3.2.2-8.1 Library for interacting with APM d ii libatk1.0-0 1.18.0-2 The ATK accessibility toolkit ii libbonoboui2-0 2.18.0-5 The Bonobo UI library ii libc6 2.5-7 GNU C Library: Shared libraries ii libcairo2 1.4.6-1 The Cairo 2D vector graphics libra ii libcpufreq0 002-2 shared library to deal with the cp ii libdbus-1-3 1.0.2-5 simple interprocess messaging syst ii libdbus-glib-1-2 0.73-2 simple interprocess messaging syst ii libfontconfig1 2.4.2-1.2 generic font configuration library ii libgconf2-4 2.18.0.1-3 GNOME configuration database syste ii libglade2-0 1:2.6.0-4 library to load .glade files at ru ii libglib2.0-0 2.12.12-1 The GLib library of C routines ii libgnome-desktop-2 2.18.1-1 Utility library for loading .deskt ii libgnome2-0 2.18.0-4 The GNOME 2 library - runtime file ii libgnomekbd1 2.18.1-2 GNOME library to manage keyboard c ii libgnomekbdui1 2.18.1-2 User interface library for libgnom ii libgnomeui-0 2.18.1-2 The GNOME 2 libraries (User Interf ii libgnomevfs2-0 1:2.18.1-2 GNOME Virtual File System (runtime ii libgstreamer-plugins-base0 0.10.12-2 GStreamer libraries from the "base ii libgstreamer0.10-0 0.10.12-5 Core GStreamer libraries and eleme ii libgtk2.0-0 2.10.12-1 The GTK+ graphical user interface ii libgtop2-7 2.14.8-2 gtop system monitoring library ii libgucharmap6 1:1.10.0-2 Unicode browser widget library (sh ii libhal1 0.5.9-2 Hardware Abstraction Layer - share ii libnotify1 [libnotify1-gtk 0.4.4-3 sends desktop notifications to a n ii liborbit2 1:2.14.7-0.1 libraries for ORBit2 - a CORBA ORB ii libpanel-applet2-0 2.18.1-1+b1 library for GNOME 2 panel applets ii libpango1.0-0 1.16.4-1 Layout and rendering of internatio ii libwnck18 2.18.0-2 Window Navigator Construction Kit ii libx11-6 2:1.0.3-7 X11 client-side library ii libxcursor1 1:1.1.8-2 X cursor management library ii libxext6 1:1.0.3-2 X11 miscellaneous extension librar ii libxfixes3 1:4.0.3-2 X11 miscellaneous 'fixes' extensio ii libxi6 1:1.0.1-4 X11 Input extension library ii libxinerama1 1:1.0.2-1 X11 Xinerama extension library ii libxklavier11 3.2-2 X Keyboard Extension high-level AP ii libxml2 2.6.28.dfsg-1 GNOME XML library ii libxrandr2 2:1.2.1-1 X11 RandR extension library ii libxrender1 1:0.9.2-1 X Rendering Extension client libra ii python 2.4.4-4 An interactive high-level object-o Versions of packages gnome-applets recommends: ii deskbar-applet 2.14.2-4.2 universal search and navigation ba ii gnome-media 2.18.0-2+b1 GNOME media utilities ii gnome-netstatus-applet 2.12.1-1 Network status applet for GNOME 2 ii gnome-system-monitor 2.16.1-1 Process viewer and system resource ii imagemagick 7:6.2.4.5.dfsg1-1 Image manipulation programs ii libgnomevfs2-extra 1:2.18.1-2 GNOME Virtual File System (extra m pn tomboy <none> (no description available) -- debconf information excluded
diff --git a/mixer/applet.c b/mixer/applet.c index 3d74f36..70456a1 100644 --- a/mixer/applet.c +++ b/mixer/applet.c @@ -81,7 +81,6 @@ static void gnome_volume_applet_orientation (PanelApplet *applet, static void gnome_volume_applet_refresh (GnomeVolumeApplet *applet, gboolean force_refresh); -static gboolean cb_check (gpointer data); static void cb_volume (GtkAdjustment *adj, gpointer data); @@ -375,6 +374,24 @@ select_element_and_track (GnomeVolumeApplet *applet, return TRUE; } +static void +cb_mixer_mute_toggled (GstMixerTrack *track, gboolean mute, gpointer data) +{ + GnomeVolumeApplet *applet = GNOME_VOLUME_APPLET (data); + + g_warning ("mute toggled"); + gnome_volume_applet_refresh (applet, TRUE); +} + +static void +cb_mixer_volume_changed (GstMixerTrack *track, gpointer volumes, gpointer data) +{ + GnomeVolumeApplet *applet = GNOME_VOLUME_APPLET (data); + + g_warning ("volume changed"); + gnome_volume_applet_refresh (applet, TRUE); +} + gboolean gnome_volume_applet_setup (GnomeVolumeApplet *applet, GList *elements) @@ -438,9 +455,12 @@ gnome_volume_applet_setup (GnomeVolumeApplet *applet, gnome_volume_applet_refresh (applet, TRUE); if (res) { - applet->timeout = g_timeout_add (100, cb_check, applet); + GList *l; + for (l = applet->tracks; l; l = l->next) { + g_signal_connect (G_OBJECT (l->data),"volume_changed", G_CALLBACK (cb_mixer_volume_changed), applet); + g_signal_connect (G_OBJECT (l->data),"mute_toggled", G_CALLBACK (cb_mixer_mute_toggled), applet); + } } - if (res) { /* gconf */ key = panel_applet_gconf_get_full_key (PANEL_APPLET (applet), @@ -1154,14 +1174,6 @@ gnome_volume_applet_refresh (GnomeVolumeApplet *applet, "state", mute ? "1" : "0", NULL); } -static gboolean -cb_check (gpointer data) -{ - gnome_volume_applet_refresh (GNOME_VOLUME_APPLET (data), FALSE); - - return TRUE; -} - /* * GConf callback. */