summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/ConvertDialog.cpp
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2020-09-23 12:27:43 -0400
committerGitHub <noreply@github.com>2020-09-23 12:27:43 -0400
commit54e570a95f2cb54fdc7be29d04870746c69a8b9e (patch)
tree1db68bbdaa591d6cd8025493478fa5d0dadf7980 /Source/Core/DolphinQt/ConvertDialog.cpp
parentf33767f19cca6ee95af9727f0050f27e2571f770 (diff)
parent5ba083215852a7f1afa2ac73316c2c0c500a6e7d (diff)
Merge pull request #8902 from JosJuice/android-convert
Android: Add disc image conversion
Diffstat (limited to 'Source/Core/DolphinQt/ConvertDialog.cpp')
-rw-r--r--Source/Core/DolphinQt/ConvertDialog.cpp36
1 files changed, 14 insertions, 22 deletions
diff --git a/Source/Core/DolphinQt/ConvertDialog.cpp b/Source/Core/DolphinQt/ConvertDialog.cpp
index 5a41ccea36..a14e728c40 100644
--- a/Source/Core/DolphinQt/ConvertDialog.cpp
+++ b/Source/Core/DolphinQt/ConvertDialog.cpp
@@ -32,17 +32,6 @@
#include "UICommon/GameFile.h"
#include "UICommon/UICommon.h"
-static bool CompressCB(const std::string& text, float percent, void* ptr)
-{
- if (ptr == nullptr)
- return false;
-
- auto* progress_dialog = static_cast<ParallelProgressDialog*>(ptr);
-
- progress_dialog->SetValue(percent * 100);
- return !progress_dialog->WasCanceled();
-}
-
ConvertDialog::ConvertDialog(QList<std::shared_ptr<const UICommon::GameFile>> files,
QWidget* parent)
: QDialog(parent), m_files(std::move(files))
@@ -463,15 +452,19 @@ void ConvertDialog::Convert()
}
else
{
+ const auto callback = [&progress_dialog](const std::string& text, float percent) {
+ progress_dialog.SetValue(percent * 100);
+ return !progress_dialog.WasCanceled();
+ };
+
std::future<bool> success;
switch (format)
{
case DiscIO::BlobType::PLAIN:
success = std::async(std::launch::async, [&] {
- const bool good =
- DiscIO::ConvertToPlain(blob_reader.get(), original_path, dst_path.toStdString(),
- &CompressCB, &progress_dialog);
+ const bool good = DiscIO::ConvertToPlain(blob_reader.get(), original_path,
+ dst_path.toStdString(), callback);
progress_dialog.Reset();
return good;
});
@@ -479,10 +472,9 @@ void ConvertDialog::Convert()
case DiscIO::BlobType::GCZ:
success = std::async(std::launch::async, [&] {
- const bool good =
- DiscIO::ConvertToGCZ(blob_reader.get(), original_path, dst_path.toStdString(),
- file->GetPlatform() == DiscIO::Platform::WiiDisc ? 1 : 0,
- block_size, &CompressCB, &progress_dialog);
+ const bool good = DiscIO::ConvertToGCZ(
+ blob_reader.get(), original_path, dst_path.toStdString(),
+ file->GetPlatform() == DiscIO::Platform::WiiDisc ? 1 : 0, block_size, callback);
progress_dialog.Reset();
return good;
});
@@ -491,10 +483,10 @@ void ConvertDialog::Convert()
case DiscIO::BlobType::WIA:
case DiscIO::BlobType::RVZ:
success = std::async(std::launch::async, [&] {
- const bool good = DiscIO::ConvertToWIAOrRVZ(
- blob_reader.get(), original_path, dst_path.toStdString(),
- format == DiscIO::BlobType::RVZ, compression, compression_level, block_size,
- &CompressCB, &progress_dialog);
+ const bool good =
+ DiscIO::ConvertToWIAOrRVZ(blob_reader.get(), original_path, dst_path.toStdString(),
+ format == DiscIO::BlobType::RVZ, compression,
+ compression_level, block_size, callback);
progress_dialog.Reset();
return good;
});