summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Bacher <seb128@debian.org>2006-01-11 18:37:17 +0000
committerSebastien Bacher <sbacher@src.gnome.org>2006-01-11 18:37:17 +0000
commitb62b47635a8e849c511898a5737af27530fc674a (patch)
tree790b9f686dced5ba73f52ade329ef0857e1d4aa9
parent821ca6fcf2f9abd47f3de76da3a83fb7a25f4fa4 (diff)
downloadgnome-control-center-b62b47635a8e849c511898a5737af27530fc674a.tar.gz
reviewed by: Bastien Nocera <hadess@hadess.net>
2006-01-11 Sebastien Bacher <seb128@debian.org> reviewed by: Bastien Nocera <hadess@hadess.net> * actions/acme-fb-level.c: (acme_fblevel_error_quark), (acme_fblevel_new): * actions/acme-fb-level.h: * gnome-settings-multimedia-keys.c: (gnome_settings_multimedia_keys_load): cleanup messages about pmu on powerbook, patch by Jeroen Zwartepoorte <jeroen.zwartepoorte@gmail.com> (Closes: #132655)
-rw-r--r--gnome-settings-daemon/ChangeLog13
-rw-r--r--gnome-settings-daemon/actions/acme-fb-level.c32
-rw-r--r--gnome-settings-daemon/actions/acme-fb-level.h12
-rw-r--r--gnome-settings-daemon/gnome-settings-multimedia-keys.c32
4 files changed, 59 insertions, 30 deletions
diff --git a/gnome-settings-daemon/ChangeLog b/gnome-settings-daemon/ChangeLog
index 85756851f..3088b1131 100644
--- a/gnome-settings-daemon/ChangeLog
+++ b/gnome-settings-daemon/ChangeLog
@@ -1,5 +1,18 @@
2006-01-11 Sebastien Bacher <seb128@debian.org>
+ reviewed by: Bastien Nocera <hadess@hadess.net>
+
+ * actions/acme-fb-level.c: (acme_fblevel_error_quark),
+ (acme_fblevel_new):
+ * actions/acme-fb-level.h:
+ * gnome-settings-multimedia-keys.c:
+ (gnome_settings_multimedia_keys_load):
+ cleanup messages about pmu on powerbook,
+ patch by Jeroen Zwartepoorte <jeroen.zwartepoorte@gmail.com>
+ (Closes: #132655)
+
+2006-01-11 Sebastien Bacher <seb128@debian.org>
+
* actions/acme.h:
* gnome-settings-multimedia-keys.c: (update_kbd_cb), (init_kbd),
(acme_filter_events):
diff --git a/gnome-settings-daemon/actions/acme-fb-level.c b/gnome-settings-daemon/actions/acme-fb-level.c
index 85e715988..08e3dea05 100644
--- a/gnome-settings-daemon/actions/acme-fb-level.c
+++ b/gnome-settings-daemon/actions/acme-fb-level.c
@@ -31,6 +31,7 @@
#include <linux/fb.h>
#include <linux/pmu.h>
#include <errno.h>
+#include <libgnome/gnome-i18n.h>
#ifndef FBIOBLANK
#define FBIOBLANK 0x4611 /* 0 or vesa-level+1 */
@@ -84,6 +85,17 @@ acme_fblevel_init (AcmeFblevel *fblevel)
return;
}
+GQuark
+acme_fblevel_error_quark (void)
+{
+ static GQuark quark = 0;
+
+ if (quark == 0)
+ quark = g_quark_from_string ("acme-fblevel-quark");
+
+ return quark;
+}
+
int
acme_fblevel_get_level (AcmeFblevel *self)
{
@@ -126,16 +138,24 @@ acme_fblevel_set_dim (AcmeFblevel *self, gboolean val)
}
AcmeFblevel *
-acme_fblevel_new (void)
+acme_fblevel_new (GError **error)
{
AcmeFblevel *self;
int fd, foo;
- if (g_file_test ("/dev/pmu", G_FILE_TEST_EXISTS) == FALSE)
+ if (g_file_test ("/dev/pmu", G_FILE_TEST_EXISTS) == FALSE) {
+ *error = g_error_new_literal (ACME_FBLEVEL_ERROR,
+ ACME_FBLEVEL_ERROR_NO_PMU_DEVICE,
+ _("No '/dev/pmu' device found"));
return NULL;
+ }
- if (acme_fblevel_is_powerbook () == FALSE)
+ if (acme_fblevel_is_powerbook () == FALSE) {
+ *error = g_error_new_literal (ACME_FBLEVEL_ERROR,
+ ACME_FBLEVEL_ERROR_NO_POWERBOOK,
+ _("Not a powerbook"));
return NULL;
+ }
self = ACME_FBLEVEL (g_object_new (ACME_TYPE_FBLEVEL, NULL));
/* This function switches the kernel backlight control off.
@@ -147,8 +167,12 @@ acme_fblevel_new (void)
* Notice nicked from pbbuttons*/
fd = open ("/dev/pmu", O_RDWR);
/* We can't emit the signal yet, the signal isn't connected! */
- if (fd < 0)
+ if (fd < 0) {
+ *error = g_error_new_literal (ACME_FBLEVEL_ERROR,
+ ACME_FBLEVEL_ERROR_WRONG_PERMS,
+ _("Wrong permission for '/dev/pmu' device"));
return NULL;
+ }
foo = ioctl(fd, PMU_IOC_GRAB_BACKLIGHT, 0);
self->_priv->pmu_fd = fd;
diff --git a/gnome-settings-daemon/actions/acme-fb-level.h b/gnome-settings-daemon/actions/acme-fb-level.h
index a9525e9e3..4ec711c85 100644
--- a/gnome-settings-daemon/actions/acme-fb-level.h
+++ b/gnome-settings-daemon/actions/acme-fb-level.h
@@ -29,9 +29,12 @@
#define ACME_IS_FBLEVEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ACME_TYPE_FBLEVEL))
#define ACME_FBLEVEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ACME_TYPE_FBLEVEL, AcmeFblevelClass))
+#define ACME_FBLEVEL_ERROR (acme_fblevel_error_quark ())
+
typedef struct AcmeFblevelPrivate AcmeFblevelPrivate;
typedef struct AcmeFblevel AcmeFblevel;
typedef struct AcmeFblevelClass AcmeFblevelClass;
+typedef enum AcmeFblevelError AcmeFblevelError;
struct AcmeFblevel {
GObject parent;
@@ -44,12 +47,19 @@ struct AcmeFblevelClass {
GObjectClass parent;
};
+enum AcmeFblevelError {
+ ACME_FBLEVEL_ERROR_NO_PMU_DEVICE,
+ ACME_FBLEVEL_ERROR_NO_POWERBOOK,
+ ACME_FBLEVEL_ERROR_WRONG_PERMS
+};
+
GType acme_fblevel_get_type (void);
+GQuark acme_fblevel_error_quark (void);
int acme_fblevel_get_level (AcmeFblevel *self);
void acme_fblevel_set_level (AcmeFblevel *self, int val);
gboolean acme_fblevel_get_dim (AcmeFblevel *self);
void acme_fblevel_set_dim (AcmeFblevel *self,
gboolean val);
-AcmeFblevel *acme_fblevel_new (void);
+AcmeFblevel *acme_fblevel_new (GError **error);
gboolean acme_fblevel_is_powerbook (void);
diff --git a/gnome-settings-daemon/gnome-settings-multimedia-keys.c b/gnome-settings-daemon/gnome-settings-multimedia-keys.c
index a19473858..dce716ede 100644
--- a/gnome-settings-daemon/gnome-settings-multimedia-keys.c
+++ b/gnome-settings-daemon/gnome-settings-multimedia-keys.c
@@ -148,26 +148,6 @@ do_sleep_action (char *cmd1, char *cmd2)
}
}
-#ifdef USE_FBLEVEL
-static char*
-permission_problem_string (const char *file)
-{
- return g_strdup_printf (_("Permissions on the file %s are broken\n"), file);
-}
-
-static void
-fblevel_problem_cb (void)
-{
- char *msg;
-
- msg = permission_problem_string ("/dev/pmu");
- acme_error (msg);
- g_free (msg);
-
- return;
-}
-#endif
-
static char *images[] = {
PIXMAPSDIR "/gnome-speakernotes-muted.png",
PIXMAPSDIR "/gnome-speakernotes.png",
@@ -800,6 +780,7 @@ gnome_settings_multimedia_keys_load (GConfClient *client)
{
GSList *l;
Acme *acme;
+ GError *err = NULL;
acme = g_new0 (Acme, 1);
acme->xml = NULL;
@@ -819,11 +800,12 @@ gnome_settings_multimedia_keys_load (GConfClient *client)
#ifdef USE_FBLEVEL
/* initialise Frame Buffer level handler */
- if (acme_fblevel_is_powerbook () != FALSE)
- {
- acme->levobj = acme_fblevel_new();
- if (acme->levobj == NULL)
- fblevel_problem_cb ();
+ acme->levobj = acme_fblevel_new (&err);
+ if (acme->levobj == NULL && err != NULL) {
+ if (!g_error_matches (err, ACME_FBLEVEL_ERROR,
+ ACME_FBLEVEL_ERROR_NO_POWERBOOK))
+ acme_error (err->message);
+ g_error_free (err);
}
#endif