From f9ce27fd6538cc90be0f6908cb321d546d335d20 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 11 Mar 2015 12:12:50 -0500 Subject: global ARDOUR signal to ask GUI to copy configuration files across versions --- libs/ardour/ardour/ardour.h | 1 + libs/ardour/ardour/filesystem_paths.h | 2 +- libs/ardour/globals.cc | 20 ++++++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/libs/ardour/ardour/ardour.h b/libs/ardour/ardour/ardour.h index 29cfa4b354..486d5def7d 100644 --- a/libs/ardour/ardour/ardour.h +++ b/libs/ardour/ardour/ardour.h @@ -51,6 +51,7 @@ namespace ARDOUR { extern LIBARDOUR_API PBD::Signal3 PluginScanMessage; extern LIBARDOUR_API PBD::Signal1 PluginScanTimeout; extern LIBARDOUR_API PBD::Signal0 GUIIdle; + extern LIBARDOUR_API PBD::Signal2 CopyConfigurationFiles; /** * @param with_vst true to enable VST Support diff --git a/libs/ardour/ardour/filesystem_paths.h b/libs/ardour/ardour/filesystem_paths.h index 82b84f5424..feca4ccb37 100644 --- a/libs/ardour/ardour/filesystem_paths.h +++ b/libs/ardour/ardour/filesystem_paths.h @@ -32,7 +32,7 @@ namespace ARDOUR { * If @param version is negative, the build-time string PROGRAM_VERSION * will be used to determine the version number. * - * @post user_config_directory() exists + * @post user_config_directory() exists IF version was negative. * * */ diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index 5f98a130b1..6370947652 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -131,6 +131,7 @@ PBD::Signal1 ARDOUR::BootMessage; PBD::Signal3 ARDOUR::PluginScanMessage; PBD::Signal1 ARDOUR::PluginScanTimeout; PBD::Signal0 ARDOUR::GUIIdle; +PBD::Signal2 ARDOUR::CopyConfigurationFiles; namespace ARDOUR { extern void setup_enum_writer (); @@ -238,6 +239,23 @@ lotsa_files_please () #endif } +static void +maybe_copy_old_configuration_files () +{ + int version = atoi (X_(PROGRAM_VERSION)); + + if (version <= 1) { + return; + } + + string old_config_dir = user_config_directory (version-1); + string current_config_dir = user_config_directory (); + + if (Glib::file_test (old_config_dir, Glib::FILE_TEST_IS_DIR)) { + CopyConfigurationFiles (old_config_dir, current_config_dir); /* EMIT SIGNAL */ + } +} + bool ARDOUR::init (bool use_windows_vst, bool try_optimization, const char* localedir) { @@ -284,6 +302,8 @@ ARDOUR::init (bool use_windows_vst, bool try_optimization, const char* localedir // allow ardour the absolute maximum number of open files lotsa_files_please (); + maybe_copy_old_configuration_files (); + #ifdef HAVE_LRDF lrdf_init(); #endif -- cgit v1.2.3