From 6a254778e2bcfe7df0b40bf8a0db37159a706315 Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Sun, 4 Jan 2015 23:51:43 +0100 Subject: [PATCH] Linux/MacOSX: Add wait dialog to the benchmark computation. Correct handling of wait dialog call when changing password and creating volumes. --- src/Main/Forms/BenchmarkDialog.cpp | 45 +++++++++++++++---------- src/Main/Forms/BenchmarkDialog.h | 13 +++++++ src/Main/Forms/ChangePasswordDialog.cpp | 3 +- src/Main/Forms/VolumeCreationWizard.cpp | 3 +- 4 files changed, 42 insertions(+), 22 deletions(-) diff --git a/src/Main/Forms/BenchmarkDialog.cpp b/src/Main/Forms/BenchmarkDialog.cpp index 9d744ed8..faf85046 100644 --- a/src/Main/Forms/BenchmarkDialog.cpp +++ b/src/Main/Forms/BenchmarkDialog.cpp @@ -59,14 +59,36 @@ namespace VeraCrypt } void BenchmarkDialog::OnBenchmarkButtonClick (wxCommandEvent& event) + { + list results; + + wxBusyCursor busy; + Buffer buffer ((size_t) Gui->GetSelectedData (BufferSizeChoice)); + + BenchmarkThreadRoutine routine(this, results, buffer); + Gui->ExecuteWaitThreadRoutine (this, &routine); + + BenchmarkListCtrl->DeleteAllItems(); + + foreach (const BenchmarkResult &result, results) + { + vector fields (BenchmarkListCtrl->GetColumnCount()); + + fields[ColumnAlgorithm] = result.AlgorithmName; + fields[ColumnEncryption] = Gui->SpeedToString (result.EncryptionSpeed); + fields[ColumnDecryption] = Gui->SpeedToString (result.DecryptionSpeed); + fields[ColumnMean] = Gui->SpeedToString (result.MeanSpeed); + + Gui->AppendToListCtrl (BenchmarkListCtrl, fields); + } + + BenchmarkListCtrl->SetColumnWidth(0, wxLIST_AUTOSIZE); + } + + void BenchmarkDialog::DoBenchmark (list& results, Buffer& buffer) { try { - list results; - - wxBusyCursor busy; - Buffer buffer ((size_t) Gui->GetSelectedData (BufferSizeChoice)); - EncryptionAlgorithmList encryptionAlgorithms = EncryptionAlgorithm::GetAvailableAlgorithms(); foreach (shared_ptr ea, encryptionAlgorithms) { @@ -135,19 +157,6 @@ namespace VeraCrypt } } - BenchmarkListCtrl->DeleteAllItems(); - - foreach (const BenchmarkResult &result, results) - { - vector fields (BenchmarkListCtrl->GetColumnCount()); - - fields[ColumnAlgorithm] = result.AlgorithmName; - fields[ColumnEncryption] = Gui->SpeedToString (result.EncryptionSpeed); - fields[ColumnDecryption] = Gui->SpeedToString (result.DecryptionSpeed); - fields[ColumnMean] = Gui->SpeedToString (result.MeanSpeed); - - Gui->AppendToListCtrl (BenchmarkListCtrl, fields); - } } catch (exception &e) { diff --git a/src/Main/Forms/BenchmarkDialog.h b/src/Main/Forms/BenchmarkDialog.h index b127295f..a9b42a58 100644 --- a/src/Main/Forms/BenchmarkDialog.h +++ b/src/Main/Forms/BenchmarkDialog.h @@ -36,7 +36,20 @@ namespace VeraCrypt uint64 MeanSpeed; }; + void DoBenchmark (list& results, Buffer& buffer); void OnBenchmarkButtonClick (wxCommandEvent& event); + + class BenchmarkThreadRoutine : public WaitThreadRoutine + { + public: + BenchmarkDialog* m_pDlg; + list& m_results; + Buffer& m_buffer; + BenchmarkThreadRoutine(BenchmarkDialog* pDlg, list& results, Buffer& buffer) + : m_pDlg(pDlg), m_results(results), m_buffer(buffer) { } + virtual ~BenchmarkThreadRoutine() { } + virtual void ExecutionCode(void) { m_pDlg->DoBenchmark (m_results, m_buffer); } + }; }; } diff --git a/src/Main/Forms/ChangePasswordDialog.cpp b/src/Main/Forms/ChangePasswordDialog.cpp index 1bde4bee..1889e5cb 100644 --- a/src/Main/Forms/ChangePasswordDialog.cpp +++ b/src/Main/Forms/ChangePasswordDialog.cpp @@ -136,8 +136,7 @@ namespace VeraCrypt ChangePasswordThreadRoutine routine(Path, Gui->GetPreferences().DefaultMountOptions.PreserveTimestamps, CurrentPasswordPanel->GetPassword(), CurrentPasswordPanel->GetPkcs5Kdf(), CurrentPasswordPanel->GetTrueCryptMode(),CurrentPasswordPanel->GetKeyfiles(), newPassword, newKeyfiles, NewPasswordPanel->GetPkcs5Kdf(), NewPasswordPanel->GetHeaderWipeCount()); - WaitDialog dlg(this, LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &routine); - dlg.Run(); + Gui->ExecuteWaitThreadRoutine (this, &routine); } switch (DialogMode) diff --git a/src/Main/Forms/VolumeCreationWizard.cpp b/src/Main/Forms/VolumeCreationWizard.cpp index 99231a96..bff459a1 100644 --- a/src/Main/Forms/VolumeCreationWizard.cpp +++ b/src/Main/Forms/VolumeCreationWizard.cpp @@ -867,8 +867,7 @@ namespace VeraCrypt Creator.reset (new VolumeCreator); VolumeCreatorThreadRoutine routine(options, Creator); - WaitDialog dlg(this, LangString["IDT_STATIC_MODAL_WAIT_DLG_INFO"], &routine); - dlg.Run(); + Gui->ExecuteWaitThreadRoutine (this, &routine); page->SetKeyInfo (Creator->GetKeyInfo());