3
* Copyright (C) 2004 Carlos Garcia Campos <carlosgc@gnome.org>
5
* This library is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU General Public
7
* License as published by the Free Software Foundation; either
8
* version 2 of the License, or (at your option) any later version.
10
* This library is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
* General Public License for more details.
15
* You should have received a copy of the GNU General Public
16
* License along with this library; if not, write to the Free
17
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
19
* Authors : Carlos Garc�a Campos <carlosgc@gnome.org>
23
#include "cpufreq-selector.h"
25
#define CPUFREQ_SELECTOR_GET_PRIVATE(obj) \
26
(G_TYPE_INSTANCE_GET_PRIVATE((obj), CPUFREQ_TYPE_SELECTOR, CPUFreqSelectorPrivate))
33
struct _CPUFreqSelectorPrivate {
37
static void cpufreq_selector_init (CPUFreqSelector *selector);
38
static void cpufreq_selector_class_init (CPUFreqSelectorClass *klass);
40
static void cpufreq_selector_set_property (GObject *object,
44
static void cpufreq_selector_get_property (GObject *object,
49
G_DEFINE_ABSTRACT_TYPE (CPUFreqSelector, cpufreq_selector, G_TYPE_OBJECT)
52
cpufreq_selector_error_quark (void)
54
static GQuark error_quark = 0;
58
g_quark_from_static_string ("cpufreq-selector-error-quark");
64
cpufreq_selector_init (CPUFreqSelector *selector)
67
selector->priv = CPUFREQ_SELECTOR_GET_PRIVATE (selector);
69
selector->priv->cpu = 0;
73
cpufreq_selector_class_init (CPUFreqSelectorClass *klass)
75
GObjectClass *object_class = G_OBJECT_CLASS (klass);
77
g_type_class_add_private (klass, sizeof (CPUFreqSelectorPrivate));
79
object_class->set_property = cpufreq_selector_set_property;
80
object_class->get_property = cpufreq_selector_get_property;
82
/* Public virtual methods */
83
klass->set_frequency = NULL;
84
klass->set_governor = NULL;
87
g_object_class_install_property (object_class,
89
g_param_spec_uint ("cpu",
95
G_PARAM_CONSTRUCT_ONLY |
100
cpufreq_selector_set_property (GObject *object,
105
CPUFreqSelector *selector = CPUFREQ_SELECTOR (object);
109
selector->priv->cpu = g_value_get_uint (value);
112
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, spec);
118
cpufreq_selector_get_property (GObject *object,
123
CPUFreqSelector *selector = CPUFREQ_SELECTOR (object);
127
g_value_set_uint (value, selector->priv->cpu);
130
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, spec);
136
cpufreq_selector_set_frequency (CPUFreqSelector *selector,
140
CPUFreqSelectorClass *class;
142
g_return_val_if_fail (CPUFREQ_IS_SELECTOR (selector), FALSE);
143
g_return_val_if_fail (frequency > 0, FALSE);
145
class = CPUFREQ_SELECTOR_GET_CLASS (selector);
147
if (class->set_frequency) {
148
return class->set_frequency (selector, frequency, error);
155
cpufreq_selector_set_governor (CPUFreqSelector *selector,
156
const gchar *governor,
159
CPUFreqSelectorClass *class;
161
g_return_val_if_fail (CPUFREQ_IS_SELECTOR (selector), FALSE);
162
g_return_val_if_fail (governor != NULL, FALSE);
164
class = CPUFREQ_SELECTOR_GET_CLASS (selector);
166
if (class->set_governor) {
167
return class->set_governor (selector, governor, error);