From 8e5860a05b219d2b902cbeb6c3c53c9ea13212e3 Mon Sep 17 00:00:00 2001 From: Robert Eckelmann Date: Mon, 10 Nov 2025 21:49:03 +0900 Subject: [PATCH 1/2] torch-manager: Add minimum brightness We get it from udev when available and fall back to 5% of maximum brightness otherwise. The udev rule to provide minimum brightness overrides via hwdb is shipped in gmobile. Signed-off-by: Robert Eckelmann Part-of: --- src/torch-manager.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/torch-manager.c b/src/torch-manager.c index a8773db5e..e2131c735 100644 --- a/src/torch-manager.c +++ b/src/torch-manager.c @@ -52,6 +52,7 @@ struct _PhoshTorchManager { const char *icon_name; gboolean can_scale; int brightness; + int min_brightness; int max_brightness; int last_brightness; @@ -189,12 +190,19 @@ find_torch_device (PhoshTorchManager *self, PhoshUdevManager *udev_manager) return FALSE; } + self->min_brightness = g_udev_device_get_property_as_int (self->udev_device, + "GM_TORCH_MIN_BRIGHTNESS"); self->max_brightness = g_udev_device_get_sysfs_attr_as_int (self->udev_device, "max_brightness"); - g_debug ("Found torch device '%s' with max brightness %d", - g_udev_device_get_name (self->udev_device), self->max_brightness); - self->can_scale = self->max_brightness > 1; + /* setting min_brightness to 5% to have a proper lower limit */ + if (!self->min_brightness) + self->min_brightness = MAX (self->max_brightness * 0.05, 1); + + g_debug ("Found torch device '%s' with min brightness %d and max brightness %d", + g_udev_device_get_name (self->udev_device),self->min_brightness,self->max_brightness); + + self->can_scale = self->min_brightness < self->max_brightness && self->max_brightness > 1; g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CAN_SCALE]); return TRUE; @@ -367,14 +375,15 @@ phosh_torch_manager_get_brightness (PhoshTorchManager *self) * phosh_torch_manager_get_scaled_brightness: * @self: The #PhoshTorchManager * - * Gets the current brightness as fraction between 0 (off) and 1 (maximum brightness) + * Gets the current brightness as fraction between 0 (minimum_brightness) and 1 (maximum brightness) */ double phosh_torch_manager_get_scaled_brightness (PhoshTorchManager *self) { g_return_val_if_fail (PHOSH_IS_TORCH_MANAGER (self), 0); - return (double)self->brightness / (double)self->max_brightness; + return (double)(self->brightness - self->min_brightness) / + ((double)self->max_brightness - (double)self->min_brightness); } /** @@ -382,7 +391,7 @@ phosh_torch_manager_get_scaled_brightness (PhoshTorchManager *self) * @self: The #PhoshTorchManager * @frac: The brightness as fraction * - * Sets the current brightness as fraction between 0 (off) and 1 (maximum brightness) + * Sets the current brightness as fraction between 0 (minimum_brightness) and 1 (maximum brightness) */ void phosh_torch_manager_set_scaled_brightness (PhoshTorchManager *self, double frac) @@ -392,7 +401,7 @@ phosh_torch_manager_set_scaled_brightness (PhoshTorchManager *self, double frac) g_return_if_fail (PHOSH_IS_TORCH_MANAGER (self)); g_return_if_fail (frac >= 0.0 && frac <= 1.0); - brightness = round (frac * self->max_brightness); + brightness = round (self->min_brightness + frac * (self->max_brightness - self->min_brightness)); if (brightness > self->max_brightness) brightness = self->max_brightness; -- GitLab From cf321c0c3f2bdaf7b93ed0ef99749d5c619fba08 Mon Sep 17 00:00:00 2001 From: Robert Eckelmann Date: Mon, 10 Nov 2025 21:49:03 +0900 Subject: [PATCH 2/2] settings: Drop minimum brightness This is now handeld by torch manager Signed-off-by: Robert Eckelmann Part-of: --- src/settings.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/settings.c b/src/settings.c index e4270c96d..7c856fd6a 100644 --- a/src/settings.c +++ b/src/settings.c @@ -335,7 +335,7 @@ setup_torch (PhoshSettings *self) g_object_bind_property (self->torch_manager, "enabled", self->revealer, "reveal-child", G_BINDING_SYNC_CREATE); - gtk_range_set_range (GTK_RANGE (self->scale_torch), 40, 100); + gtk_range_set_range (GTK_RANGE (self->scale_torch), 0, 100); gtk_range_set_value (GTK_RANGE (self->scale_torch), phosh_torch_manager_get_scaled_brightness (self->torch_manager) * 100.0); g_signal_connect_object (self->torch_manager, -- GitLab