From 0df30a7c5465366d03a38d38d17d117012c892e0 Mon Sep 17 00:00:00 2001 From: Rene Wagner Date: Sat, 12 Aug 2006 18:44:38 +0200 Subject: [PATCH] minimix: disable polling and repaint icon when idle. Signed-off-by: Rene Wagner --- .../minimix/files/disable-polling.patch | 95 +++++++++++++++++++ .../packages/minimix/minimix_0.8.bb | 3 + 2 files changed, 98 insertions(+) create mode 100644 org.handhelds.familiar/packages/minimix/files/disable-polling.patch diff --git a/org.handhelds.familiar/packages/minimix/files/disable-polling.patch b/org.handhelds.familiar/packages/minimix/files/disable-polling.patch new file mode 100644 index 0000000..973e020 --- /dev/null +++ b/org.handhelds.familiar/packages/minimix/files/disable-polling.patch @@ -0,0 +1,95 @@ +Index: minimix/minimix.c +=================================================================== +RCS file: /cvs/gpe/base/minimix/minimix.c,v +retrieving revision 1.10 +diff -u -r1.10 minimix.c +--- minimix/minimix.c 19 Sep 2005 15:36:02 -0000 1.10 ++++ minimix/minimix.c 2 Aug 2006 17:06:51 -0000 +@@ -2,7 +2,7 @@ + * minimix -- volume control + * + * Copyright (c) 2002, 2003, 2004 Phil Blundell +- * 2005 Rene Wagner ++ * 2005, 2006 Rene Wagner + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License +@@ -39,7 +39,13 @@ + GtkWidget *icon; + gint icon_size; + gboolean configure_done = FALSE; ++ ++#ifdef ENABLE_POLLING + guint timeout; ++#endif /* ENABLE_POLLING */ ++ ++guint render_idle_source; ++gboolean render_idle_scheduled = FALSE; + + int mixerfd; + +@@ -87,9 +93,11 @@ + current_vol_icon = vol_icons[level < SLIDER_MAX ? level / (SLIDER_MAX / (NUM_VOL_ICONS - 1)) + 1 : VOL_ICON_MAX]; + } + ++#ifdef ENABLE_POLLING + /* avoid loops... */ + if (level != gtk_adjustment_get_value (adj)) + gtk_adjustment_set_value (adj, level); ++#endif /* ENABLE_POLLING */ + } + + void +@@ -106,6 +114,7 @@ + gtk_image_set_from_pixbuf(GTK_IMAGE(icon), dbuf); + } + ++#ifdef ENABLE_POLLING + gboolean + timeout_cb (gpointer data) + { +@@ -118,6 +127,16 @@ + + return TRUE; + } ++#endif /* ENABLE_POLLING */ ++ ++gboolean ++render_when_idle (gpointer data) ++{ ++ render_icon(); ++ render_idle_scheduled = FALSE; ++ ++ return FALSE; ++} + + void + value_changed (GtkAdjustment *adj) +@@ -129,7 +148,13 @@ + refresh (value); + + if (configure_done && current_vol_icon != old_icon) +- render_icon (); ++ { ++ if (G_UNLIKELY (render_idle_scheduled)) ++ g_source_remove (render_idle_source); ++ else ++ render_idle_scheduled = TRUE; ++ render_idle_source = g_idle_add(render_when_idle, NULL); ++ } + + value |= (value << 8); + ioctl (mixerfd, SOUND_MIXER_WRITE_VOLUME, &value); +@@ -282,9 +307,12 @@ + gtk_widget_add_events (slider_window, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); + + refresh (read_volume_level ()); ++ ++#ifdef ENABLE_POLLING + timeout = g_timeout_add (200, + (GSourceFunc) timeout_cb, + NULL); ++#endif /* ENABLE_POLLING */ + + gtk_widget_show_all (box); + diff --git a/org.handhelds.familiar/packages/minimix/minimix_0.8.bb b/org.handhelds.familiar/packages/minimix/minimix_0.8.bb index 484393c..11443f6 100644 --- a/org.handhelds.familiar/packages/minimix/minimix_0.8.bb +++ b/org.handhelds.familiar/packages/minimix/minimix_0.8.bb @@ -2,8 +2,11 @@ DESCRIPTION = "Volume Control Applet for GPE" LICENSE = "GPL" MAINTAINER = "Rene Wagner " SECTION = "gpe" +PR = "r1" DEPENDS = "libgpewidget" GPE_TARBALL_SUFFIX = "bz2" inherit gpe autotools + +SRC_URI += "file://disable-polling.patch;patch=1" -- 2.41.0