1405
update_brightness_limits (GnomeRROutput *output)
1410
XRRPropertyInfo *info;
1412
gdk_error_trap_push ();
1413
atom = XInternAtom (DISPLAY (output), "BACKLIGHT", FALSE);
1414
info = XRRQueryOutputProperty (DISPLAY (output), output->id, atom);
1415
rc = gdk_error_trap_pop ();
1418
g_warning ("could not get output property for %s, rc: %i",
1424
g_warning ("could not get output property for %s",
1428
if (!info->range || info->num_values != 2)
1430
g_debug ("backlight %s was not range", output->name);
1433
output->backlight_min = info->values[0];
1434
output->backlight_max = info->values[1];
1402
1440
#ifdef HAVE_RANDR
1403
1441
static gboolean
1404
1442
output_initialize (GnomeRROutput *output, XRRScreenResources *res, GError **error)
1600
* gnome_rr_output_get_backlight_min:
1602
* Returns: The mimimum backlight value, or -1 if not supported
1605
gnome_rr_output_get_backlight_min (GnomeRROutput *output)
1607
g_return_val_if_fail (output != NULL, -1);
1608
return output->backlight_min;
1612
* gnome_rr_output_get_backlight_max:
1614
* Returns: The maximum backlight value, or -1 if not supported
1617
gnome_rr_output_get_backlight_max (GnomeRROutput *output)
1619
g_return_val_if_fail (output != NULL, -1);
1620
return output->backlight_max;
1624
* gnome_rr_output_get_backlight:
1626
* Returns: The currently set backlight brightness
1629
gnome_rr_output_get_backlight (GnomeRROutput *output, GError **error)
1633
unsigned long nitems;
1634
unsigned long bytes_after;
1641
g_return_val_if_fail (output != NULL, -1);
1643
gdk_error_trap_push ();
1644
atom = XInternAtom (DISPLAY (output), "BACKLIGHT", FALSE);
1645
retval = XRRGetOutputProperty (DISPLAY (output), output->id, atom,
1646
0, 4, False, False, None,
1647
&actual_type, &actual_format,
1648
&nitems, &bytes_after, ((unsigned char **)&prop));
1650
if (gdk_error_trap_pop ())
1652
g_set_error_literal (error,
1654
GNOME_RR_ERROR_UNKNOWN,
1655
"unhandled X error while getting the range of backlight values");
1659
if (retval != Success) {
1660
g_set_error_literal (error,
1662
GNOME_RR_ERROR_RANDR_ERROR,
1663
"could not get the range of backlight values");
1666
if (actual_type == XA_INTEGER &&
1668
actual_format == 32)
1670
memcpy (&now, prop, sizeof (guint));
1676
GNOME_RR_ERROR_RANDR_ERROR,
1677
"failed to get correct property type, got %lu,%i",
1678
nitems, actual_format);
1683
g_set_error_literal (error,
1685
GNOME_RR_ERROR_NO_RANDR_EXTENSION,
1686
"not compiled with RANDR support");
1687
#endif /* HAVE_RANDR */
1692
* gnome_rr_output_set_backlight:
1693
* @value: the absolute value which is min >= this <= max
1695
* Returns: %TRUE for success
1698
gnome_rr_output_set_backlight (GnomeRROutput *output, gint value, GError **error)
1700
gboolean ret = FALSE;
1704
g_return_val_if_fail (output != NULL, FALSE);
1706
/* check this is sane */
1707
if (value < output->backlight_min ||
1708
value > output->backlight_max)
1712
GNOME_RR_ERROR_BOUNDS_ERROR,
1713
"out of brightness range: %i, has to be %i -> %i",
1715
output->backlight_max, output->backlight_min);
1719
/* don't abort on error */
1720
gdk_error_trap_push ();
1721
atom = XInternAtom (DISPLAY (output), "BACKLIGHT", FALSE);
1722
XRRChangeOutputProperty (DISPLAY (output), output->id, atom,
1723
XA_INTEGER, 32, PropModeReplace,
1724
(unsigned char *) &value, 1);
1725
if (gdk_error_trap_pop ())
1727
g_set_error_literal (error,
1729
GNOME_RR_ERROR_UNKNOWN,
1730
"unhandled X error while setting the backlight values");
1734
/* we assume this succeeded as there's no return value */
1737
g_set_error_literal (error,
1739
GNOME_RR_ERROR_NO_RANDR_EXTENSION,
1740
"not compiled with RANDR support");
1741
#endif /* HAVE_RANDR */
1556
1747
* gnome_rr_screen_get_output_by_id:
1558
1749
* Returns: (transfer none): the output identified by @name