mirror of
https://gitlab.com/Theopse/fbi-i18n-zh.git
synced 2025-06-10 17:19:16 +08:00
Enable N3DS speed up, display transfer speed in copy operations, stop camera capture when installing from last URL set, decrease buffer size of transfers over HTTP.
This commit is contained in:
parent
b95bbc1395
commit
a5120e0981
@ -114,6 +114,8 @@ void init() {
|
||||
}
|
||||
}
|
||||
|
||||
osSetSpeedupEnable(true);
|
||||
|
||||
APT_GetAppCpuTimeLimit(&old_time_limit);
|
||||
Result cpuRes = APT_SetAppCpuTimeLimit(30);
|
||||
if(R_FAILED(cpuRes)) {
|
||||
|
@ -122,7 +122,7 @@ static void action_erase_twl_save_update(ui_view* view, void* data, float* progr
|
||||
}
|
||||
|
||||
*progress = eraseData->eraseInfo.currTotal != 0 ? (float) ((double) eraseData->eraseInfo.currProcessed / (double) eraseData->eraseInfo.currTotal) : 0;
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%.2f %s / %.2f %s", util_get_display_size(eraseData->eraseInfo.currProcessed), util_get_display_size_units(eraseData->eraseInfo.currProcessed), util_get_display_size(eraseData->eraseInfo.currTotal), util_get_display_size_units(eraseData->eraseInfo.currTotal));
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%.2f %s / %.2f %s\n%.2f %s/s", util_get_display_size(eraseData->eraseInfo.currProcessed), util_get_display_size_units(eraseData->eraseInfo.currProcessed), util_get_display_size(eraseData->eraseInfo.currTotal), util_get_display_size_units(eraseData->eraseInfo.currTotal), util_get_display_size(eraseData->eraseInfo.copyBytesPerSecond), util_get_display_size_units(eraseData->eraseInfo.copyBytesPerSecond));
|
||||
}
|
||||
|
||||
static void action_erase_twl_save_onresponse(ui_view* view, void* data, bool response) {
|
||||
|
@ -144,7 +144,7 @@ static void action_export_twl_save_update(ui_view* view, void* data, float* prog
|
||||
}
|
||||
|
||||
*progress = exportData->exportInfo.currTotal != 0 ? (float) ((double) exportData->exportInfo.currProcessed / (double) exportData->exportInfo.currTotal) : 0;
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%.2f %s / %.2f %s", util_get_display_size(exportData->exportInfo.currProcessed), util_get_display_size_units(exportData->exportInfo.currProcessed), util_get_display_size(exportData->exportInfo.currTotal), util_get_display_size_units(exportData->exportInfo.currTotal));
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%.2f %s / %.2f %s\n%.2f %s/s", util_get_display_size(exportData->exportInfo.currProcessed), util_get_display_size_units(exportData->exportInfo.currProcessed), util_get_display_size(exportData->exportInfo.currTotal), util_get_display_size_units(exportData->exportInfo.currTotal), util_get_display_size(exportData->exportInfo.copyBytesPerSecond), util_get_display_size_units(exportData->exportInfo.copyBytesPerSecond));
|
||||
}
|
||||
|
||||
static void action_export_twl_save_onresponse(ui_view* view, void* data, bool response) {
|
||||
|
@ -130,7 +130,7 @@ static void action_import_twl_save_update(ui_view* view, void* data, float* prog
|
||||
}
|
||||
|
||||
*progress = importData->importInfo.currTotal != 0 ? (float) ((double) importData->importInfo.currProcessed / (double) importData->importInfo.currTotal) : 0;
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%.2f %s / %.2f %s", util_get_display_size(importData->importInfo.currProcessed), util_get_display_size_units(importData->importInfo.currProcessed), util_get_display_size(importData->importInfo.currTotal), util_get_display_size_units(importData->importInfo.currTotal));
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%.2f %s / %.2f %s\n%.2f %s/s", util_get_display_size(importData->importInfo.currProcessed), util_get_display_size_units(importData->importInfo.currProcessed), util_get_display_size(importData->importInfo.currTotal), util_get_display_size_units(importData->importInfo.currTotal), util_get_display_size(importData->importInfo.copyBytesPerSecond), util_get_display_size_units(importData->importInfo.copyBytesPerSecond));
|
||||
}
|
||||
|
||||
static void action_import_twl_save_onresponse(ui_view* view, void* data, bool response) {
|
||||
|
@ -252,7 +252,7 @@ static void action_install_cdn_update(ui_view* view, void* data, float* progress
|
||||
}
|
||||
|
||||
*progress = installData->installInfo.currTotal != 0 ? (float) ((double) installData->installInfo.currProcessed / (double) installData->installInfo.currTotal) : 0;
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s", installData->installInfo.processed, installData->installInfo.total, util_get_display_size(installData->installInfo.currProcessed), util_get_display_size_units(installData->installInfo.currProcessed), util_get_display_size(installData->installInfo.currTotal), util_get_display_size_units(installData->installInfo.currTotal));
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s\n%.2f %s/s", installData->installInfo.processed, installData->installInfo.total, util_get_display_size(installData->installInfo.currProcessed), util_get_display_size_units(installData->installInfo.currProcessed), util_get_display_size(installData->installInfo.currTotal), util_get_display_size_units(installData->installInfo.currTotal), util_get_display_size(installData->installInfo.copyBytesPerSecond), util_get_display_size_units(installData->installInfo.copyBytesPerSecond));
|
||||
}
|
||||
|
||||
static void action_install_cdn_start(install_cdn_data* data) {
|
||||
@ -313,7 +313,7 @@ static void action_install_cdn_internal(volatile bool* done, ticket_info* info,
|
||||
|
||||
data->installInfo.op = DATAOP_COPY;
|
||||
|
||||
data->installInfo.copyBufferSize = 256 * 1024;
|
||||
data->installInfo.copyBufferSize = 128 * 1024;
|
||||
data->installInfo.copyEmpty = false;
|
||||
|
||||
data->installInfo.total = 1;
|
||||
|
@ -240,7 +240,7 @@ static void action_install_cias_update(ui_view* view, void* data, float* progres
|
||||
}
|
||||
|
||||
*progress = installData->installInfo.currTotal != 0 ? (float) ((double) installData->installInfo.currProcessed / (double) installData->installInfo.currTotal) : 0;
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s", installData->installInfo.processed, installData->installInfo.total, util_get_display_size(installData->installInfo.currProcessed), util_get_display_size_units(installData->installInfo.currProcessed), util_get_display_size(installData->installInfo.currTotal), util_get_display_size_units(installData->installInfo.currTotal));
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s\n%.2f %s/s", installData->installInfo.processed, installData->installInfo.total, util_get_display_size(installData->installInfo.currProcessed), util_get_display_size_units(installData->installInfo.currProcessed), util_get_display_size(installData->installInfo.currTotal), util_get_display_size_units(installData->installInfo.currTotal), util_get_display_size(installData->installInfo.copyBytesPerSecond), util_get_display_size_units(installData->installInfo.copyBytesPerSecond));
|
||||
}
|
||||
|
||||
static void action_install_cias_onresponse(ui_view* view, void* data, bool response) {
|
||||
|
@ -200,7 +200,7 @@ static void action_install_tickets_update(ui_view* view, void* data, float* prog
|
||||
}
|
||||
|
||||
*progress = installData->installInfo.currTotal != 0 ? (float) ((double) installData->installInfo.currProcessed / (double) installData->installInfo.currTotal) : 0;
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s", installData->installInfo.processed, installData->installInfo.total, util_get_display_size(installData->installInfo.currProcessed), util_get_display_size_units(installData->installInfo.currProcessed), util_get_display_size(installData->installInfo.currTotal), util_get_display_size_units(installData->installInfo.currTotal));
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s\n%.2f %s/s", installData->installInfo.processed, installData->installInfo.total, util_get_display_size(installData->installInfo.currProcessed), util_get_display_size_units(installData->installInfo.currProcessed), util_get_display_size(installData->installInfo.currTotal), util_get_display_size_units(installData->installInfo.currTotal), util_get_display_size(installData->installInfo.copyBytesPerSecond), util_get_display_size_units(installData->installInfo.copyBytesPerSecond));
|
||||
}
|
||||
|
||||
static void action_install_tickets_cdn_check_onresponse(ui_view* view, void* data, bool response) {
|
||||
|
@ -274,7 +274,7 @@ static void action_paste_contents_update(ui_view* view, void* data, float* progr
|
||||
}
|
||||
|
||||
*progress = pasteData->pasteInfo.currTotal != 0 ? (float) ((double) pasteData->pasteInfo.currProcessed / (double) pasteData->pasteInfo.currTotal) : 0;
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s", pasteData->pasteInfo.processed, pasteData->pasteInfo.total, util_get_display_size(pasteData->pasteInfo.currProcessed), util_get_display_size_units(pasteData->pasteInfo.currProcessed), util_get_display_size(pasteData->pasteInfo.currTotal), util_get_display_size_units(pasteData->pasteInfo.currTotal));
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s\n%.2f %s/s", pasteData->pasteInfo.processed, pasteData->pasteInfo.total, util_get_display_size(pasteData->pasteInfo.currProcessed), util_get_display_size_units(pasteData->pasteInfo.currProcessed), util_get_display_size(pasteData->pasteInfo.currTotal), util_get_display_size_units(pasteData->pasteInfo.currTotal), util_get_display_size(pasteData->pasteInfo.copyBytesPerSecond), util_get_display_size_units(pasteData->pasteInfo.copyBytesPerSecond));
|
||||
}
|
||||
|
||||
static void action_paste_contents_onresponse(ui_view* view, void* data, bool response) {
|
||||
|
@ -280,7 +280,7 @@ static void action_url_install_install_update(ui_view* view, void* data, float*
|
||||
}
|
||||
|
||||
*progress = installData->installInfo.currTotal != 0 ? (float) ((double) installData->installInfo.currProcessed / (double) installData->installInfo.currTotal) : 0;
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s", installData->installInfo.processed, installData->installInfo.total, util_get_display_size(installData->installInfo.currProcessed), util_get_display_size_units(installData->installInfo.currProcessed), util_get_display_size(installData->installInfo.currTotal), util_get_display_size_units(installData->installInfo.currTotal));
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s\n%.2f %s/s", installData->installInfo.processed, installData->installInfo.total, util_get_display_size(installData->installInfo.currProcessed), util_get_display_size_units(installData->installInfo.currProcessed), util_get_display_size(installData->installInfo.currTotal), util_get_display_size_units(installData->installInfo.currTotal), util_get_display_size(installData->installInfo.copyBytesPerSecond), util_get_display_size_units(installData->installInfo.copyBytesPerSecond));
|
||||
}
|
||||
|
||||
static void action_url_install_confirm_onresponse(ui_view* view, void* data, bool response) {
|
||||
@ -350,7 +350,7 @@ void action_url_install(const char* confirmMessage, const char* urls) {
|
||||
|
||||
data->installInfo.op = DATAOP_COPY;
|
||||
|
||||
data->installInfo.copyBufferSize = 256 * 1024;
|
||||
data->installInfo.copyBufferSize = 128 * 1024;
|
||||
data->installInfo.copyEmpty = false;
|
||||
|
||||
data->installInfo.isSrcDirectory = action_url_install_is_src_directory;
|
||||
|
@ -122,7 +122,7 @@ static void dumpnand_update(ui_view* view, void* data, float* progress, char* te
|
||||
}
|
||||
|
||||
*progress = dumpData->currTotal != 0 ? (float) ((double) dumpData->currProcessed / (double) dumpData->currTotal) : 0;
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%.2f %s / %.2f %s", util_get_display_size(dumpData->currProcessed), util_get_display_size_units(dumpData->currProcessed), util_get_display_size(dumpData->currTotal), util_get_display_size_units(dumpData->currTotal));
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%.2f %s / %.2f %s\n%.2f %s/s", util_get_display_size(dumpData->currProcessed), util_get_display_size_units(dumpData->currProcessed), util_get_display_size(dumpData->currTotal), util_get_display_size_units(dumpData->currTotal), util_get_display_size(dumpData->copyBytesPerSecond), util_get_display_size_units(dumpData->copyBytesPerSecond));
|
||||
}
|
||||
|
||||
static void dumpnand_onresponse(ui_view* view, void* data, bool response) {
|
||||
|
@ -29,7 +29,7 @@ typedef struct {
|
||||
capture_cam_data captureInfo;
|
||||
} qr_install_data;
|
||||
|
||||
static void qrinstall_free_data(qr_install_data* data) {
|
||||
static void qrinstall_stop_capture(qr_install_data* data) {
|
||||
if(!data->captureInfo.finished) {
|
||||
svcSignalEvent(data->captureInfo.cancelEvent);
|
||||
while(!data->captureInfo.finished) {
|
||||
@ -39,6 +39,14 @@ static void qrinstall_free_data(qr_install_data* data) {
|
||||
|
||||
data->capturing = false;
|
||||
|
||||
if(data->captureInfo.buffer != NULL) {
|
||||
memset(data->captureInfo.buffer, 0, IMAGE_WIDTH * IMAGE_HEIGHT * sizeof(u16));
|
||||
}
|
||||
}
|
||||
|
||||
static void qrinstall_free_data(qr_install_data* data) {
|
||||
qrinstall_stop_capture(data);
|
||||
|
||||
if(data->captureInfo.buffer != NULL) {
|
||||
free(data->captureInfo.buffer);
|
||||
data->captureInfo.buffer = NULL;
|
||||
@ -65,7 +73,7 @@ static void qrinstall_wait_draw_top(ui_view* view, void* data, float x1, float y
|
||||
}
|
||||
}
|
||||
|
||||
static bool qrinstall_get_last_urls(char* out, size_t size) {
|
||||
static bool qrinstall_wait_get_last_urls(char* out, size_t size) {
|
||||
if(out == NULL || size == 0) {
|
||||
return false;
|
||||
}
|
||||
@ -84,7 +92,7 @@ static bool qrinstall_get_last_urls(char* out, size_t size) {
|
||||
return bytesRead != 0;
|
||||
}
|
||||
|
||||
static Result qrinstall_set_last_urls(const char* urls) {
|
||||
static Result qrinstall_wait_set_last_urls(const char* urls) {
|
||||
Result res = 0;
|
||||
|
||||
FS_Archive sdmcArchive = 0;
|
||||
@ -163,17 +171,9 @@ static void qrinstall_wait_update(ui_view* view, void* data, float* progress, ch
|
||||
|
||||
char textBuf[1024];
|
||||
if(swkbdInputText(&swkbd, textBuf, sizeof(textBuf)) == SWKBD_BUTTON_CONFIRM) {
|
||||
if(!qrInstallData->captureInfo.finished) {
|
||||
svcSignalEvent(qrInstallData->captureInfo.cancelEvent);
|
||||
while(!qrInstallData->captureInfo.finished) {
|
||||
svcSleepThread(1000000);
|
||||
}
|
||||
}
|
||||
qrinstall_stop_capture(qrInstallData);
|
||||
|
||||
qrInstallData->capturing = false;
|
||||
memset(qrInstallData->captureInfo.buffer, 0, IMAGE_WIDTH * IMAGE_HEIGHT * sizeof(u16));
|
||||
|
||||
qrinstall_set_last_urls(textBuf);
|
||||
qrinstall_wait_set_last_urls(textBuf);
|
||||
|
||||
action_url_install("Install from the provided URL(s)?", textBuf);
|
||||
return;
|
||||
@ -182,7 +182,9 @@ static void qrinstall_wait_update(ui_view* view, void* data, float* progress, ch
|
||||
|
||||
if(hidKeysDown() & KEY_X) {
|
||||
char textBuf[4096];
|
||||
if(qrinstall_get_last_urls(textBuf, sizeof(textBuf))) {
|
||||
if(qrinstall_wait_get_last_urls(textBuf, sizeof(textBuf))) {
|
||||
qrinstall_stop_capture(qrInstallData);
|
||||
|
||||
action_url_install("Install from the last entered URL(s)?", textBuf);
|
||||
} else {
|
||||
prompt_display("Failure", "No previously entered URL(s) could be found.", COLOR_TEXT, false, NULL, NULL, NULL);
|
||||
@ -192,7 +194,7 @@ static void qrinstall_wait_update(ui_view* view, void* data, float* progress, ch
|
||||
}
|
||||
|
||||
if(hidKeysDown() & KEY_Y) {
|
||||
Result forgetRes = qrinstall_set_last_urls(NULL);
|
||||
Result forgetRes = qrinstall_wait_set_last_urls(NULL);
|
||||
if(R_SUCCEEDED(forgetRes)) {
|
||||
prompt_display("Success", "Last URL(s) forgotten.", COLOR_TEXT, false, NULL, NULL, NULL);
|
||||
} else {
|
||||
@ -235,17 +237,9 @@ static void qrinstall_wait_update(ui_view* view, void* data, float* progress, ch
|
||||
quirc_decode_error_t err = quirc_decode(&qrCode, &qrData);
|
||||
|
||||
if(err == 0) {
|
||||
if(!qrInstallData->captureInfo.finished) {
|
||||
svcSignalEvent(qrInstallData->captureInfo.cancelEvent);
|
||||
while(!qrInstallData->captureInfo.finished) {
|
||||
svcSleepThread(1000000);
|
||||
}
|
||||
}
|
||||
qrinstall_stop_capture(qrInstallData);
|
||||
|
||||
qrInstallData->capturing = false;
|
||||
memset(qrInstallData->captureInfo.buffer, 0, IMAGE_WIDTH * IMAGE_HEIGHT * sizeof(u16));
|
||||
|
||||
qrinstall_set_last_urls((const char*) qrData.payload);
|
||||
qrinstall_wait_set_last_urls((const char*) qrData.payload);
|
||||
|
||||
action_url_install("Install from the scanned QR code?", (const char*) qrData.payload);
|
||||
return;
|
||||
|
@ -43,6 +43,8 @@ static Result task_data_op_copy(data_op_data* data, u32 index) {
|
||||
data->currProcessed = 0;
|
||||
data->currTotal = 0;
|
||||
|
||||
data->copyBytesPerSecond = 0;
|
||||
|
||||
Result res = 0;
|
||||
|
||||
bool isDir = false;
|
||||
@ -66,20 +68,17 @@ static Result task_data_op_copy(data_op_data* data, u32 index) {
|
||||
if(buffer != NULL) {
|
||||
u32 dstHandle = 0;
|
||||
|
||||
u64 lastBytesPerSecondUpdate = osGetTime();
|
||||
u32 bytesSinceUpdate = 0;
|
||||
|
||||
bool firstRun = true;
|
||||
while(data->currProcessed < data->currTotal) {
|
||||
if(R_FAILED(res = task_data_op_check_running(data, data->processed, &srcHandle, &dstHandle))) {
|
||||
break;
|
||||
}
|
||||
|
||||
u32 currSize = data->copyBufferSize;
|
||||
if((u64) currSize > data->currTotal - data->currProcessed) {
|
||||
currSize = (u32) (data->currTotal - data->currProcessed);
|
||||
}
|
||||
|
||||
u32 bytesRead = 0;
|
||||
u32 bytesWritten = 0;
|
||||
if(R_FAILED(res = data->readSrc(data->data, srcHandle, &bytesRead, buffer, data->currProcessed, currSize))) {
|
||||
if(R_FAILED(res = data->readSrc(data->data, srcHandle, &bytesRead, buffer, data->currProcessed, data->copyBufferSize))) {
|
||||
break;
|
||||
}
|
||||
|
||||
@ -91,11 +90,22 @@ static Result task_data_op_copy(data_op_data* data, u32 index) {
|
||||
}
|
||||
}
|
||||
|
||||
if(R_FAILED(res = data->writeDst(data->data, dstHandle, &bytesWritten, buffer, data->currProcessed, currSize))) {
|
||||
u32 bytesWritten = 0;
|
||||
if(R_FAILED(res = data->writeDst(data->data, dstHandle, &bytesWritten, buffer, data->currProcessed, bytesRead))) {
|
||||
break;
|
||||
}
|
||||
|
||||
data->currProcessed += bytesWritten;
|
||||
bytesSinceUpdate += bytesWritten;
|
||||
|
||||
u64 time = osGetTime();
|
||||
u64 elapsed = time - lastBytesPerSecondUpdate;
|
||||
if(elapsed >= 1000) {
|
||||
data->copyBytesPerSecond = (u32) (bytesSinceUpdate / (elapsed / 1000.0f));
|
||||
|
||||
bytesSinceUpdate = 0;
|
||||
lastBytesPerSecondUpdate = time;
|
||||
}
|
||||
}
|
||||
|
||||
if(dstHandle != 0) {
|
||||
|
@ -92,7 +92,7 @@ typedef enum data_op_e {
|
||||
DATAOP_DELETE
|
||||
} data_op;
|
||||
|
||||
typedef struct data_op_info_s {
|
||||
typedef struct data_op_data_s {
|
||||
void* data;
|
||||
|
||||
data_op op;
|
||||
@ -101,6 +101,8 @@ typedef struct data_op_info_s {
|
||||
u32 copyBufferSize;
|
||||
bool copyEmpty;
|
||||
|
||||
u32 copyBytesPerSecond;
|
||||
|
||||
u32 processed;
|
||||
u32 total;
|
||||
|
||||
|
@ -171,7 +171,7 @@ static void update_install_update(ui_view* view, void* data, float* progress, ch
|
||||
}
|
||||
|
||||
*progress = updateData->installInfo.currTotal != 0 ? (float) ((double) updateData->installInfo.currProcessed / (double) updateData->installInfo.currTotal) : 0;
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%.2f %s / %.2f %s", util_get_display_size(updateData->installInfo.currProcessed), util_get_display_size_units(updateData->installInfo.currProcessed), util_get_display_size(updateData->installInfo.currTotal), util_get_display_size_units(updateData->installInfo.currTotal));
|
||||
snprintf(text, PROGRESS_TEXT_MAX, "%.2f %s / %.2f %s\n%.2f %s/s", util_get_display_size(updateData->installInfo.currProcessed), util_get_display_size_units(updateData->installInfo.currProcessed), util_get_display_size(updateData->installInfo.currTotal), util_get_display_size_units(updateData->installInfo.currTotal), util_get_display_size(updateData->installInfo.copyBytesPerSecond), util_get_display_size_units(updateData->installInfo.copyBytesPerSecond));
|
||||
}
|
||||
|
||||
static void update_check_update(ui_view* view, void* data, float* progress, char* text) {
|
||||
@ -321,7 +321,7 @@ void update_open() {
|
||||
|
||||
data->installInfo.op = DATAOP_COPY;
|
||||
|
||||
data->installInfo.copyBufferSize = 256 * 1024;
|
||||
data->installInfo.copyBufferSize = 128 * 1024;
|
||||
data->installInfo.copyEmpty = false;
|
||||
|
||||
data->installInfo.total = 1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user