Fix assertion failure on consecutive pictures

Fixes #23
This commit is contained in:
Benjamin Schaaf 2021-11-10 23:15:00 +11:00
parent 16e9bff190
commit c78b2d66ca
1 changed files with 16 additions and 6 deletions

View File

@ -52,6 +52,8 @@ static int exposure;
static bool has_auto_focus_continuous;
static bool has_auto_focus_start;
static bool setting_save_dng;
static MPProcessPipelineBuffer *current_preview_buffer = NULL;
static int preview_buffer_width = -1;
static int preview_buffer_height = -1;
@ -71,7 +73,6 @@ GtkWidget *process_spinner;
GtkWidget *scanned_codes;
GtkWidget *preview_top_box;
GtkWidget *preview_bottom_box;
GtkWidget *setting_dng;
GSettings *settings;
@ -105,7 +106,7 @@ update_io_pipeline()
.gain = gain,
.exposure_is_manual = exposure_is_manual,
.exposure = exposure,
.save_dng = gtk_check_button_get_active(GTK_CHECK_BUTTON(setting_dng)),
.save_dng = setting_save_dng,
};
mp_io_pipeline_update_state(&io_state);
}
@ -457,7 +458,6 @@ run_capture_action(GSimpleAction *action, GVariant *param, gpointer user_data)
{
gtk_spinner_start(GTK_SPINNER(process_spinner));
gtk_stack_set_visible_child(GTK_STACK(open_last_stack), process_spinner);
update_io_pipeline();
mp_io_pipeline_capture();
}
@ -635,6 +635,15 @@ static void
run_close_settings_action(GSimpleAction *action, GVariant *param, gpointer user_data)
{
gtk_stack_set_visible_child_name(GTK_STACK(main_stack), "main");
// Update settings
bool save_dng = g_settings_get_boolean(settings, "save-raw");
if (save_dng != setting_save_dng)
{
setting_save_dng = save_dng;
update_io_pipeline();
}
}
static void
@ -883,6 +892,7 @@ activate(GtkApplication *app, gpointer data)
GtkWidget *window = GTK_WIDGET(gtk_builder_get_object(builder, "window"));
GtkWidget *iso_button = GTK_WIDGET(gtk_builder_get_object(builder, "iso-controls-button"));
GtkWidget *shutter_button = GTK_WIDGET(gtk_builder_get_object(builder, "shutter-controls-button"));
GtkWidget *setting_dng_button = GTK_WIDGET(gtk_builder_get_object(builder, "setting-raw"));
preview = GTK_WIDGET(gtk_builder_get_object(builder, "preview"));
main_stack = GTK_WIDGET(gtk_builder_get_object(builder, "main_stack"));
open_last_stack = GTK_WIDGET(gtk_builder_get_object(builder, "open_last_stack"));
@ -892,8 +902,6 @@ activate(GtkApplication *app, gpointer data)
preview_top_box = GTK_WIDGET(gtk_builder_get_object(builder, "top-box"));
preview_bottom_box = GTK_WIDGET(gtk_builder_get_object(builder, "bottom-box"));
setting_dng = GTK_WIDGET(gtk_builder_get_object(builder, "setting-raw"));
g_signal_connect(window, "realize", G_CALLBACK(on_realize), NULL);
g_signal_connect(preview, "realize", G_CALLBACK(preview_realize), NULL);
@ -925,7 +933,9 @@ activate(GtkApplication *app, gpointer data)
// Setup settings
settings = g_settings_new("org.postmarketos.Megapixels");
g_settings_bind (settings, "save-raw", setting_dng, "active", G_SETTINGS_BIND_DEFAULT);
g_settings_bind (settings, "save-raw", setting_dng_button, "active", G_SETTINGS_BIND_DEFAULT);
setting_save_dng = g_settings_get_boolean(settings, "save-raw");
// Listen for phosh rotation
GDBusConnection *conn = g_application_get_dbus_connection(G_APPLICATION(app));