From 82e027806979ef01a58d99a836ed20e672019bd9 Mon Sep 17 00:00:00 2001
From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
Date: Mon, 29 Jan 2018 15:15:30 -0500
Subject: [PATCH] datatransfer: fix created signal fire

Trigger "created" signal of data transfer after
the id is registred, not before.
This fix getTransfer() called in the created emit call scope.

Change-Id: I0d02a3902c56fd60fced60d90248c6ac5e13ae41
Reviewed-by: Olivier Soldano <olivier.soldano@savoirfairelinux.com>
---
 src/data_transfer.cpp | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/data_transfer.cpp b/src/data_transfer.cpp
index 7e1b9d530b..61289b77d9 100644
--- a/src/data_transfer.cpp
+++ b/src/data_transfer.cpp
@@ -139,8 +139,6 @@ FileTransfer::FileTransfer(DRing::DataTransferId tid, const DRing::DataTransferI
     input_.seekg(0, std::ios_base::end);
     info_.totalSize = input_.tellg();
     input_.seekg(0, std::ios_base::beg);
-
-    emit(DRing::DataTransferEventCode::created);
 }
 
 bool
@@ -236,8 +234,6 @@ IncomingFileTransfer::IncomingFileTransfer(DRing::DataTransferId tid,
 
     info_ = info;
     info_.isOutgoing = false;
-
-    emit(DRing::DataTransferEventCode::created);
 }
 
 std::streamsize
@@ -355,8 +351,11 @@ DataTransferFacade::Impl::createFileTransfer(const DRing::DataTransferInfo& info
 {
     auto tid = generateUID();
     auto transfer = std::make_shared<FileTransfer>(tid, info);
-    std::lock_guard<std::mutex> lk {mapMutex_};
-    map_.emplace(tid, transfer);
+    {
+        std::lock_guard<std::mutex> lk {mapMutex_};
+        map_.emplace(tid, transfer);
+    }
+    transfer->emit(DRing::DataTransferEventCode::created);
     return transfer;
 }
 
@@ -365,8 +364,11 @@ DataTransferFacade::Impl::createIncomingFileTransfer(const DRing::DataTransferIn
 {
     auto tid = generateUID();
     auto transfer = std::make_shared<IncomingFileTransfer>(tid, info);
-    std::lock_guard<std::mutex> lk {mapMutex_};
-    map_.emplace(tid, transfer);
+    {
+        std::lock_guard<std::mutex> lk {mapMutex_};
+        map_.emplace(tid, transfer);
+    }
+    transfer->emit(DRing::DataTransferEventCode::created);
     return transfer;
 }
 
-- 
GitLab