On 8 October 2010 19:03, Richard Hughes <hughsi...@gmail.com> wrote: > On 7 October 2010 13:14, Alex Murray <murray.a...@gmail.com> wrote: >> Thanks Richard will see what I can come up with - also what is the >> best way to post patches for review once I've got something together? > > Email either me or the mailing list. If you need help, grab me on IRC > -- I'm "hughsie". How about something like the attached patch - provides a new interface org.freedesktop.UPower.KbdBacklight which Get/SetBrightness and GetMaxBrightness methods, plus a BrightnessChanged signal. I plan to start work on g-p-m next to support using this to control the backlight from userspace,
One question is that this doesn't provide any authentication / access control to the dbus interface - if anything I thought that at_console would be the only restriction if anything, but any thoughts on this would be appreciated - i.e. at the moment any local user can control the backlight - perhaps this should be restricted to at_console? Cheers Alex > > Thanks, > > Richard. >
From cfa0d0446db1ee4a2a9a935f107764ebf8de9cfa Mon Sep 17 00:00:00 2001 From: Alex Murray <murray.a...@gmail.com> Date: Sat, 9 Oct 2010 07:50:32 +1030 Subject: [PATCH] Add support for controlling leds keyboard backlights Add a new DBus interface based on the QoS one to provide for controlling a keyboard backlight via the Linux leds interface. --- doc/Makefile.am | 1 + doc/dbus/Makefile.am | 6 +- doc/upower-docs.xml | 1 + src/Makefile.am | 10 + src/org.freedesktop.UPower.KbdBacklight.xml | 101 +++++++++ src/org.freedesktop.UPower.conf.in | 4 + src/up-kbd-backlight.c | 297 +++++++++++++++++++++++++++ src/up-kbd-backlight.h | 68 ++++++ src/up-main.c | 5 + 9 files changed, 492 insertions(+), 1 deletions(-) create mode 100644 src/org.freedesktop.UPower.KbdBacklight.xml create mode 100644 src/up-kbd-backlight.c create mode 100644 src/up-kbd-backlight.h diff --git a/doc/Makefile.am b/doc/Makefile.am index be6ed02..79695b8 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -61,6 +61,7 @@ content_files = \ dbus/org.freedesktop.UPower.ref.xml \ dbus/org.freedesktop.UPower.Device.ref.xml \ dbus/org.freedesktop.UPower.QoS.ref.xml \ + dbus/org.freedesktop.UPower.KbdBacklight.ref.xml \ $(NULL) # Images to copy into HTML directory diff --git a/doc/dbus/Makefile.am b/doc/dbus/Makefile.am index 78c9aa5..5275f16 100644 --- a/doc/dbus/Makefile.am +++ b/doc/dbus/Makefile.am @@ -1,5 +1,5 @@ -all : org.freedesktop.UPower.ref.xml org.freedesktop.UPower.Device.ref.xml org.freedesktop.UPower.QoS.ref.xml org.freedesktop.UPower.Wakeups.ref.xml +all : org.freedesktop.UPower.ref.xml org.freedesktop.UPower.Device.ref.xml org.freedesktop.UPower.QoS.ref.xml org.freedesktop.UPower.KbdBacklight.ref.xml org.freedesktop.UPower.Wakeups.ref.xml org.freedesktop.UPower.ref.xml : $(top_srcdir)/src/org.freedesktop.UPower.xml $(top_srcdir)/doc/dbus/spec-to-docbook.xsl echo "<?xml version=\"1.0\"?>""<!DOCTYPE refentry PUBLIC \"-//OASIS//DTD DocBook XML V4.1.2//EN\" \"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd\">" > $@ @@ -13,6 +13,10 @@ org.freedesktop.UPower.QoS.ref.xml : $(top_srcdir)/src/org.freedesktop.UPower.Qo echo "<?xml version=\"1.0\"?>""<!DOCTYPE refentry PUBLIC \"-//OASIS//DTD DocBook XML V4.1.2//EN\" \"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd\">" > $@ $(XSLTPROC) $(top_srcdir)/doc/dbus/spec-to-docbook.xsl $< | tail -n +2 >> $@ +org.freedesktop.UPower.KbdBacklight.ref.xml : $(top_srcdir)/src/org.freedesktop.UPower.KbdBacklight.xml $(top_srcdir)/doc/dbus/spec-to-docbook.xsl + echo "<?xml version=\"1.0\"?>""<!DOCTYPE refentry PUBLIC \"-//OASIS//DTD DocBook XML V4.1.2//EN\" \"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd\">" > $@ + $(XSLTPROC) $(top_srcdir)/doc/dbus/spec-to-docbook.xsl $< | tail -n +2 >> $@ + org.freedesktop.UPower.Wakeups.ref.xml : $(top_srcdir)/src/org.freedesktop.UPower.Wakeups.xml $(top_srcdir)/doc/dbus/spec-to-docbook.xsl echo "<?xml version=\"1.0\"?>""<!DOCTYPE refentry PUBLIC \"-//OASIS//DTD DocBook XML V4.1.2//EN\" \"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd\">" > $@ $(XSLTPROC) $(top_srcdir)/doc/dbus/spec-to-docbook.xsl $< | tail -n +2 >> $@ diff --git a/doc/upower-docs.xml b/doc/upower-docs.xml index 5db81b6..1cc79b7 100644 --- a/doc/upower-docs.xml +++ b/doc/upower-docs.xml @@ -67,6 +67,7 @@ <xi:include href="dbus/org.freedesktop.UPower.ref.xml"/> <xi:include href="dbus/org.freedesktop.UPower.Device.ref.xml"/> <xi:include href="dbus/org.freedesktop.UPower.QoS.ref.xml"/> + <xi:include href="dbus/org.freedesktop.UPower.KbdBacklight.ref.xml"/> </reference> <reference id="libupower-glib"> diff --git a/src/Makefile.am b/src/Makefile.am index 5ee559a..36ebf75 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -29,6 +29,7 @@ BUILT_SOURCES = \ up-daemon-glue.h \ up-device-glue.h \ up-qos-glue.h \ + up-kbd-backlight-glue.h \ up-wakeups-glue.h \ up-marshal.h \ up-marshal.c @@ -48,6 +49,9 @@ up-device-glue.h: org.freedesktop.UPower.Device.xml Makefile.am up-qos-glue.h: org.freedesktop.UPower.QoS.xml Makefile.am dbus-binding-tool --prefix=up_qos --mode=glib-server --output=up-qos-glue.h org.freedesktop.UPower.QoS.xml +up-kbd-backlight-glue.h: org.freedesktop.UPower.KbdBacklight.xml Makefile.am + dbus-binding-tool --prefix=up_kbd_backlight --mode=glib-server --output=up-kbd-backlight-glue.h org.freedesktop.UPower.KbdBacklight.xml + up-wakeups-glue.h: org.freedesktop.UPower.Wakeups.xml Makefile.am dbus-binding-tool --prefix=up_wakeups --mode=glib-server --output=up-wakeups-glue.h org.freedesktop.UPower.Wakeups.xml @@ -58,6 +62,7 @@ dbusif_DATA = \ org.freedesktop.UPower.xml \ org.freedesktop.UPower.Device.xml \ org.freedesktop.UPower.QoS.xml \ + org.freedesktop.UPower.KbdBacklight.xml \ org.freedesktop.UPower.Wakeups.xml upowerd_SOURCES = \ @@ -73,6 +78,8 @@ upowerd_SOURCES = \ up-device-list.c \ up-qos.h \ up-qos.c \ + up-kbd-backlight.h \ + up-kbd-backlight.c \ up-wakeups.h \ up-wakeups.c \ up-history.h \ @@ -136,6 +143,8 @@ up_self_test_SOURCES = \ up-device-list.c \ up-qos.h \ up-qos.c \ + up-kbd-backlight.h \ + up-kbd-backlight.c \ up-wakeups.h \ up-wakeups.c \ up-history.h \ @@ -187,6 +196,7 @@ EXTRA_DIST = \ org.freedesktop.UPower.xml \ org.freedesktop.UPower.Device.xml \ org.freedesktop.UPower.QoS.xml \ + org.freedesktop.UPower.KbdBacklight.xml \ org.freedesktop.UPower.Wakeups.xml \ up-marshal.list \ $(service_in_files) \ diff --git a/src/org.freedesktop.UPower.KbdBacklight.xml b/src/org.freedesktop.UPower.KbdBacklight.xml new file mode 100644 index 0000000..3ccc211 --- /dev/null +++ b/src/org.freedesktop.UPower.KbdBacklight.xml @@ -0,0 +1,101 @@ +<!DOCTYPE node PUBLIC +"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" +"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd" [ + <!ENTITY ERROR_GENERAL "org.freedesktop.UPower.GeneralError"> +]> +<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd"> + <interface name="org.freedesktop.UPower.KbdBacklight"> + <doc:doc> + <doc:description> + <doc:para> + org.freedesktop.UPower.KbdBacklight is a DBus interface implimented + by UPower. + It allows the keyboard backlight (if present) to be controlled. + </doc:para> + </doc:description> + </doc:doc> + + <!-- ************************************************************ --> + <method name="GetMaxBrightness"> + <arg name="value" direction="out" type="i"> + <doc:doc> + <doc:summary> + The maximum value of the keyboard backlight brightness. + </doc:summary> + </doc:doc> + </arg> + <doc:doc> + <doc:description> + <doc:para> + Get the maximum brightness level for the keyboard backlight. + </doc:para> + </doc:description> + <doc:errors> + <doc:error name="&ERROR_GENERAL;">if an error occured while getting the maximum brightness</doc:error> + </doc:errors> + </doc:doc> + </method> + + <!-- ************************************************************ --> + <method name="GetBrightness"> + <arg name="value" direction="out" type="i"> + <doc:doc> + <doc:summary> + The current value of the keyboard backlight brightness. + </doc:summary> + </doc:doc> + </arg> + <doc:doc> + <doc:description> + <doc:para> + Get the brightness level of the keyboard backlight. + </doc:para> + </doc:description> + <doc:errors> + <doc:error name="&ERROR_GENERAL;">if an error occured while getting the brightness</doc:error> + </doc:errors> + </doc:doc> + </method> + + <!-- ************************************************************ --> + <method name="SetBrightness"> + <arg name="value" direction="in" type="i"> + <doc:doc> + <doc:summary> + The value to set the KbdBacklight brightness. + </doc:summary> + </doc:doc> + </arg> + <doc:doc> + <doc:description> + <doc:para> + Set the brightness level of the keyboard backlight. + </doc:para> + </doc:description> + <doc:errors> + <doc:error name="&ERROR_GENERAL;">if an error occured while setting the brightness</doc:error> + </doc:errors> + </doc:doc> + </method> + + <!-- ************************************************************ --> + <signal name="BrightnessChanged"> + <arg name="value" direction="out" type="i"> + <doc:doc> + <doc:summary> + The new brightness value of the keyboard backlight. + </doc:summary> + </doc:doc> + </arg> + <doc:doc> + <doc:description> + <doc:para> + The keyboard backlight brightness level has changed. + </doc:para> + </doc:description> + </doc:doc> + </signal> + + </interface> + +</node> diff --git a/src/org.freedesktop.UPower.conf.in b/src/org.freedesktop.UPower.conf.in index 26fbb33..a15ce93 100644 --- a/src/org.freedesktop.UPower.conf.in +++ b/src/org.freedesktop.UPower.conf.in @@ -19,6 +19,8 @@ send_interface="org.freedesktop.DBus.Properties"/> <allow send_destination="org.freedesktop.UPower.QoS" send_interface="org.freedesktop.DBus.Properties"/> + <allow send_destination="org.freedesktop.UPower.KbdBacklight" + send_interface="org.freedesktop.DBus.Properties"/> <allow send_destination="org.freedesktop.UPower.Wakeups" send_interface="org.freedesktop.DBus.Properties"/> @@ -29,6 +31,8 @@ <allow send_destination="org.freedesktop.UPower" send_interface="org.freedesktop.UPower.QoS"/> <allow send_destination="org.freedesktop.UPower" + send_interface="org.freedesktop.UPower.KbdBacklight"/> + <allow send_destination="org.freedesktop.UPower" send_interface="org.freedesktop.UPower.Wakeups"/> </policy> </busconfig> diff --git a/src/up-kbd-backlight.c b/src/up-kbd-backlight.c new file mode 100644 index 0000000..733049f --- /dev/null +++ b/src/up-kbd-backlight.c @@ -0,0 +1,297 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Richard Hughes <rich...@hughsie.com> + * + * Licensed under the GNU General Public License Version 2 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "config.h" + +#include <glib.h> +#include <dbus/dbus-glib.h> +#include <dbus/dbus-glib-lowlevel.h> +#include <glib/gi18n.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <unistd.h> +#include <string.h> +#include <dirent.h> + +#include "egg-debug.h" + +#include "up-kbd-backlight.h" +#include "up-marshal.h" +#include "up-daemon.h" +#include "up-kbd-backlight-glue.h" +#include "up-types.h" + +static void up_kbd_backlight_finalize (GObject *object); + +#define UP_KBD_BACKLIGHT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UP_TYPE_KBD_BACKLIGHT, UpKbdBacklightPrivate)) + +struct UpKbdBacklightPrivate +{ + gint fd; + gint brightness; + gint max_brightness; + DBusGConnection *connection; +}; + +enum { + BRIGHTNESS_CHANGED, + LAST_SIGNAL +}; + +static guint signals [LAST_SIGNAL] = { 0 }; + +G_DEFINE_TYPE (UpKbdBacklight, up_kbd_backlight, G_TYPE_OBJECT) + +/** + * up_kbd_backlight_brightness_write: + **/ +static gboolean +up_kbd_backlight_brightness_write (UpKbdBacklight *kbd_backlight, gint value) +{ + gchar *text = NULL; + gint retval; + gint length; + gboolean ret = TRUE; + + /* write new values to pm-kbd_backlight */ + if (kbd_backlight->priv->fd < 0) { + egg_warning ("cannot write to kbd_backlight as file not open"); + ret = FALSE; + goto out; + } + + /* limit to between 0 and max */ + value = CLAMP (value, 0, kbd_backlight->priv->max_brightness); + + /* convert to text */ + text = g_strdup_printf ("%i", value); + length = strlen (text); + + /* write to file */ + lseek (kbd_backlight->priv->fd, 0, SEEK_SET); + retval = write (kbd_backlight->priv->fd, text, length); + if (retval != length) { + egg_warning ("writing '%s' to device failed", text); + ret = FALSE; + goto out; + } + + /* emit signal */ + kbd_backlight->priv->brightness = value; + g_signal_emit (kbd_backlight, signals [BRIGHTNESS_CHANGED], 0, + kbd_backlight->priv->brightness); + +out: + g_free (text); + return ret; +} + +/** + * up_kbd_backlight_get_brightness: + * + * Gets the current brightness + **/ +gboolean +up_kbd_backlight_get_brightness (UpKbdBacklight *kbd_backlight, gint *value, GError **error) +{ + *value = kbd_backlight->priv->brightness; + return TRUE; +} + +/** + * up_kbd_backlight_get_max_brightness: + * + * Gets the max brightness + **/ +gboolean +up_kbd_backlight_get_max_brightness (UpKbdBacklight *kbd_backlight, gint *value, GError **error) +{ + *value = kbd_backlight->priv->max_brightness; + return TRUE; +} + +/** + * up_kbd_backlight_set_brightness: + **/ +gboolean +up_kbd_backlight_set_brightness (UpKbdBacklight *kbd_backlight, gint value, GError **error) +{ + gboolean ret = FALSE; + + egg_debug ("setting brightness to %i", value); + ret = up_kbd_backlight_brightness_write(kbd_backlight, value); + + if (!ret) { + *error = g_error_new (UP_DAEMON_ERROR, UP_DAEMON_ERROR_GENERAL, "error writing brightness %d", value); + } + return ret; +} + +/** + * up_kbd_backlight_class_init: + **/ +static void +up_kbd_backlight_class_init (UpKbdBacklightClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->finalize = up_kbd_backlight_finalize; + + signals [BRIGHTNESS_CHANGED] = + g_signal_new ("brightness-changed", + G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (UpKbdBacklightClass, brightness_changed), + NULL, NULL, g_cclosure_marshal_VOID__INT, + G_TYPE_NONE, 1, G_TYPE_INT); + + /* introspection */ + dbus_g_object_type_install_info (UP_TYPE_KBD_BACKLIGHT, &dbus_glib_up_kbd_backlight_object_info); + + g_type_class_add_private (klass, sizeof (UpKbdBacklightPrivate)); +} + +static gboolean +find_kbd_backlight (UpKbdBacklight *kbd_backlight) +{ + gboolean ret = FALSE; + DIR *dir; + struct dirent *ent; + gchar *dir_path = NULL; + gchar *path; + gchar buf[100] = { '\0' }; + int fd; + + kbd_backlight->priv->fd = -1; + + dir = opendir ("/sys/class/leds"); + if (dir == NULL) + goto out; + + while ((ent = readdir (dir)) != NULL) { + if (strstr (ent->d_name, "kbd_backlight") != NULL) { + dir_path = g_strdup_printf ("/sys/class/leds/%s", + ent->d_name); + break; + } + } + closedir(dir); + if (dir_path == NULL) + goto out; + + /* read max brightness */ + path = g_strdup_printf ("%s/max_brightness", dir_path); + fd = open (path, O_RDONLY); + g_free (path); + if (fd < 0) + goto out; + + if (read (fd, buf, sizeof(buf)) < 0) { + close (fd); + goto out; + } + close (fd); + kbd_backlight->priv->max_brightness = g_ascii_strtoull (buf, NULL, 10); + + if (kbd_backlight->priv->max_brightness <= 0) + goto out; + + /* read brightness */ + path = g_strdup_printf ("%s/brightness", dir_path); + fd = open (path, O_RDWR); + g_free (path); + if (fd < 0) + goto out; + + if (read (fd, buf, sizeof(buf)) < 0) { + close (fd); + goto out; + } + kbd_backlight->priv->brightness = g_ascii_strtoull (buf, NULL, 10); + kbd_backlight->priv->fd = fd; + ret = TRUE; + +out: + g_free (dir_path); + return ret; +} + + + +/** + * up_kbd_backlight_init: + **/ +static void +up_kbd_backlight_init (UpKbdBacklight *kbd_backlight) +{ + GError *error = NULL; + + kbd_backlight->priv = UP_KBD_BACKLIGHT_GET_PRIVATE (kbd_backlight); + + /* find a kbd backlight in sysfs */ + if (!find_kbd_backlight (kbd_backlight)) { + egg_warning ("cannot find a kbd backlight"); + return; + } + + kbd_backlight->priv->connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error); + if (error != NULL) { + egg_warning ("Cannot connect to bus: %s", error->message); + g_error_free (error); + return; + } + + /* register on the bus */ + dbus_g_connection_register_g_object (kbd_backlight->priv->connection, "/org/freedesktop/UPower/KbdBacklight", G_OBJECT (kbd_backlight)); + +} + +/** + * up_kbd_backlight_finalize: + **/ +static void +up_kbd_backlight_finalize (GObject *object) +{ + UpKbdBacklight *kbd_backlight; + + g_return_if_fail (object != NULL); + g_return_if_fail (UP_IS_KBD_BACKLIGHT (object)); + + kbd_backlight = UP_KBD_BACKLIGHT (object); + kbd_backlight->priv = UP_KBD_BACKLIGHT_GET_PRIVATE (kbd_backlight); + + /* close file */ + close (kbd_backlight->priv->fd); + + G_OBJECT_CLASS (up_kbd_backlight_parent_class)->finalize (object); +} + +/** + * up_kbd_backlight_new: + **/ +UpKbdBacklight * +up_kbd_backlight_new (void) +{ + UpKbdBacklight *kbd_backlight; + kbd_backlight = g_object_new (UP_TYPE_KBD_BACKLIGHT, NULL); + return UP_KBD_BACKLIGHT (kbd_backlight); +} + diff --git a/src/up-kbd-backlight.h b/src/up-kbd-backlight.h new file mode 100644 index 0000000..2e7c76e --- /dev/null +++ b/src/up-kbd-backlight.h @@ -0,0 +1,68 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Richard Hughes <rich...@hughsie.com> + * + * Licensed under the GNU General Public License Version 2 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef __UP_KBD_BACKLIGHT_H +#define __UP_KBD_BACKLIGHT_H + +#include <glib-object.h> +#include <dbus/dbus-glib.h> + +G_BEGIN_DECLS + +#define UP_TYPE_KBD_BACKLIGHT (up_kbd_backlight_get_type ()) +#define UP_KBD_BACKLIGHT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), UP_TYPE_KBD_BACKLIGHT, UpKbdBacklight)) +#define UP_KBD_BACKLIGHT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), UP_TYPE_KBD_BACKLIGHT, UpKbdBacklightClass)) +#define UP_IS_KBD_BACKLIGHT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), UP_TYPE_KBD_BACKLIGHT)) +#define UP_IS_KBD_BACKLIGHT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), UP_TYPE_KBD_BACKLIGHT)) +#define UP_KBD_BACKLIGHT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), UP_TYPE_KBD_BACKLIGHT, UpKbdBacklightClass)) + +typedef struct UpKbdBacklightPrivate UpKbdBacklightPrivate; + +typedef struct +{ + GObject parent; + UpKbdBacklightPrivate *priv; +} UpKbdBacklight; + +typedef struct +{ + GObjectClass parent_class; + void (* brightness_changed) (UpKbdBacklight *kbd_backlight, + gint value); +} UpKbdBacklightClass; + +UpKbdBacklight *up_kbd_backlight_new (void); +GType up_kbd_backlight_get_type (void); +void up_kbd_backlight_test (gpointer user_data); + +gboolean up_kbd_backlight_set_brightness (UpKbdBacklight *kbd_backlight, + gint value, + GError **error); +gboolean up_kbd_backlight_get_brightness (UpKbdBacklight *kbd_backlight, + gint *value, + GError **error); +gboolean up_kbd_backlight_get_max_brightness (UpKbdBacklight *kbd_backlight, + gint *value, + GError **error); + +G_END_DECLS + +#endif /* __UP_KBD_BACKLIGHT_H */ diff --git a/src/up-main.c b/src/up-main.c index 281ea28..9f2cb24 100644 --- a/src/up-main.c +++ b/src/up-main.c @@ -40,6 +40,7 @@ #include "up-daemon.h" #include "up-qos.h" +#include "up-kbd-backlight.h" #include "up-wakeups.h" #define DEVKIT_POWER_SERVICE_NAME "org.freedesktop.UPower" @@ -125,6 +126,7 @@ main (gint argc, gchar **argv) GError *error = NULL; UpDaemon *daemon = NULL; UpQos *qos = NULL; + UpKbdBacklight *kbd_backlight = NULL; UpWakeups *wakeups = NULL; GOptionContext *context; DBusGProxy *bus_proxy; @@ -182,6 +184,7 @@ main (gint argc, gchar **argv) egg_debug ("Starting upowerd version %s", PACKAGE_VERSION); qos = up_qos_new (); + kbd_backlight = up_kbd_backlight_new (); wakeups = up_wakeups_new (); daemon = up_daemon_new (); loop = g_main_loop_new (NULL, FALSE); @@ -209,6 +212,8 @@ main (gint argc, gchar **argv) out: if (qos != NULL) g_object_unref (qos); + if (kbd_backlight != NULL) + g_object_unref (kbd_backlight); if (wakeups != NULL) g_object_unref (wakeups); if (daemon != NULL) -- 1.7.1
_______________________________________________ devkit-devel mailing list devkit-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/devkit-devel