Don't close config file when changing preferences

On Linux and MacOS the subsurface_close_conf() doesn't really close the
config file (it flushes writes on MacOS), but on Windows it does
actually close the registry hkey.

Which is bad, if you change the settings multiple times - we assume that
the config file is open the whole time.

So add a "subsurface_flush_conf()" function, and call *that* when
changing configuration parameters.  And call the close function only at
the very end.

Alternatively, maybe we should just open the config file separately
every time. I don't much care, maybe somebody else does.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Linus Torvalds 2012-05-02 10:03:48 -07:00
parent 2d1a316d84
commit 725e4582d9
7 changed files with 28 additions and 3 deletions

View file

@ -423,7 +423,9 @@ static void preferences_dialog(GtkWidget *w, gpointer data)
subsurface_set_conf("SAC", PREF_BOOL, BOOL_TO_PTR(visible_cols.sac));
subsurface_set_conf("OTU", PREF_BOOL, BOOL_TO_PTR(visible_cols.otu));
subsurface_set_conf("divelist_font", PREF_STRING, divelist_font);
subsurface_close_conf();
/* Flush the changes out to the system */
subsurface_flush_conf();
}
gtk_widget_destroy(dialog);
}
@ -769,6 +771,11 @@ void run_ui(void)
gtk_main();
}
void exit_ui(void)
{
subsurface_close_conf();
}
typedef struct {
cairo_rectangle_int_t rect;
const char *text;