From b62b47635a8e849c511898a5737af27530fc674a Mon Sep 17 00:00:00 2001 From: Sebastien Bacher Date: Wed, 11 Jan 2006 18:37:17 +0000 Subject: reviewed by: Bastien Nocera 2006-01-11 Sebastien Bacher reviewed by: Bastien Nocera * 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 (Closes: #132655) --- gnome-settings-daemon/ChangeLog | 13 +++++++++ gnome-settings-daemon/actions/acme-fb-level.c | 32 +++++++++++++++++++--- gnome-settings-daemon/actions/acme-fb-level.h | 12 +++++++- .../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,3 +1,16 @@ +2006-01-11 Sebastien Bacher + + reviewed by: Bastien Nocera + + * 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 + (Closes: #132655) + 2006-01-11 Sebastien Bacher * actions/acme.h: 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 #include #include +#include #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 -- cgit v1.2.1