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)
This commit is contained in:
Sebastien Bacher 2006-01-11 18:37:17 +00:00 committed by Sebastien Bacher
parent 821ca6fcf2
commit b62b47635a
4 changed files with 59 additions and 30 deletions

View file

@ -1,3 +1,16 @@
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:

View file

@ -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;

View file

@ -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);

View file

@ -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