Merge pull request #10999 from Morph1984/fix-install-progress
main: Fix install progress calculation
This commit is contained in:
		@@ -178,6 +178,8 @@ constexpr int default_mouse_hide_timeout = 2500;
 | 
			
		||||
constexpr int default_mouse_center_timeout = 10;
 | 
			
		||||
constexpr int default_input_update_timeout = 1;
 | 
			
		||||
 | 
			
		||||
constexpr size_t CopyBufferSize = 1_MiB;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * "Callouts" are one-time instructional messages shown to the user. In the config settings, there
 | 
			
		||||
 * is a bitfield "callout_flags" options, used to track if a message has already been shown to the
 | 
			
		||||
@@ -2929,10 +2931,10 @@ void GMainWindow::OnMenuInstallToNAND() {
 | 
			
		||||
 | 
			
		||||
    int remaining = filenames.size();
 | 
			
		||||
 | 
			
		||||
    // This would only overflow above 2^43 bytes (8.796 TB)
 | 
			
		||||
    // This would only overflow above 2^51 bytes (2.252 PB)
 | 
			
		||||
    int total_size = 0;
 | 
			
		||||
    for (const QString& file : files) {
 | 
			
		||||
        total_size += static_cast<int>(QFile(file).size() / 0x1000);
 | 
			
		||||
        total_size += static_cast<int>(QFile(file).size() / CopyBufferSize);
 | 
			
		||||
    }
 | 
			
		||||
    if (total_size < 0) {
 | 
			
		||||
        LOG_CRITICAL(Frontend, "Attempting to install too many files, aborting.");
 | 
			
		||||
@@ -3032,7 +3034,7 @@ InstallResult GMainWindow::InstallNSPXCI(const QString& filename) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        std::vector<u8> buffer(1_MiB);
 | 
			
		||||
        std::vector<u8> buffer(CopyBufferSize);
 | 
			
		||||
 | 
			
		||||
        for (std::size_t i = 0; i < src->GetSize(); i += buffer.size()) {
 | 
			
		||||
            if (install_progress->wasCanceled()) {
 | 
			
		||||
@@ -3088,7 +3090,7 @@ InstallResult GMainWindow::InstallNCA(const QString& filename) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        std::array<u8, 0x1000> buffer{};
 | 
			
		||||
        std::vector<u8> buffer(CopyBufferSize);
 | 
			
		||||
 | 
			
		||||
        for (std::size_t i = 0; i < src->GetSize(); i += buffer.size()) {
 | 
			
		||||
            if (install_progress->wasCanceled()) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user