@@ -41,8 +41,11 @@ void WalletQmlController::setSelectedWallet(QString path)
41
41
if (wallet.has_value ()) {
42
42
auto wallet_model = new WalletQmlModel (std::move (wallet.value ()));
43
43
wallet_model->moveToThread (this ->thread ());
44
- m_selected_wallet = wallet_model;
45
- m_wallets.push_back (m_selected_wallet);
44
+ {
45
+ QMutexLocker locker (&m_wallets_mutex);
46
+ m_selected_wallet = wallet_model;
47
+ m_wallets.push_back (m_selected_wallet);
48
+ }
46
49
Q_EMIT selectedWalletChanged ();
47
50
}
48
51
});
@@ -56,6 +59,7 @@ WalletQmlModel* WalletQmlController::selectedWallet() const
56
59
void WalletQmlController::unloadWallets ()
57
60
{
58
61
m_handler_load_wallet->disconnect ();
62
+ QMutexLocker locker (&m_wallets_mutex);
59
63
for (WalletQmlModel* wallet : m_wallets) {
60
64
delete wallet;
61
65
}
@@ -64,17 +68,20 @@ void WalletQmlController::unloadWallets()
64
68
65
69
void WalletQmlController::handleLoadWallet (std::unique_ptr<interfaces::Wallet> wallet)
66
70
{
67
- if (!m_wallets.empty ()) {
68
- QString name = QString::fromStdString (wallet->getWalletName ());
69
- for (WalletQmlModel* wallet_model : m_wallets) {
70
- if (wallet_model->name () == name) {
71
- return ;
71
+ {
72
+ QMutexLocker locker (&m_wallets_mutex);
73
+ if (!m_wallets.empty ()) {
74
+ QString name = QString::fromStdString (wallet->getWalletName ());
75
+ for (WalletQmlModel* wallet_model : m_wallets) {
76
+ if (wallet_model->name () == name) {
77
+ return ;
78
+ }
72
79
}
73
80
}
74
- }
75
81
76
- m_selected_wallet = new WalletQmlModel (std::move (wallet));
77
- m_wallets.push_back (m_selected_wallet);
82
+ m_selected_wallet = new WalletQmlModel (std::move (wallet));
83
+ m_wallets.push_back (m_selected_wallet);
84
+ }
78
85
Q_EMIT selectedWalletChanged ();
79
86
}
80
87
0 commit comments