diff options
author | Sebastien Bacher <seb128@debian.org> | 2006-01-11 18:37:17 +0000 |
---|---|---|
committer | Sebastien Bacher <sbacher@src.gnome.org> | 2006-01-11 18:37:17 +0000 |
commit | b62b47635a8e849c511898a5737af27530fc674a (patch) | |
tree | 790b9f686dced5ba73f52ade329ef0857e1d4aa9 | |
parent | 821ca6fcf2f9abd47f3de76da3a83fb7a25f4fa4 (diff) | |
download | gnome-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/ChangeLog | 13 | ||||
-rw-r--r-- | gnome-settings-daemon/actions/acme-fb-level.c | 32 | ||||
-rw-r--r-- | gnome-settings-daemon/actions/acme-fb-level.h | 12 | ||||
-rw-r--r-- | gnome-settings-daemon/gnome-settings-multimedia-keys.c | 32 |
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 |