218
211
brightness = backlight->priv->master_percentage / 100.0f;
219
212
egg_debug ("1. main brightness %f", brightness);
222
on_battery = dkp_client_on_battery (backlight->priv->client);
214
/* get battery status */
215
g_object_get (backlight->priv->client,
216
"on-battery", &on_battery,
224
219
/* reduce if on battery power if we should */
225
220
battery_reduce = gconf_client_get_bool (backlight->priv->conf, GPM_CONF_BACKLIGHT_BATTERY_REDUCE, NULL);
255
250
egg_debug ("3. idle scale %f, brightness %f", scale, brightness);
257
/* reduce if ambient is low */
258
enable_action = gconf_client_get_bool (backlight->priv->conf, GPM_CONF_AMBIENT_ENABLE, NULL);
259
if (backlight->priv->can_sense && enable_action) {
260
value = gconf_client_get_int (backlight->priv->conf, GPM_CONF_AMBIENT_SCALE, NULL);
261
scale = backlight->priv->ambient_sensor_value * (value / 100.0f);
262
value = gconf_client_get_int (backlight->priv->conf, GPM_CONF_AMBIENT_FACTOR, NULL);
263
scale = gpm_common_sum_scale (brightness, scale, value / 100.0f);
275
egg_debug ("4. ambient scale %f, brightness %f", scale, brightness);
277
252
/* convert to percentage */
278
253
value = (guint) ((brightness * 100.0f) + 0.5);
312
287
if (value == NULL)
315
on_battery = dkp_client_on_battery (backlight->priv->client);
290
/* get battery status */
291
g_object_get (backlight->priv->client,
292
"on-battery", &on_battery,
317
295
if (!on_battery && strcmp (entry->key, GPM_CONF_BACKLIGHT_BRIGHTNESS_AC) == 0) {
318
296
backlight->priv->master_percentage = gconf_value_get_int (value);
322
300
gpm_backlight_brightness_evaluate_and_set (backlight, FALSE);
324
302
} else if (strcmp (entry->key, GPM_CONF_BACKLIGHT_IDLE_DIM_AC) == 0 ||
325
strcmp (entry->key, GPM_CONF_AMBIENT_ENABLE) == 0 ||
326
strcmp (entry->key, GPM_CONF_AMBIENT_FACTOR) == 0 ||
327
strcmp (entry->key, GPM_CONF_AMBIENT_SCALE) == 0 ||
328
303
strcmp (entry->key, GPM_CONF_BACKLIGHT_ENABLE) == 0 ||
329
304
strcmp (entry->key, GPM_CONF_TIMEOUT_SLEEP_DISPLAY_BATT) == 0 ||
330
305
strcmp (entry->key, GPM_CONF_BACKLIGHT_BATTERY_REDUCE) == 0 ||
518
493
gpm_backlight_brightness_evaluate_and_set (backlight, FALSE);
520
495
/* get the DPMS state we're supposed to use on the power state */
521
on_battery = dkp_client_on_battery (backlight->priv->client);
496
g_object_get (backlight->priv->client,
497
"on-battery", &on_battery,
523
500
dpms_method = gconf_client_get_string (backlight->priv->conf, GPM_CONF_BACKLIGHT_DPMS_METHOD_AC, NULL);
556
533
brightness_changed_cb (GpmBrightness *brightness, guint percentage, GpmBacklight *backlight)
558
/* display the widget when something else changed the backlight */
559
egg_debug ("Need to display backlight feedback value %i", percentage);
560
gpm_feedback_display_value (backlight->priv->feedback, (float) percentage / 100.0f);
562
535
/* save the new percentage */
563
536
backlight->priv->master_percentage = percentage;
571
* brightness_changed_cb:
572
* @brightness: The GpmBrightness class instance
573
* @percentage: The new percentage brightness
574
* @brightness: This class instance
576
* This callback is called when the brightness value changes.
579
sensor_changed_cb (GpmLightSensor *sensor, guint percentage, GpmBacklight *backlight)
581
egg_debug ("sensor changed! %i", percentage);
582
backlight->priv->ambient_sensor_value = percentage / 100.0f;
583
gpm_backlight_brightness_evaluate_and_set (backlight, FALSE);
587
544
* control_resume_cb:
588
545
* @control: The control class instance
589
546
* @power: This power class instance
620
577
g_object_unref (backlight->priv->dpms);
621
578
g_object_unref (backlight->priv->control);
622
g_object_unref (backlight->priv->light_sensor);
623
579
g_object_unref (backlight->priv->feedback);
624
580
g_object_unref (backlight->priv->conf);
625
581
g_object_unref (backlight->priv->client);
672
627
/* record our idle time */
673
628
backlight->priv->idle_timer = g_timer_new ();
675
/* this has a delay.. */
676
backlight->priv->light_sensor = gpm_light_sensor_new ();
677
g_signal_connect (backlight->priv->light_sensor, "sensor-changed",
678
G_CALLBACK (sensor_changed_cb), backlight);
680
630
/* watch for manual brightness changes (for the feedback widget) */
681
631
backlight->priv->brightness = gpm_brightness_new ();
682
632
g_signal_connect (backlight->priv->brightness, "brightness-changed",
683
633
G_CALLBACK (brightness_changed_cb), backlight);
635
/* we use dkp_client for the ac-adapter-changed signal */
636
backlight->priv->client = dkp_client_new ();
637
g_signal_connect (backlight->priv->client, "changed",
638
G_CALLBACK (gpm_backlight_client_changed_cb), backlight);
686
641
backlight->priv->can_dim = gpm_brightness_has_hw (backlight->priv->brightness);
687
backlight->priv->can_sense = gpm_light_sensor_has_hw (backlight->priv->light_sensor);
689
/* we use hal to see if we are a laptop */
690
hal_manager = hal_manager_new ();
691
backlight->priv->is_laptop = hal_manager_is_laptop (hal_manager);
692
g_object_unref (hal_manager);
643
/* we use DeviceKit-power to see if we should show the lid UI */
644
#if DKP_CHECK_VERSION(0x009)
645
g_object_get (backlight->priv->client,
646
"lid-is-present", &lid_is_present,
694
650
/* expose ui in prefs program */
695
651
prefs_server = gpm_prefs_server_new ();
696
if (backlight->priv->is_laptop)
697
653
gpm_prefs_server_set_capability (prefs_server, GPM_PREFS_SERVER_LID);
698
654
if (backlight->priv->can_dim)
699
655
gpm_prefs_server_set_capability (prefs_server, GPM_PREFS_SERVER_BACKLIGHT);
700
if (backlight->priv->can_sense)
701
gpm_prefs_server_set_capability (prefs_server, GPM_PREFS_SERVER_AMBIENT);
702
656
g_object_unref (prefs_server);
704
658
/* watch for dim value changes */
719
673
g_signal_connect (backlight->priv->button, "button-pressed",
720
674
G_CALLBACK (gpm_backlight_button_pressed_cb), backlight);
722
/* we use dkp_client for the ac-adapter-changed signal */
723
backlight->priv->client = dkp_client_new ();
724
g_signal_connect (backlight->priv->client, "changed",
725
G_CALLBACK (gpm_backlight_client_changed_cb), backlight);
727
676
/* watch for idle mode changes */
728
677
backlight->priv->idle = gpm_idle_new ();
729
678
g_signal_connect (backlight->priv->idle, "idle-changed",
748
697
G_CALLBACK (control_resume_cb), backlight);
750
699
/* sync at startup */
751
gpm_light_sensor_get_absolute (backlight->priv->light_sensor, &value);
752
backlight->priv->ambient_sensor_value = value / 100.0f;
753
700
gpm_backlight_brightness_evaluate_and_set (backlight, FALSE);