diff --git a/main.c b/main.c index 4e8ff00..675f565 100644 --- a/main.c +++ b/main.c @@ -454,6 +454,26 @@ on_control_auto_toggled(GtkToggleButton *widget, gpointer user_data) } if (has_changed) { + // The slider might have been moved while Auto mode is active. When entering + // Manual mode, first read the slider value to sync with those changes. + double value = gtk_adjustment_get_value(control_slider); + switch (current_control) { + case USER_CONTROL_ISO: + if (value != gain) { + gain = (int)value; + } + break; + case USER_CONTROL_SHUTTER: { + // So far all sensors use exposure time in number of sensor rows + int new_exposure = + (int)(value / 360.0 * camera->capture_mode.height); + if (new_exposure != exposure) { + exposure = new_exposure; + } + break; + } + } + update_io_pipeline(); draw_controls(); }