@@ -3875,8 +3875,11 @@ iio_proxy_changed (CsdPowerManager *manager)
38753875 gdouble current_brightness ;
38763876
38773877 current_brightness = (gdouble ) backlight_get_percentage (manager , NULL );
3878- if (current_brightness < 0.0 )
3878+ if (current_brightness < 0.0 ) {
3879+ g_warning ("Could not read current backlight level for ambient baseline, "
3880+ "defaulting to 50%%" );
38793881 current_brightness = 50.0 ;
3882+ }
38803883
38813884 g_debug ("First sensor reading %f, adopting current brightness %.1f%% as baseline" ,
38823885 sensor_value , current_brightness );
@@ -4059,6 +4062,8 @@ iio_proxy_appeared_cb (GDBusConnection *connection,
40594062 gpointer user_data )
40604063{
40614064 CsdPowerManager * manager = CSD_POWER_MANAGER (user_data );
4065+ GError * error = NULL ;
4066+
40624067 manager -> priv -> iio_proxy =
40634068 g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM ,
40644069 0 ,
@@ -4067,7 +4072,14 @@ iio_proxy_appeared_cb (GDBusConnection *connection,
40674072 "/net/hadess/SensorProxy" ,
40684073 "net.hadess.SensorProxy" ,
40694074 NULL ,
4070- NULL );
4075+ & error );
4076+ if (manager -> priv -> iio_proxy == NULL ) {
4077+ g_warning ("Failed to create iio-sensor-proxy D-Bus proxy: %s" ,
4078+ error -> message );
4079+ g_error_free (error );
4080+ return ;
4081+ }
4082+
40714083 iio_proxy_update_ambient_light_supported (manager );
40724084 iio_proxy_maybe_claim_light (manager );
40734085}
@@ -4078,6 +4090,13 @@ iio_proxy_vanished_cb (GDBusConnection *connection,
40784090 gpointer user_data )
40794091{
40804092 CsdPowerManager * manager = CSD_POWER_MANAGER (user_data );
4093+
4094+ ambient_cancel_timers (manager );
4095+ manager -> priv -> ambient_state = AMBIENT_STATE_IDLE ;
4096+ manager -> priv -> ambient_baseline_sensor = -1.0 ;
4097+ manager -> priv -> ambient_brightness_baseline = -1.0 ;
4098+ manager -> priv -> light_claimed = FALSE;
4099+
40814100 g_clear_object (& manager -> priv -> iio_proxy );
40824101 iio_proxy_update_ambient_light_supported (manager );
40834102}
@@ -4649,15 +4668,15 @@ csd_power_manager_stop (CsdPowerManager *manager)
46494668{
46504669 g_debug ("Stopping power manager" );
46514670
4671+ iio_proxy_claim_light (manager , FALSE);
4672+
46524673 if (manager -> priv -> bus_cancellable != NULL ) {
46534674 g_cancellable_cancel (manager -> priv -> bus_cancellable );
46544675 g_object_unref (manager -> priv -> bus_cancellable );
46554676 manager -> priv -> bus_cancellable = NULL ;
46564677 }
46574678
46584679 kill_lid_close_safety_timer (manager );
4659-
4660- iio_proxy_claim_light (manager , FALSE);
46614680 ambient_cancel_timers (manager );
46624681 if (manager -> priv -> iio_proxy_watch_id != 0 )
46634682 g_bus_unwatch_name (manager -> priv -> iio_proxy_watch_id );
0 commit comments