浏览代码

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 年之前
父节点
当前提交
29ad14c78b
共有 1 个文件被更改,包括 20 次插入0 次删除
  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();
 	}