Author: jannis
Date: 2008-06-22 12:09:04 +0000 (Sun, 22 Jun 2008)
New Revision: 27130
Modified:
xfce4-mixer/trunk/ChangeLog
xfce4-mixer/trunk/TODO
xfce4-mixer/trunk/panel-plugin/xfce-volume-button.c
Log:
* panel-plugin/xfce-volume-button.c: Preload icon pixbufs whenever
the icon size is changed.
Modified: xfce4-mixer/trunk/ChangeLog
===================================================================
--- xfce4-mixer/trunk/ChangeLog 2008-06-22 10:57:49 UTC (rev 27129)
+++ xfce4-mixer/trunk/ChangeLog 2008-06-22 12:09:04 UTC (rev 27130)
@@ -1,5 +1,10 @@
2008-06-22 Jannis Pohlmann <[EMAIL PROTECTED]>
+ * panel-plugin/xfce-volume-button.c: Preload icon pixbufs whenever
+ the icon size is changed.
+
+2008-06-22 Jannis Pohlmann <[EMAIL PROTECTED]>
+
* xfce4-mixer/xfce-mixer.c: Don't free the hash table keys as
they are owned by GStreamer. That introduced a really, really
weird bug ...
Modified: xfce4-mixer/trunk/TODO
===================================================================
--- xfce4-mixer/trunk/TODO 2008-06-22 10:57:49 UTC (rev 27129)
+++ xfce4-mixer/trunk/TODO 2008-06-22 12:09:04 UTC (rev 27130)
@@ -1,7 +1,9 @@
-* Monitor for changes and update the controls according to them:
- 1) Add GHashTable for (track name => mixer widget) lookup
- 2) Extend xfce_mixer_bus_message() to handle all types of messages
- by updating the corresponding mixer widgets
+* Design new icons for the mixer plugin
+* Panel plugin: Decide on how to react on tracks with
+ different channel volume levels (median, minimum, maximum value?)
+
+* Panel plugin: Add volume percentage tooltip
+
* Allow changing controls from the console, probably via something like:
--change-control=SOUNDCARD NAME:TRACK NAME:NEW VALUE
Modified: xfce4-mixer/trunk/panel-plugin/xfce-volume-button.c
===================================================================
--- xfce4-mixer/trunk/panel-plugin/xfce-volume-button.c 2008-06-22 10:57:49 UTC
(rev 27129)
+++ xfce4-mixer/trunk/panel-plugin/xfce-volume-button.c 2008-06-22 12:09:04 UTC
(rev 27130)
@@ -22,6 +22,7 @@
#include <config.h>
#endif
+#include <gdk/gdk.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
@@ -98,13 +99,15 @@
{
GtkButton __parent__;
- GtkWidget *image;
+ GtkWidget *image;
- GtkObject *adjustment;
+ GtkObject *adjustment;
- gint icon_size;
+ gint icon_size;
- gboolean is_muted;
+ GdkPixbuf **pixbufs;
+
+ gboolean is_muted;
};
@@ -187,6 +190,8 @@
{
button->is_muted = FALSE;
+ button->pixbufs = g_new0 (GdkPixbuf*, G_N_ELEMENTS (icons)-1);
+
button->adjustment = gtk_adjustment_new (0.0, 0.0, 1.0, 0.05, 0.05, 0.2);
button->image = xfce_scaled_image_new ();
@@ -220,8 +225,16 @@
static void
xfce_volume_button_finalize (GObject *object)
{
+ gint i;
+
XfceVolumeButton *button = XFCE_VOLUME_BUTTON (object);
+ for (i = 0; i < G_N_ELEMENTS (icons)-1; ++i)
+ if (GDK_IS_PIXBUF (button->pixbufs[i]))
+ g_object_unref (G_OBJECT (button->pixbufs[i]));
+
+ g_free (button->pixbufs);
+
(*G_OBJECT_CLASS (xfce_volume_button_parent_class)->finalize) (object);
}
@@ -368,22 +381,19 @@
range = (upper - lower) / (G_N_ELEMENTS (icons) - 2);
if (G_UNLIKELY (value == 0 || button->is_muted))
- pixbuf = xfce_themed_icon_load (icons[0], button->icon_size);
+ pixbuf = button->pixbufs[0];
else
{
for (i = 1; i < G_N_ELEMENTS (icons) - 1; ++i)
if (value <= range * i)
{
- pixbuf = xfce_themed_icon_load (icons[i], button->icon_size);
+ pixbuf = button->pixbufs[i];
break;
}
}
if (G_LIKELY (pixbuf != NULL))
- {
- xfce_scaled_image_set_from_pixbuf (XFCE_SCALED_IMAGE (button->image),
pixbuf);
- g_object_unref (G_OBJECT (pixbuf));
- }
+ xfce_scaled_image_set_from_pixbuf (XFCE_SCALED_IMAGE (button->image),
pixbuf);
}
@@ -421,9 +431,20 @@
xfce_volume_button_set_icon_size (XfceVolumeButton *button,
gint size)
{
+ gint i;
+
g_return_if_fail (IS_XFCE_VOLUME_BUTTON (button));
g_return_if_fail (size >= 0);
+
button->icon_size = size;
+
+ for (i = 0; i < G_N_ELEMENTS (icons)-1; ++i)
+ {
+ if (GDK_IS_PIXBUF (button->pixbufs[i]))
+ g_object_unref (G_OBJECT (button->pixbufs[i]));
+
+ button->pixbufs[i] = xfce_themed_icon_load (icons[i], button->icon_size);
+ }
}
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits