From ca46028cdebdd379528245c6551f3ca83a1b9c55 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Fri, 26 Jun 2020 18:35:09 +0200 Subject: DiscIO: Use std::function for compression callback --- Source/Core/DolphinQt/ConvertDialog.cpp | 36 +++++++++++++-------------------- 1 file changed, 14 insertions(+), 22 deletions(-) (limited to 'Source/Core/DolphinQt/ConvertDialog.cpp') 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(ptr); - - progress_dialog->SetValue(percent * 100); - return !progress_dialog->WasCanceled(); -} - ConvertDialog::ConvertDialog(QList> 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 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; }); -- cgit v1.2.3