summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@fedoraproject.org>2007-11-13 14:55:21 +0000
committerMatthias Clasen <mclasen@fedoraproject.org>2007-11-13 14:55:21 +0000
commit60f948a55b507a1c318cebba97df0cb17d6c019e (patch)
tree5ac4eea9a0c0c3c1a7909475abdfcb687052525f
parent9ede4b3a34255d0cde927d1118f46edc3de55af2 (diff)
downloadgnome-applets-60f948a55b507a1c318cebba97df0cb17d6c019e.tar.gz
gnome-applets-60f948a55b507a1c318cebba97df0cb17d6c019e.tar.xz
gnome-applets-60f948a55b507a1c318cebba97df0cb17d6c019e.zip
2.21.1
-rw-r--r--.cvsignore2
-rw-r--r--gnome-applets-2.21.1-mixer-sync.patch309
-rw-r--r--gnome-applets.spec34
-rw-r--r--sources2
4 files changed, 318 insertions, 29 deletions
diff --git a/.cvsignore b/.cvsignore
index 9f3c392..697ca94 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1,2 +1,2 @@
-gnome-applets-2.20.0.tar.bz2
+gnome-applets-2.21.1.tar.bz2
gnome-applets-2.9.3.1-modemlights.tar.bz2
diff --git a/gnome-applets-2.21.1-mixer-sync.patch b/gnome-applets-2.21.1-mixer-sync.patch
new file mode 100644
index 0000000..0d64130
--- /dev/null
+++ b/gnome-applets-2.21.1-mixer-sync.patch
@@ -0,0 +1,309 @@
+diff -up gnome-applets-2.21.1/mixer/applet.h.mixer-sync gnome-applets-2.21.1/mixer/applet.h
+--- gnome-applets-2.21.1/mixer/applet.h.mixer-sync 2007-07-27 22:02:35.000000000 -0400
++++ gnome-applets-2.21.1/mixer/applet.h 2007-11-13 09:39:37.000000000 -0500
+@@ -71,6 +71,7 @@ typedef struct _GnomeVolumeApplet {
+
+ /* element */
+ GstMixer *mixer;
++ GstBus *bus;
+ gboolean lock;
+ gint state;
+ GList *tracks;
+diff -up gnome-applets-2.21.1/mixer/applet.c.mixer-sync gnome-applets-2.21.1/mixer/applet.c
+--- gnome-applets-2.21.1/mixer/applet.c.mixer-sync 2007-11-03 20:12:18.000000000 -0400
++++ gnome-applets-2.21.1/mixer/applet.c 2007-11-13 09:47:09.000000000 -0500
+@@ -79,7 +79,12 @@ static void gnome_volume_applet_orientat
+ PanelAppletOrient orient);
+
+ static gboolean gnome_volume_applet_refresh (GnomeVolumeApplet *applet,
+- gboolean force_refresh);
++ gboolean force_refresh,
++ gdouble volume,
++ gint mute);
++
++static void cb_notify_message (GstBus *bus, GstMessage *message, gpointer data);
++
+ static gboolean cb_check (gpointer data);
+
+ static void cb_volume (GtkAdjustment *adj,
+@@ -218,6 +223,12 @@ gnome_volume_applet_init (GnomeVolumeApp
+ /* i18n */
+ ao = gtk_widget_get_accessible (GTK_WIDGET (applet));
+ atk_object_set_name (ao, _("Volume Control"));
++
++ /* Bus for notifications */
++ applet->bus = gst_bus_new ();
++ gst_bus_add_signal_watch (applet->bus);
++ g_signal_connect (G_OBJECT (applet->bus), "message::element",
++ (GCallback) cb_notify_message, applet);
+ }
+
+ /* Parse the list of tracks that are stored in GConf */
+@@ -344,12 +355,33 @@ select_element_and_track (GnomeVolumeApp
+ return FALSE;
+
+ applet->mixer = g_object_ref (active_element);
++ gst_element_set_bus (GST_ELEMENT (applet->mixer), applet->bus);
+ applet->tracks = active_tracks;
+ g_list_foreach (applet->tracks, (GFunc) g_object_ref, NULL);
+
+ return TRUE;
+ }
+
++static void
++gnome_volume_applet_setup_timeout (GnomeVolumeApplet *applet)
++{
++ gboolean need_timeout = TRUE;
++ need_timeout = ((gst_mixer_get_mixer_flags (GST_MIXER (applet->mixer)) &
++ GST_MIXER_FLAG_AUTO_NOTIFICATIONS) == 0);
++
++ if (need_timeout) {
++ if (applet->timeout == 0) {
++ applet->timeout = g_timeout_add (100, cb_check, applet);
++ }
++ }
++ else {
++ if (applet->timeout != 0) {
++ g_source_remove (applet->timeout);
++ applet->timeout = 0;
++ }
++ }
++}
++
+ gboolean
+ gnome_volume_applet_setup (GnomeVolumeApplet *applet,
+ GList *elements)
+@@ -411,10 +443,9 @@ gnome_volume_applet_setup (GnomeVolumeAp
+ component = panel_applet_get_popup_component (PANEL_APPLET (applet));
+ g_signal_connect (component, "ui-event", G_CALLBACK (cb_ui_event), applet);
+
+- gnome_volume_applet_refresh (applet, TRUE);
+- if (res) {
+- applet->timeout = g_timeout_add (100, cb_check, applet);
+- }
++ gnome_volume_applet_refresh (applet, TRUE, -1, -1);
++ if (res)
++ gnome_volume_applet_setup_timeout (applet);
+
+ if (res) {
+ /* gconf */
+@@ -455,6 +486,11 @@ gnome_volume_applet_dispose (GObject *ob
+ g_list_free (applet->elements);
+ applet->elements = NULL;
+ }
++ gst_bus_remove_signal_watch (applet->bus);
++ if (applet->bus) {
++ gst_object_unref (applet->bus);
++ applet->bus = NULL;
++ }
+
+ if (applet->tracks) {
+ g_list_foreach (applet->tracks, (GFunc) g_object_unref, NULL);
+@@ -649,11 +685,11 @@ gnome_volume_applet_toggle_mute (GnomeVo
+ component = panel_applet_get_popup_component (PANEL_APPLET (applet));
+ bonobo_ui_component_set_prop (component,
+ "/commands/Mute",
+- "state", mute ? "1" : "0", NULL);
++ "state", !mute ? "1" : "0", NULL);
+
+ /* update graphic - this should happen automagically after the next
+ * idle call, but apparently doesn't for some people... */
+- gnome_volume_applet_refresh (applet, TRUE);
++ gnome_volume_applet_refresh (applet, TRUE, -1, !mute);
+ }
+
+ /*
+@@ -916,7 +952,7 @@ void gnome_volume_applet_size_allocate (
+ }
+
+ init_pixbufs (applet);
+- gnome_volume_applet_refresh (applet, TRUE);
++ gnome_volume_applet_refresh (applet, TRUE, -1, -1);
+ }
+
+ static void
+@@ -966,15 +1002,23 @@ gnome_volume_applet_adjust_volume (GstMi
+ {
+ int range = track->max_volume - track->min_volume;
+ gdouble scale = ((gdouble) range) / 100;
+- int *volumes, n;
++ int *volumes, n, volint;
+
+- volume *= scale;
+- volume += track->min_volume;
++ if (volume == 1.0) {
++ volint = track->max_volume;
++ } else if (volume == 0.0) {
++ volint = track->min_volume;
++ } else {
++ volume *= scale;
++ volume += track->min_volume;
++ volint = lrint (volume);
++ }
+
+ volumes = g_new (gint, track->num_channels);
+ for (n = 0; n < track->num_channels; n++)
+- volumes[n] = lrint (volume);
++ volumes[n] = volint;
+ gst_mixer_set_volume (mixer, track, volumes);
++
+ g_free (volumes);
+ }
+
+@@ -1025,6 +1069,8 @@ cb_volume (GtkAdjustment *adj,
+
+ applet->lock = FALSE;
+ applet->force_next_update = TRUE;
++
++ gnome_volume_applet_refresh (GNOME_VOLUME_APPLET (data), FALSE, v, -1);
+ }
+
+ /*
+@@ -1035,31 +1081,39 @@ cb_volume (GtkAdjustment *adj,
+
+ static gboolean
+ gnome_volume_applet_refresh (GnomeVolumeApplet *applet,
+- gboolean force_refresh)
++ gboolean force_refresh,
++ gdouble volume,
++ gint mute)
+ {
+ BonoboUIComponent *component;
+ GdkPixbuf *pixbuf;
+ gint n;
+- gdouble volume;
+- gboolean mute, did_change;
++ gboolean show_mute, did_change;
+ gchar *tooltip_str;
+ GstMixerTrack *first_track;
+ GString *track_names;
+ GList *iter;
+
++ show_mute = 0;
++
+ if (!applet->mixer) {
+ n = 0;
+- mute = FALSE;
++ show_mute = 1;
++ mute = 0;
+ } else if (!applet->tracks) {
+ return FALSE;
+ } else {
+- /* only first track */
+ first_track = g_list_first (applet->tracks)->data;
+- volume = gnome_volume_applet_get_volume (applet->mixer, first_track);
+- mute = GST_MIXER_TRACK_HAS_FLAG (first_track,
+- GST_MIXER_TRACK_MUTE);
+- if (volume <= 0) {
+- mute = TRUE;
++ if (volume == -1) {
++ /* only first track */
++ volume = gnome_volume_applet_get_volume (applet->mixer, first_track);
++ }
++ if (mute == -1) {
++ mute = GST_MIXER_TRACK_HAS_FLAG (first_track,
++ GST_MIXER_TRACK_MUTE) ? 1 : 0;
++ }
++ if (volume <= 0 || mute) {
++ show_mute = 1;
+ n = 0;
+ }
+ else {
+@@ -1077,7 +1131,7 @@ gnome_volume_applet_refresh (GnomeVolume
+ applet->force_next_update = FALSE;
+
+ if (did_change) {
+- if (mute) {
++ if (show_mute) {
+ pixbuf = applet->pix[0];
+ } else {
+ pixbuf = applet->pix[n];
+@@ -1101,7 +1155,7 @@ gnome_volume_applet_refresh (GnomeVolume
+ track_names = g_string_append (track_names, track->label);
+ }
+
+- if (mute) {
++ if (show_mute) {
+ tooltip_str = g_strdup_printf (_("%s: muted"), track_names->str);
+ } else {
+ /* Translator comment: I'm not all too sure if this makes sense
+@@ -1129,6 +1183,52 @@ gnome_volume_applet_refresh (GnomeVolume
+ return did_change;
+ }
+
++static void
++cb_notify_message (GstBus *bus, GstMessage *message, gpointer data)
++{
++ GnomeVolumeApplet *applet = GNOME_VOLUME_APPLET (data);
++ GstMixerMessageType type;
++ GstMixerTrack *first_track;
++ GstMixerTrack *track = NULL;
++ gint mute;
++ gdouble volume;
++
++ if (applet->tracks == NULL ||
++ GST_MESSAGE_SRC (message) != GST_OBJECT (applet->mixer)) {
++ /* No tracks, or not from our mixer - can't update anything anyway */
++ return;
++ }
++
++ volume = mute = -1;
++
++ first_track = g_list_first (applet->tracks)->data;
++
++ /* This code only calls refresh if the first_track changes, because the
++ * refresh code only retrieves the current value from that track anyway */
++ type = gst_mixer_message_get_type (message);
++ if (type == GST_MIXER_MESSAGE_MUTE_TOGGLED) {
++ gboolean muted;
++ gst_mixer_message_parse_mute_toggled (message, &track, &muted);
++ mute = muted ? 1 : 0;
++ }
++ else if (type == GST_MIXER_MESSAGE_VOLUME_CHANGED) {
++ gint n, num_channels, *vols;
++ volume = 0.0;
++
++ gst_mixer_message_parse_volume_changed (message, &track, &vols, &num_channels);
++ for (n = 0; n < num_channels; n++)
++ volume += vols[n];
++ volume /= track->num_channels;
++ volume = 100 * volume / (track->max_volume - track->min_volume);
++ } else
++ {
++ return;
++ }
++
++ if (first_track == track)
++ gnome_volume_applet_refresh (GNOME_VOLUME_APPLET (data), FALSE, volume, mute);
++}
++
+ static gboolean
+ cb_check (gpointer data)
+ {
+@@ -1146,7 +1246,7 @@ cb_check (gpointer data)
+ */
+ if (time_counter % timeout == 0 || recent_change) {
+ did_change = gnome_volume_applet_refresh (GNOME_VOLUME_APPLET (data),
+- FALSE);
++ FALSE, -1, -1);
+
+ /*
+ * If a change was done, set recent_change so that the update is
+@@ -1227,6 +1327,8 @@ cb_gconf (GConfClient *client,
+ /* save */
+ gst_object_replace ((GstObject **) &applet->mixer, item->data);
+ gst_element_set_state (old_element, GST_STATE_NULL);
++
++ gnome_volume_applet_setup_timeout (applet);
+ newdevice = TRUE;
+ }
+ break;
+@@ -1387,7 +1489,7 @@ cb_theme_change (GtkIconTheme *icon_them
+ GnomeVolumeApplet *applet = GNOME_VOLUME_APPLET (data);
+
+ init_pixbufs (applet);
+- gnome_volume_applet_refresh (applet, TRUE);
++ gnome_volume_applet_refresh (applet, TRUE, -1, -1);
+ }
+
+ /*
diff --git a/gnome-applets.spec b/gnome-applets.spec
index 68a46b9..116b7f5 100644
--- a/gnome-applets.spec
+++ b/gnome-applets.spec
@@ -34,13 +34,13 @@
Summary: Small applications for the GNOME panel
Name: gnome-applets
-Version: 2.21.2
-Release: 10%{?dist}
+Version: 2.21.1
+Release: 1%{?dist}
Epoch: 1
License: GPLv2+ and GFDL+
Group: User Interface/Desktops
URL: http://www.gnome.org/
-Source: http://download.gnome.org/sources/%{name}/2.20/%{name}-%{version}.tar.bz2
+Source: http://download.gnome.org/sources/%{name}/2.21/%{name}-%{version}.tar.bz2
Source1: copy.xsl
Source2: gnome-applets-2.9.3.1-modemlights.tar.bz2
@@ -67,24 +67,11 @@ Patch33: gnome-applets-2.18.0-node-leak.patch
Patch34: ppp-includes.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=478485 includes the above
-Patch35: gnome-applets-2.20.0-mixer-out-of-sync.patch
-
-# http://bugzilla.gnome.org/show_bug.cgi?id=479172
-Patch36: gweather-pc.patch
-
-# fixed in upstream svn
-Patch38: mixer-preferences-leak.patch
+Patch35: gnome-applets-2.21.1-mixer-sync.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=488824
Patch39: gweather-network.patch
-# http://bugzilla.gnome.org/show_bug.cgi?id=491435
-Patch40: weather-update.patch
-# http://bugzilla.gnome.org/show_bug.cgi?id=491437
-Patch41: weather-abort.patch
-# http://bugzilla.gnome.org/show_bug.cgi?id=491438
-Patch42: nl_langinfo.patch
-
BuildRequires: glib2-devel >= %{glib2_version}
BuildRequires: gtk2-devel >= %{gtk2_version}
BuildRequires: libgnomeui-devel >= %{libgnomeui_version}
@@ -184,15 +171,8 @@ libraries contained in the gnome-applets package.
%patch30 -p1 -b .fix-null-applet
%patch31 -p1 -b .fix-find
%patch33 -p1 -b .node-leak
-pushd mixer/
-%patch35 -p0 -b .mixer-sync
-popd
-%patch36 -p1 -b .gweather-pc
-%patch38 -p1 -b .mixer-preferences-leak
+%patch35 -p1 -b .mixer-sync
%patch39 -p1 -b .geweather-network
-%patch40 -p1 -b .weather-update
-%patch41 -p1 -b .weather-abort
-%patch42 -p1 -b .nl_langinfo
cp gswitchit/gswitchit-applet.png gswitchit/gswitchit-properties-capplet.png
@@ -205,10 +185,10 @@ tar xjf %{SOURCE2}
%patch34 -p1 -b .ppp-includes
intltoolize --force
-autoconf
+autoreconf
+
%build
-autoreconf
%configure \
--enable-suid=no \
%if %{build_stickynotes}
diff --git a/sources b/sources
index e7c7830..cfdc464 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-985cfc3c58a72e1a92201bf4a4873b87 gnome-applets-2.20.0.tar.bz2
+3abfa92d933ed2eda39008c60141aa55 gnome-applets-2.21.1.tar.bz2
ccd89d3a58076214e2f34216388c9621 gnome-applets-2.9.3.1-modemlights.tar.bz2