From 53ac99a26ad5e16406dd203445d578ded913f6a9 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 23 Mar 2015 18:31:55 +0100 Subject: rework check for old configuration files check early on (before announcement-check, bundle- env and ARDOUR_UI ctor have a chance to create the new config dir) --- libs/ardour/globals.cc | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'libs/ardour/globals.cc') diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index f097ce84f5..6e16d5480f 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -138,6 +138,8 @@ PBD::Signal1 ARDOUR::PluginScanTimeout; PBD::Signal0 ARDOUR::GUIIdle; PBD::Signal3 ARDOUR::CopyConfigurationFiles; +static bool have_old_configuration_files = false; + namespace ARDOUR { extern void setup_enum_writer (); } @@ -263,6 +265,11 @@ copy_configuration_files (string const & old_dir, string const & new_dir, int ol copy_file (old_name, new_name); + old_name = Glib::build_filename (old_dir, X_("sfdb")); + new_name = Glib::build_filename (new_dir, X_("sfdb")); + + copy_file (old_name, new_name); + /* can only copy ardour.rc - UI config is not compatible */ old_name = Glib::build_filename (old_dir, X_("ardour.rc")); @@ -314,31 +321,43 @@ copy_configuration_files (string const & old_dir, string const & new_dir, int ol return 0; } -int -ARDOUR::check_for_old_configuration_files (boost::function ui_handler) +void +ARDOUR::check_for_old_configuration_files () { int current_version = atoi (X_(PROGRAM_VERSION)); if (current_version <= 1) { - return 0; + return; } int old_version = current_version - 1; string old_config_dir = user_config_directory (old_version); /* pass in the current version explicitly to avoid creation */ - string current_config_dir = user_config_directory (current_version); + string current_config_dir = user_config_directory (current_version); if (!Glib::file_test (current_config_dir, Glib::FILE_TEST_IS_DIR)) { if (Glib::file_test (old_config_dir, Glib::FILE_TEST_IS_DIR)) { - - if (ui_handler (old_config_dir, current_config_dir, old_version)) { - copy_configuration_files (old_config_dir, current_config_dir, old_version); - return 1; - } + have_old_configuration_files = true; } } +} +int +ARDOUR::handle_old_configuration_files (boost::function ui_handler) +{ + if (have_old_configuration_files) { + int current_version = atoi (X_(PROGRAM_VERSION)); + assert (current_version > 1); // established in check_for_old_configuration_files () + int old_version = current_version - 1; + string old_config_dir = user_config_directory (old_version); + string current_config_dir = user_config_directory (current_version); + + if (ui_handler (old_config_dir, current_config_dir, old_version)) { + copy_configuration_files (old_config_dir, current_config_dir, old_version); + return 1; + } + } return 0; } -- cgit v1.2.3