diff --git a/src/app/app.cpp b/src/app/app.cpp index 55d72f2e1..014f8231b 100644 --- a/src/app/app.cpp +++ b/src/app/app.cpp @@ -163,6 +163,7 @@ void App::initialize(const AppOptions& options) m_coreModules = new CoreModules; m_modules = new Modules(options.verbose()); m_legacy = new LegacyModules(isGui() ? REQUIRE_INTERFACE: 0); + m_brushes.reset(new AppBrushes); if (options.hasExporterParams()) m_exporter.reset(new DocumentExporter); @@ -673,6 +674,9 @@ App::~App() // Finalize modules, configuration and core. Editor::destroyEditorSharedInternals(); + // Save brushes + m_brushes.reset(nullptr); + delete m_legacy; delete m_modules; delete m_coreModules; diff --git a/src/app/app.h b/src/app/app.h index ba1ae1c65..14f3f6ed5 100644 --- a/src/app/app.h +++ b/src/app/app.h @@ -70,7 +70,11 @@ namespace app { RecentFiles* getRecentFiles() const; MainWindow* getMainWindow() const { return m_mainWindow; } Preferences& preferences() const; - AppBrushes& brushes() { return m_brushes; } + + AppBrushes& brushes() { + ASSERT(m_brushes.get()); + return *m_brushes; + } void showNotification(INotificationDelegate* del); void updateDisplayTitleBar(); @@ -97,7 +101,7 @@ namespace app { base::UniquePtr m_mainWindow; FileList m_files; base::UniquePtr m_exporter; - AppBrushes m_brushes; + base::UniquePtr m_brushes; }; void app_refresh_screen(); diff --git a/src/app/app_brushes.cpp b/src/app/app_brushes.cpp index 32efd115d..7fea3e452 100644 --- a/src/app/app_brushes.cpp +++ b/src/app/app_brushes.cpp @@ -16,6 +16,7 @@ #include "app/xml_exception.h" #include "base/base64.h" #include "base/convert_to.h" +#include "base/fs.h" #include "base/path.h" #include "base/serialization.h" #include "doc/brush.h" @@ -168,7 +169,14 @@ AppBrushes::AppBrushes() m_standard.push_back(BrushRef(new Brush(kSquareBrushType, 7, 0))); m_standard.push_back(BrushRef(new Brush(kLineBrushType, 7, 44))); - load(userBrushesFilename()); + try { + std::string fn = userBrushesFilename(); + if (base::is_file(fn)) + load(fn); + } + catch (const std::exception& ex) { + LOG("Error loading user brushes: %s", ex.what()); + } } AppBrushes::~AppBrushes()