[niepce] import: importer is a shared_ptr<>
- From: Hubert Figuière <hub src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [niepce] import: importer is a shared_ptr<>
- Date: Tue, 16 May 2017 04:48:18 +0000 (UTC)
commit 5606de363f9462fa355db8bc2de9780c2960e2d1
Author: Hubert Figuière <hub figuiere net>
Date: Fri May 12 23:05:02 2017 -0400
import: importer is a shared_ptr<>
src/niepce/ui/dialogs/importdialog.cpp | 16 ++++++++--------
src/niepce/ui/dialogs/importdialog.hpp | 4 ++--
src/niepce/ui/niepcewindow.cpp | 4 ++--
3 files changed, 12 insertions(+), 12 deletions(-)
---
diff --git a/src/niepce/ui/dialogs/importdialog.cpp b/src/niepce/ui/dialogs/importdialog.cpp
index 90dc16d..e271065 100644
--- a/src/niepce/ui/dialogs/importdialog.cpp
+++ b/src/niepce/ui/dialogs/importdialog.cpp
@@ -59,7 +59,6 @@ ImportDialog::ImportDialog()
ImportDialog::~ImportDialog()
{
- delete m_importer;
}
void ImportDialog::setup_widget()
@@ -134,13 +133,14 @@ void ImportDialog::setToImport(const Glib::ustring & f)
{
if (!m_importer) {
// FIXME this should be the right kind
- m_importer = new eng::DirectoryImporter;
+ m_importer = std::make_shared<eng::DirectoryImporter>();
}
- auto source_content = std::async(std::launch::async,
- [f, this] () {
- return m_importer->listSourceContent(
- f);
- });
+ auto importer = m_importer;
+ auto source_content =
+ std::async(std::launch::async,
+ [f, importer] () {
+ return importer->listSourceContent(f);
+ });
m_folder_path_source = f;
m_destinationFolder->set_text(fwk::path_basename(f));
@@ -149,7 +149,7 @@ void ImportDialog::setToImport(const Glib::ustring & f)
m_images_list_model->clear();
// XXX this should be an event from the async result instead
- if(source_content.get()) {
+ if (source_content.get()) {
auto list_to_import = m_importer->getSourceContent();
for(const auto & _f : list_to_import) {
diff --git a/src/niepce/ui/dialogs/importdialog.hpp b/src/niepce/ui/dialogs/importdialog.hpp
index 6841938..f399c9e 100644
--- a/src/niepce/ui/dialogs/importdialog.hpp
+++ b/src/niepce/ui/dialogs/importdialog.hpp
@@ -77,14 +77,14 @@ public:
const Glib::ustring & sourcePath() const
{ return m_folder_path_source; }
void setToImport(const Glib::ustring & f);
- eng::IImporter* importer() const
+ const std::shared_ptr<eng::IImporter>& importer() const
{ return m_importer; }
private:
class ImportParam;
void doSelectDirectories();
- eng::IImporter *m_importer;
+ std::shared_ptr<eng::IImporter> m_importer; // as shared_ptr<> for lambda capture
Glib::ustring m_folder_path_source;
Gtk::ComboBox *m_date_tz_combo;
diff --git a/src/niepce/ui/niepcewindow.cpp b/src/niepce/ui/niepcewindow.cpp
index 1827413..24b2f42 100644
--- a/src/niepce/ui/niepcewindow.cpp
+++ b/src/niepce/ui/niepcewindow.cpp
@@ -263,8 +263,8 @@ void NiepceWindow::on_action_file_import()
if(!source.empty()) {
cfg.setValue("last_import_location", source);
- eng::IImporter* importer = import_dialog->importer();
- DBG_ASSERT(importer, "Import can't be null if we clicked import");
+ auto importer = import_dialog->importer();
+ DBG_ASSERT(!!importer, "Import can't be null if we clicked import");
if (importer) {
importer->doImport(
source,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]