Browse Source

Read slider value when changing from auto to manual

The user might have moved the slider while in Auto. When exiting Auto
mode the value and the slider will be desynced. This change syncs the
value with the slider position when entering Manual mode.
Michal Ciesielski 4 years ago
parent
commit
29ad14c78b
1 changed files with 20 additions and 0 deletions
  1. 20 0
      main.c

+ 20 - 0
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();
 	}