Allow retrying entire data operation process when it cannot proceed.

This commit is contained in:
Steveice10 2017-11-29 15:29:01 -08:00
parent 5e26d9ae7d
commit caa35c1ec6

View File

@ -156,7 +156,13 @@ static void task_data_op_retry_onresponse(ui_view* view, void* data, u32 respons
static void task_data_op_thread(void* arg) { static void task_data_op_thread(void* arg) {
data_op_data* data = (data_op_data*) arg; data_op_data* data = (data_op_data*) arg;
bool reset = false;
for(data->processed = 0; data->processed < data->total; data->processed++) { for(data->processed = 0; data->processed < data->total; data->processed++) {
if(reset) {
data->processed = 0;
reset = false;
}
Result res = 0; Result res = 0;
if(R_SUCCEEDED(res = task_data_op_check_running(data, data->processed, NULL, NULL))) { if(R_SUCCEEDED(res = task_data_op_check_running(data, data->processed, NULL, NULL))) {
@ -183,17 +189,19 @@ static void task_data_op_thread(void* arg) {
svcWaitSynchronization(errorView->active, U64_MAX); svcWaitSynchronization(errorView->active, U64_MAX);
} }
if(proceed) { ui_view* retryView = prompt_display_yes_no("Confirmation", "Retry?", COLOR_TEXT, data, NULL, task_data_op_retry_onresponse);
ui_view* retryView = prompt_display_yes_no("Confirmation", "Retry?", COLOR_TEXT, data, NULL, task_data_op_retry_onresponse); if(retryView != NULL) {
if(retryView != NULL) { svcWaitSynchronization(retryView->active, U64_MAX);
svcWaitSynchronization(retryView->active, U64_MAX);
if(data->retryResponse) { if(data->retryResponse) {
if(proceed) {
data->processed--; data->processed--;
} else {
reset = true;
} }
} else if(!proceed) {
break;
} }
} else {
break;
} }
} else { } else {
prompt_display_notify("Failure", "Operation cancelled.", COLOR_TEXT, NULL, NULL, NULL); prompt_display_notify("Failure", "Operation cancelled.", COLOR_TEXT, NULL, NULL, NULL);