changeset 1577:69d624271cf8

Persist config on exit if config has changed
author Michael Pavone <pavone@retrodev.com>
date Tue, 01 May 2018 19:11:37 -0700
parents 2b132d894d76
children aaa28c9bf67d
files nuklear_ui/blastem_nuklear.c
diffstat 1 files changed, 14 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/nuklear_ui/blastem_nuklear.c	Tue May 01 09:44:44 2018 -0700
+++ b/nuklear_ui/blastem_nuklear.c	Tue May 01 19:11:37 2018 -0700
@@ -799,15 +799,19 @@
 	}
 	uint32_t width = render_width();
 	uint32_t height = render_height();
+	uint32_t desired_width = context->style.font->height * 10;
+	if (desired_width > width) {
+		desired_width = width;
+	}
 	if (nk_begin(context, "Video Settings", nk_rect(0, 0, width, height), 0)) {
-		nk_layout_row_static(context, 30, width > 300 ? 300 : width, 2);
+		nk_layout_row_static(context, context->style.font->height, desired_width, 2);
 		settings_toggle(context, "Fullscreen", "video\0fullscreen\0", 0);
 		settings_toggle(context, "Open GL", "video\0gl\0", 1);
 		settings_toggle(context, "Scanlines", "video\0scanlines\0", 0);
 		selected_vsync = settings_dropdown_ex(context, "VSync", vsync_opts, vsync_opt_names, num_vsync_opts, selected_vsync, "video\0vsync\0");
 		settings_int_input(context, "Windowed Width", "video\0width\0", "640");
 		nk_label(context, "Shader", NK_TEXT_LEFT);
-		uint32_t next_selected = nk_combo(context, (const char **)prog_names, num_progs, selected_prog, 30, nk_vec2(300, 300));
+		uint32_t next_selected = nk_combo(context, (const char **)prog_names, num_progs, selected_prog, context->style.font->height, nk_vec2(desired_width, desired_width));
 		if (next_selected != selected_prog) {
 			selected_prog = next_selected;
 			config_dirty = 1;
@@ -1110,6 +1114,13 @@
 	return strcmp(style, "rom") != 0;
 }
 
+static void persist_config_exit(void)
+{
+	if (config_dirty) {
+		persist_config(config);
+	}
+}
+
 void blastem_nuklear_init(uint8_t file_loaded)
 {
 	context = nk_sdl_init(render_get_window());
@@ -1127,7 +1138,7 @@
 	render_set_event_handler(handle_event);
 	render_set_gl_context_handlers(context_destroyed, context_created);
 	
-
+	atexit(persist_config_exit);
 	
 	active = 1;
 	ui_idle_loop();