Skip to content

Commit

Permalink
Improve progress bar handling for backup / restore / image flash
Browse files Browse the repository at this point in the history
The progress bar will now be updated during image backups, restores
and during image flashing (except for sparse images which will require
significant changes to libsparse, and except for mtd nand using
flash_utils).

The progress bar will now be updated mid-file for file systems (tar) so
the user will see changes even during large file backup / restore.

Add a new progress tracking class to simplify handling of progress bar
updates. The class will only update the progress bar 5 times a second to
reduce the CPU load from updating the GUI frequently which does affect
backup times.

Change-Id: Iff382faef3df1f86604af336c1a8ce8993cd12c5
  • Loading branch information
Dees-Troy committed Mar 31, 2016
1 parent fe91611 commit 472f506
Show file tree
Hide file tree
Showing 19 changed files with 507 additions and 238 deletions.
1 change: 1 addition & 0 deletions Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ LOCAL_SRC_FILES += \
data.cpp \
partition.cpp \
partitionmanager.cpp \
progresstracking.cpp \
twinstall.cpp \
twrp-functions.cpp \
openrecoveryscript.cpp \
Expand Down
7 changes: 6 additions & 1 deletion gui/twmsg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,16 @@ class ResourceLookup : public StringLookup
resname = name.substr(0, pos);
default_value = name.substr(pos + 1);
}
#ifndef BUILD_TWRPTAR_MAIN
const ResourceManager* res = PageManager::GetResources();
if (res) {
if (default_value.empty())
return res->FindString(resname);
else
return res->FindString(resname, default_value);
} else if (!default_value.empty()) {
}
#endif
if (!default_value.empty()) {
return default_value;
}
return name;
Expand All @@ -112,10 +115,12 @@ class DataLookup : public StringLookup
public:
virtual std::string operator()(const std::string& name) const
{
#ifndef BUILD_TWRPTAR_MAIN
std::string value;
if (DataManager::GetValue(name, value) == 0)
return value;
else
#endif
return "";
}
};
Expand Down
13 changes: 7 additions & 6 deletions libtar/extract.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
# include "selinux/selinux.h"
#endif

const unsigned long long progress_size = (unsigned long long)(T_BLOCKSIZE);

static int
tar_set_file_perms(TAR *t, const char *realname)
{
Expand Down Expand Up @@ -245,6 +247,11 @@ tar_extract_regfile(TAR *t, const char *realname, const int *progress_fd)
close(fdout);
return -1;
}
else
{
if (*progress_fd != 0)
write(*progress_fd, &progress_size, sizeof(progress_size));
}
}

/* close output file */
Expand All @@ -255,12 +262,6 @@ tar_extract_regfile(TAR *t, const char *realname, const int *progress_fd)
printf("### done extracting %s\n", filename);
#endif

if (*progress_fd != 0)
{
unsigned long long file_size = (unsigned long long)(size);
write(*progress_fd, &file_size, sizeof(file_size));
}

return 0;
}

Expand Down
Loading

0 comments on commit 472f506

Please sign in to comment.