summaryrefslogtreecommitdiff
path: root/cpufreq/src/cpufreq-popup.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpufreq/src/cpufreq-popup.c')
-rw-r--r--cpufreq/src/cpufreq-popup.c702
1 files changed, 351 insertions, 351 deletions
diff --git a/cpufreq/src/cpufreq-popup.c b/cpufreq/src/cpufreq-popup.c
index 4a0d6025..56c1b0d0 100644
--- a/cpufreq/src/cpufreq-popup.c
+++ b/cpufreq/src/cpufreq-popup.c
@@ -31,21 +31,21 @@
#include "cpufreq-utils.h"
struct _CPUFreqPopupPrivate {
- GtkUIManager *ui_manager;
- GSList *radio_group;
+ GtkUIManager *ui_manager;
+ GSList *radio_group;
- GtkActionGroup *freqs_group;
- GSList *freqs_actions;
+ GtkActionGroup *freqs_group;
+ GSList *freqs_actions;
- GtkActionGroup *govs_group;
- GSList *govs_actions;
+ GtkActionGroup *govs_group;
+ GSList *govs_actions;
- guint merge_id;
- gboolean need_build;
- gboolean show_freqs;
+ guint merge_id;
+ gboolean need_build;
+ gboolean show_freqs;
- CPUFreqMonitor *monitor;
- GtkWidget *parent;
+ CPUFreqMonitor *monitor;
+ GtkWidget *parent;
};
static void cpufreq_popup_finalize (GObject *object);
@@ -53,15 +53,15 @@ static void cpufreq_popup_finalize (GObject *object);
G_DEFINE_TYPE_WITH_PRIVATE (CPUFreqPopup, cpufreq_popup, G_TYPE_OBJECT)
static const gchar *ui_popup =
-"<ui>"
-" <popup name=\"CPUFreqSelectorPopup\" action=\"PopupAction\">"
-" <placeholder name=\"FreqsItemsGroup\">"
-" </placeholder>"
-" <separator />"
-" <placeholder name=\"GovsItemsGroup\">"
-" </placeholder>"
-" </popup>"
-"</ui>";
+ "<ui>"
+ " <popup name=\"CPUFreqSelectorPopup\" action=\"PopupAction\">"
+ " <placeholder name=\"FreqsItemsGroup\">"
+ " </placeholder>"
+ " <separator />"
+ " <placeholder name=\"GovsItemsGroup\">"
+ " </placeholder>"
+ " </popup>"
+ "</ui>";
#define FREQS_PLACEHOLDER_PATH "/CPUFreqSelectorPopup/FreqsItemsGroup"
#define GOVS_PLACEHOLDER_PATH "/CPUFreqSelectorPopup/GovsItemsGroup"
@@ -69,438 +69,438 @@ static const gchar *ui_popup =
static void
cpufreq_popup_init (CPUFreqPopup *popup)
{
- popup->priv = cpufreq_popup_get_instance_private (popup);
+ popup->priv = cpufreq_popup_get_instance_private (popup);
- popup->priv->ui_manager = gtk_ui_manager_new ();
- popup->priv->radio_group = NULL;
+ popup->priv->ui_manager = gtk_ui_manager_new ();
+ popup->priv->radio_group = NULL;
- popup->priv->freqs_group = NULL;
- popup->priv->freqs_actions = NULL;
+ popup->priv->freqs_group = NULL;
+ popup->priv->freqs_actions = NULL;
- popup->priv->govs_group = NULL;
- popup->priv->govs_actions = NULL;
+ popup->priv->govs_group = NULL;
+ popup->priv->govs_actions = NULL;
- popup->priv->merge_id = 0;
- popup->priv->need_build = TRUE;
- popup->priv->show_freqs = FALSE;
+ popup->priv->merge_id = 0;
+ popup->priv->need_build = TRUE;
+ popup->priv->show_freqs = FALSE;
- gtk_ui_manager_add_ui_from_string (popup->priv->ui_manager,
- ui_popup, -1, NULL);
+ gtk_ui_manager_add_ui_from_string (popup->priv->ui_manager,
+ ui_popup, -1, NULL);
- popup->priv->monitor = NULL;
+ popup->priv->monitor = NULL;
}
static void
cpufreq_popup_class_init (CPUFreqPopupClass *klass)
{
- GObjectClass *g_object_class = G_OBJECT_CLASS (klass);
+ GObjectClass *g_object_class = G_OBJECT_CLASS (klass);
- g_object_class->finalize = cpufreq_popup_finalize;
+ g_object_class->finalize = cpufreq_popup_finalize;
}
static void
cpufreq_popup_finalize (GObject *object)
{
- CPUFreqPopup *popup = CPUFREQ_POPUP (object);
-
- if (popup->priv->ui_manager) {
- g_object_unref (popup->priv->ui_manager);
- popup->priv->ui_manager = NULL;
- }
-
- if (popup->priv->freqs_group) {
- g_object_unref (popup->priv->freqs_group);
- popup->priv->freqs_group = NULL;
- }
-
- if (popup->priv->freqs_actions) {
- g_slist_free (popup->priv->freqs_actions);
- popup->priv->freqs_actions = NULL;
- }
-
- if (popup->priv->govs_group) {
- g_object_unref (popup->priv->govs_group);
- popup->priv->govs_group = NULL;
- }
-
- if (popup->priv->govs_actions) {
- g_slist_free (popup->priv->govs_actions);
- popup->priv->govs_actions = NULL;
- }
-
- if (popup->priv->monitor) {
- g_object_unref (popup->priv->monitor);
- popup->priv->monitor = NULL;
- }
-
- G_OBJECT_CLASS (cpufreq_popup_parent_class)->finalize (object);
+ CPUFreqPopup *popup = CPUFREQ_POPUP (object);
+
+ if (popup->priv->ui_manager) {
+ g_object_unref (popup->priv->ui_manager);
+ popup->priv->ui_manager = NULL;
+ }
+
+ if (popup->priv->freqs_group) {
+ g_object_unref (popup->priv->freqs_group);
+ popup->priv->freqs_group = NULL;
+ }
+
+ if (popup->priv->freqs_actions) {
+ g_slist_free (popup->priv->freqs_actions);
+ popup->priv->freqs_actions = NULL;
+ }
+
+ if (popup->priv->govs_group) {
+ g_object_unref (popup->priv->govs_group);
+ popup->priv->govs_group = NULL;
+ }
+
+ if (popup->priv->govs_actions) {
+ g_slist_free (popup->priv->govs_actions);
+ popup->priv->govs_actions = NULL;
+ }
+
+ if (popup->priv->monitor) {
+ g_object_unref (popup->priv->monitor);
+ popup->priv->monitor = NULL;
+ }
+
+ G_OBJECT_CLASS (cpufreq_popup_parent_class)->finalize (object);
}
CPUFreqPopup *
cpufreq_popup_new (void)
{
- CPUFreqPopup *popup;
+ CPUFreqPopup *popup;
- popup = CPUFREQ_POPUP (g_object_new (CPUFREQ_TYPE_POPUP,
- NULL));
+ popup = CPUFREQ_POPUP (g_object_new (CPUFREQ_TYPE_POPUP,
+ NULL));
- return popup;
+ return popup;
}
/* Public methods */
void
cpufreq_popup_set_monitor (CPUFreqPopup *popup,
- CPUFreqMonitor *monitor)
+ CPUFreqMonitor *monitor)
{
- g_return_if_fail (CPUFREQ_IS_POPUP (popup));
- g_return_if_fail (CPUFREQ_IS_MONITOR (monitor));
-
- if (popup->priv->monitor == monitor)
- return;
-
- if (popup->priv->monitor)
- g_object_unref (popup->priv->monitor);
- popup->priv->monitor = g_object_ref (monitor);
+ g_return_if_fail (CPUFREQ_IS_POPUP (popup));
+ g_return_if_fail (CPUFREQ_IS_MONITOR (monitor));
+
+ if (popup->priv->monitor == monitor)
+ return;
+
+ if (popup->priv->monitor)
+ g_object_unref (popup->priv->monitor);
+ popup->priv->monitor = g_object_ref (monitor);
}
void
cpufreq_popup_set_parent (CPUFreqPopup *popup,
- GtkWidget *parent)
+ GtkWidget *parent)
{
- g_return_if_fail (CPUFREQ_IS_POPUP (popup));
- g_return_if_fail (GTK_IS_WIDGET (parent));
+ g_return_if_fail (CPUFREQ_IS_POPUP (popup));
+ g_return_if_fail (GTK_IS_WIDGET (parent));
- popup->priv->parent = parent;
+ popup->priv->parent = parent;
}
static void
cpufreq_popup_frequencies_menu_activate (GtkAction *action,
- CPUFreqPopup *popup)
+ CPUFreqPopup *popup)
{
- CPUFreqSelector *selector;
- const gchar *name;
- guint cpu;
- guint freq;
+ CPUFreqSelector *selector;
+ const gchar *name;
+ guint cpu;
+ guint freq;
- if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)))
- return;
+ if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)))
+ return;
- selector = cpufreq_selector_get_default ();
+ selector = cpufreq_selector_get_default ();
- cpu = cpufreq_monitor_get_cpu (popup->priv->monitor);
- name = gtk_action_get_name (action);
- freq = (guint) atoi (name + strlen ("Frequency"));
+ cpu = cpufreq_monitor_get_cpu (popup->priv->monitor);
+ name = gtk_action_get_name (action);
+ freq = (guint) atoi (name + strlen ("Frequency"));
- cpufreq_selector_set_frequency_async (selector, cpu, freq);
+ cpufreq_selector_set_frequency_async (selector, cpu, freq);
}
static void
cpufreq_popup_governors_menu_activate (GtkAction *action,
- CPUFreqPopup *popup)
+ CPUFreqPopup *popup)
{
- CPUFreqSelector *selector;
- const gchar *name;
- guint cpu;
- const gchar *governor;
+ CPUFreqSelector *selector;
+ const gchar *name;
+ guint cpu;
+ const gchar *governor;
+
+ if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)))
+ return;
- if (!gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)))
- return;
+ selector = cpufreq_selector_get_default ();
- selector = cpufreq_selector_get_default ();
-
- cpu = cpufreq_monitor_get_cpu (popup->priv->monitor);
- name = gtk_action_get_name (action);
- governor = name + strlen ("Governor");
+ cpu = cpufreq_monitor_get_cpu (popup->priv->monitor);
+ name = gtk_action_get_name (action);
+ governor = name + strlen ("Governor");
- cpufreq_selector_set_governor_async (selector, cpu, governor);
+ cpufreq_selector_set_governor_async (selector, cpu, governor);
}
static void
cpufreq_popup_menu_add_action (CPUFreqPopup *popup,
- const gchar *menu,
- GtkActionGroup *action_group,
- const gchar *action_name,
- const gchar *label,
- gboolean sensitive)
+ const gchar *menu,
+ GtkActionGroup *action_group,
+ const gchar *action_name,
+ const gchar *label,
+ gboolean sensitive)
{
- GtkToggleAction *action;
- gchar *name;
-
- name = g_strdup_printf ("%s%s", menu, action_name);
-
- action = g_object_new (GTK_TYPE_RADIO_ACTION,
- "name", name,
- "label", label,
- NULL);
-
- gtk_action_set_sensitive (GTK_ACTION (action), sensitive);
-
- gtk_radio_action_set_group (GTK_RADIO_ACTION (action), popup->priv->radio_group);
- popup->priv->radio_group = gtk_radio_action_get_group (GTK_RADIO_ACTION (action));
-
- if (g_ascii_strcasecmp (menu, "Frequency") == 0) {
- popup->priv->freqs_actions = g_slist_prepend (popup->priv->freqs_actions,
- (gpointer) action);
-
- g_signal_connect (action, "activate",
- G_CALLBACK (cpufreq_popup_frequencies_menu_activate),
- (gpointer) popup);
- } else if (g_ascii_strcasecmp (menu, "Governor") == 0) {
- popup->priv->govs_actions = g_slist_prepend (popup->priv->govs_actions,
- (gpointer) action);
-
- g_signal_connect (action, "activate",
- G_CALLBACK (cpufreq_popup_governors_menu_activate),
- (gpointer) popup);
- }
-
- gtk_action_group_add_action (action_group, GTK_ACTION (action));
- g_object_unref (action);
-
- g_free (name);
+ GtkToggleAction *action;
+ gchar *name;
+
+ name = g_strdup_printf ("%s%s", menu, action_name);
+
+ action = g_object_new (GTK_TYPE_RADIO_ACTION,
+ "name", name,
+ "label", label,
+ NULL);
+
+ gtk_action_set_sensitive (GTK_ACTION (action), sensitive);
+
+ gtk_radio_action_set_group (GTK_RADIO_ACTION (action), popup->priv->radio_group);
+ popup->priv->radio_group = gtk_radio_action_get_group (GTK_RADIO_ACTION (action));
+
+ if (g_ascii_strcasecmp (menu, "Frequency") == 0) {
+ popup->priv->freqs_actions = g_slist_prepend (popup->priv->freqs_actions,
+ (gpointer) action);
+
+ g_signal_connect (action, "activate",
+ G_CALLBACK (cpufreq_popup_frequencies_menu_activate),
+ (gpointer) popup);
+ } else if (g_ascii_strcasecmp (menu, "Governor") == 0) {
+ popup->priv->govs_actions = g_slist_prepend (popup->priv->govs_actions,
+ (gpointer) action);
+
+ g_signal_connect (action, "activate",
+ G_CALLBACK (cpufreq_popup_governors_menu_activate),
+ (gpointer) popup);
+ }
+
+ gtk_action_group_add_action (action_group, GTK_ACTION (action));
+ g_object_unref (action);
+
+ g_free (name);
}
static void
frequencies_menu_create_actions (CPUFreqPopup *popup)
{
- GList *available_freqs;
-
- available_freqs = cpufreq_monitor_get_available_frequencies (popup->priv->monitor);
-
- while (available_freqs) {
- const gchar *text;
- gchar *freq_text;
- gchar *label;
- gchar *unit;
- gint freq;
-
- text = (const gchar *) available_freqs->data;
- freq = atoi (text);
-
- freq_text = cpufreq_utils_get_frequency_label (freq);
- unit = cpufreq_utils_get_frequency_unit (freq);
-
- label = g_strdup_printf ("%s %s", freq_text, unit);
- g_free (freq_text);
- g_free (unit);
-
- cpufreq_popup_menu_add_action (popup,
- "Frequency",
- popup->priv->freqs_group,
- text, label, TRUE);
- g_free (label);
-
- available_freqs = g_list_next (available_freqs);
- }
+ GList *available_freqs;
+
+ available_freqs = cpufreq_monitor_get_available_frequencies (popup->priv->monitor);
+
+ while (available_freqs) {
+ const gchar *text;
+ gchar *freq_text;
+ gchar *label;
+ gchar *unit;
+ gint freq;
+
+ text = (const gchar *) available_freqs->data;
+ freq = atoi (text);
+
+ freq_text = cpufreq_utils_get_frequency_label (freq);
+ unit = cpufreq_utils_get_frequency_unit (freq);
+
+ label = g_strdup_printf ("%s %s", freq_text, unit);
+ g_free (freq_text);
+ g_free (unit);
+
+ cpufreq_popup_menu_add_action (popup,
+ "Frequency",
+ popup->priv->freqs_group,
+ text, label, TRUE);
+ g_free (label);
+
+ available_freqs = g_list_next (available_freqs);
+ }
}
static void
governors_menu_create_actions (CPUFreqPopup *popup)
{
- GList *available_govs;
-
- available_govs = cpufreq_monitor_get_available_governors (popup->priv->monitor);
- available_govs = g_list_sort (available_govs, (GCompareFunc)g_ascii_strcasecmp);
-
- while (available_govs) {
- const gchar *governor;
- gchar *label;
-
- governor = (const gchar *) available_govs->data;
- if (g_ascii_strcasecmp (governor, "userspace") == 0) {
- popup->priv->show_freqs = TRUE;
- available_govs = g_list_next (available_govs);
- continue;
- }
-
- label = g_strdup (governor);
- label[0] = g_ascii_toupper (label[0]);
-
- cpufreq_popup_menu_add_action (popup,
- "Governor",
- popup->priv->govs_group,
- governor, label, TRUE);
- g_free (label);
-
- available_govs = g_list_next (available_govs);
- }
+ GList *available_govs;
+
+ available_govs = cpufreq_monitor_get_available_governors (popup->priv->monitor);
+ available_govs = g_list_sort (available_govs, (GCompareFunc)g_ascii_strcasecmp);
+
+ while (available_govs) {
+ const gchar *governor;
+ gchar *label;
+
+ governor = (const gchar *) available_govs->data;
+ if (g_ascii_strcasecmp (governor, "userspace") == 0) {
+ popup->priv->show_freqs = TRUE;
+ available_govs = g_list_next (available_govs);
+ continue;
+ }
+
+ label = g_strdup (governor);
+ label[0] = g_ascii_toupper (label[0]);
+
+ cpufreq_popup_menu_add_action (popup,
+ "Governor",
+ popup->priv->govs_group,
+ governor, label, TRUE);
+ g_free (label);
+
+ available_govs = g_list_next (available_govs);
+ }
}
static void
cpufreq_popup_build_ui (CPUFreqPopup *popup,
- GSList *actions,
- const gchar *menu_path)
+ GSList *actions,
+ const gchar *menu_path)
{
- GSList *l = NULL;
-
- for (l = actions; l && l->data; l = g_slist_next (l)) {
- GtkAction *action;
- gchar *name = NULL;
- gchar *label = NULL;
-
- action = (GtkAction *) l->data;
-
- g_object_get (G_OBJECT (action),
- "name", &name,
- "label", &label,
- NULL);
-
- gtk_ui_manager_add_ui (popup->priv->ui_manager,
- popup->priv->merge_id,
- menu_path,
- label, name,
- GTK_UI_MANAGER_MENUITEM,
- FALSE);
-
- g_free (name);
- g_free (label);
- }
+ GSList *l = NULL;
+
+ for (l = actions; l && l->data; l = g_slist_next (l)) {
+ GtkAction *action;
+ gchar *name = NULL;
+ gchar *label = NULL;
+
+ action = (GtkAction *) l->data;
+
+ g_object_get (G_OBJECT (action),
+ "name", &name,
+ "label", &label,
+ NULL);
+
+ gtk_ui_manager_add_ui (popup->priv->ui_manager,
+ popup->priv->merge_id,
+ menu_path,
+ label, name,
+ GTK_UI_MANAGER_MENUITEM,
+ FALSE);
+
+ g_free (name);
+ g_free (label);
+ }
}
static void
cpufreq_popup_build_frequencies_menu (CPUFreqPopup *popup,
- const gchar *path)
+ const gchar *path)
{
- if (!popup->priv->freqs_group) {
- GtkActionGroup *action_group;
-
- action_group = gtk_action_group_new ("FreqsActions");
- popup->priv->freqs_group = action_group;
- gtk_action_group_set_translation_domain (action_group, NULL);
-
- frequencies_menu_create_actions (popup);
- popup->priv->freqs_actions = g_slist_reverse (popup->priv->freqs_actions);
- gtk_ui_manager_insert_action_group (popup->priv->ui_manager,
- action_group, 0);
- }
-
- cpufreq_popup_build_ui (popup,
- popup->priv->freqs_actions,
- path);
+ if (!popup->priv->freqs_group) {
+ GtkActionGroup *action_group;
+
+ action_group = gtk_action_group_new ("FreqsActions");
+ popup->priv->freqs_group = action_group;
+ gtk_action_group_set_translation_domain (action_group, NULL);
+
+ frequencies_menu_create_actions (popup);
+ popup->priv->freqs_actions = g_slist_reverse (popup->priv->freqs_actions);
+ gtk_ui_manager_insert_action_group (popup->priv->ui_manager,
+ action_group, 0);
+ }
+
+ cpufreq_popup_build_ui (popup,
+ popup->priv->freqs_actions,
+ path);
}
static void
cpufreq_popup_build_governors_menu (CPUFreqPopup *popup,
- const gchar *path)
+ const gchar *path)
{
- if (!popup->priv->govs_group) {
- GtkActionGroup *action_group;
-
- action_group = gtk_action_group_new ("GovsActions");
- popup->priv->govs_group = action_group;
- gtk_action_group_set_translation_domain (action_group, NULL);
-
- governors_menu_create_actions (popup);
- popup->priv->govs_actions = g_slist_reverse (popup->priv->govs_actions);
- gtk_ui_manager_insert_action_group (popup->priv->ui_manager,
- action_group, 1);
- }
-
- cpufreq_popup_build_ui (popup,
- popup->priv->govs_actions,
- path);
+ if (!popup->priv->govs_group) {
+ GtkActionGroup *action_group;
+
+ action_group = gtk_action_group_new ("GovsActions");
+ popup->priv->govs_group = action_group;
+ gtk_action_group_set_translation_domain (action_group, NULL);
+
+ governors_menu_create_actions (popup);
+ popup->priv->govs_actions = g_slist_reverse (popup->priv->govs_actions);
+ gtk_ui_manager_insert_action_group (popup->priv->ui_manager,
+ action_group, 1);
+ }
+
+ cpufreq_popup_build_ui (popup,
+ popup->priv->govs_actions,
+ path);
}
static void
cpufreq_popup_build_menu (CPUFreqPopup *popup)
{
- if (popup->priv->merge_id > 0) {
- gtk_ui_manager_remove_ui (popup->priv->ui_manager,
- popup->priv->merge_id);
- gtk_ui_manager_ensure_update (popup->priv->ui_manager);
- }
-
- popup->priv->merge_id = gtk_ui_manager_new_merge_id (popup->priv->ui_manager);
-
- cpufreq_popup_build_frequencies_menu (popup, FREQS_PLACEHOLDER_PATH);
- cpufreq_popup_build_governors_menu (popup, GOVS_PLACEHOLDER_PATH);
-
- gtk_action_group_set_visible (popup->priv->freqs_group,
- popup->priv->show_freqs);
+ if (popup->priv->merge_id > 0) {
+ gtk_ui_manager_remove_ui (popup->priv->ui_manager,
+ popup->priv->merge_id);
+ gtk_ui_manager_ensure_update (popup->priv->ui_manager);
+ }
+
+ popup->priv->merge_id = gtk_ui_manager_new_merge_id (popup->priv->ui_manager);
+
+ cpufreq_popup_build_frequencies_menu (popup, FREQS_PLACEHOLDER_PATH);
+ cpufreq_popup_build_governors_menu (popup, GOVS_PLACEHOLDER_PATH);
+
+ gtk_action_group_set_visible (popup->priv->freqs_group,
+ popup->priv->show_freqs);
}
static void
cpufreq_popup_menu_set_active_action (CPUFreqPopup *popup,
- GtkActionGroup *action_group,
- const gchar *prefix,
- const gchar *item)
+ GtkActionGroup *action_group,
+ const gchar *prefix,
+ const gchar *item)
{
- gchar name[128];
- GtkAction *action;
-
- g_snprintf (name, sizeof (name), "%s%s", prefix, item);
- action = gtk_action_group_get_action (action_group, name);
-
- /* gtk_action_group_get_action can return NULL with frequencies (userspace governor)
- * when the CPU does not actually stay locked to that exact frequency but rather to a
- * frequency range. Since cpufreq_monitor_get_frequency gets the realtime frequency, this
- * may not match any named frequency and then returns NULL. Return when this happens to
- * avoid segfaults
- */
- if (action == NULL)
- return;
-
- g_signal_handlers_block_by_func (action,
- cpufreq_popup_frequencies_menu_activate,
- popup);
- g_signal_handlers_block_by_func (action,
- cpufreq_popup_governors_menu_activate,
- popup);
-
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
-
- g_signal_handlers_unblock_by_func (action,
- cpufreq_popup_frequencies_menu_activate,
- popup);
- g_signal_handlers_unblock_by_func (action,
- cpufreq_popup_governors_menu_activate,
- popup);
+ gchar name[128];
+ GtkAction *action;
+
+ g_snprintf (name, sizeof (name), "%s%s", prefix, item);
+ action = gtk_action_group_get_action (action_group, name);
+
+ /* gtk_action_group_get_action can return NULL with frequencies (userspace governor)
+ * when the CPU does not actually stay locked to that exact frequency but rather to a
+ * frequency range. Since cpufreq_monitor_get_frequency gets the realtime frequency, this
+ * may not match any named frequency and then returns NULL. Return when this happens to
+ * avoid segfaults
+ */
+ if (action == NULL)
+ return;
+
+ g_signal_handlers_block_by_func (action,
+ cpufreq_popup_frequencies_menu_activate,
+ popup);
+ g_signal_handlers_block_by_func (action,
+ cpufreq_popup_governors_menu_activate,
+ popup);
+
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
+
+ g_signal_handlers_unblock_by_func (action,
+ cpufreq_popup_frequencies_menu_activate,
+ popup);
+ g_signal_handlers_unblock_by_func (action,
+ cpufreq_popup_governors_menu_activate,
+ popup);
}
static void
cpufreq_popup_menu_set_active (CPUFreqPopup *popup)
{
- const gchar *governor;
-
- governor = cpufreq_monitor_get_governor (popup->priv->monitor);
-
- if (g_ascii_strcasecmp (governor, "userspace") == 0) {
- gchar *active;
- guint freq;
-
- freq = cpufreq_monitor_get_frequency (popup->priv->monitor);
- active = g_strdup_printf ("%d", freq);
- cpufreq_popup_menu_set_active_action (popup,
- popup->priv->freqs_group,
- "Frequency", active);
- g_free (active);
- } else {
- cpufreq_popup_menu_set_active_action (popup,
- popup->priv->govs_group,
- "Governor", governor);
- }
+ const gchar *governor;
+
+ governor = cpufreq_monitor_get_governor (popup->priv->monitor);
+
+ if (g_ascii_strcasecmp (governor, "userspace") == 0) {
+ gchar *active;
+ guint freq;
+
+ freq = cpufreq_monitor_get_frequency (popup->priv->monitor);
+ active = g_strdup_printf ("%d", freq);
+ cpufreq_popup_menu_set_active_action (popup,
+ popup->priv->freqs_group,
+ "Frequency", active);
+ g_free (active);
+ } else {
+ cpufreq_popup_menu_set_active_action (popup,
+ popup->priv->govs_group,
+ "Governor", governor);
+ }
}
GtkWidget *
cpufreq_popup_get_menu (CPUFreqPopup *popup)
{
- GtkWidget *menu;
-
- g_return_val_if_fail (CPUFREQ_IS_POPUP (popup), NULL);
- g_return_val_if_fail (CPUFREQ_IS_MONITOR (popup->priv->monitor), NULL);
-
- if (!cpufreq_utils_selector_is_available ())
- return NULL;
-
- if (popup->priv->need_build) {
- cpufreq_popup_build_menu (popup);
- popup->priv->need_build = FALSE;
- }
-
- cpufreq_popup_menu_set_active (popup);
-
- menu = gtk_ui_manager_get_widget (popup->priv->ui_manager,
- "/CPUFreqSelectorPopup");
-
- return menu;
+ GtkWidget *menu;
+
+ g_return_val_if_fail (CPUFREQ_IS_POPUP (popup), NULL);
+ g_return_val_if_fail (CPUFREQ_IS_MONITOR (popup->priv->monitor), NULL);
+
+ if (!cpufreq_utils_selector_is_available ())
+ return NULL;
+
+ if (popup->priv->need_build) {
+ cpufreq_popup_build_menu (popup);
+ popup->priv->need_build = FALSE;
+ }
+
+ cpufreq_popup_menu_set_active (popup);
+
+ menu = gtk_ui_manager_get_widget (popup->priv->ui_manager,
+ "/CPUFreqSelectorPopup");
+
+ return menu;
}