@@ -470,6 +470,14 @@ ConfirmMemstickMoveScreen::~ConfirmMemstickMoveScreen() {
470
470
moveDataTask_->BlockUntilReady ();
471
471
delete moveDataTask_;
472
472
}
473
+ if (oldSpaceTask_) {
474
+ oldSpaceTask_->BlockUntilReady ();
475
+ delete oldSpaceTask_;
476
+ }
477
+ if (newSpaceTask_) {
478
+ newSpaceTask_->BlockUntilReady ();
479
+ delete newSpaceTask_;
480
+ }
473
481
}
474
482
475
483
void ConfirmMemstickMoveScreen::CreateViews () {
@@ -479,7 +487,7 @@ void ConfirmMemstickMoveScreen::CreateViews() {
479
487
480
488
root_ = new LinearLayout (ORIENT_HORIZONTAL);
481
489
482
- Path oldMemstickFolder = g_Config.memStickDirectory ;
490
+ Path & oldMemstickFolder = g_Config.memStickDirectory ;
483
491
484
492
Spacer *spacerColumn = new Spacer (new LinearLayoutParams (20.0 , FILL_PARENT, 0 .0f ));
485
493
ViewGroup *leftColumn = new LinearLayout (ORIENT_VERTICAL, new LinearLayoutParams (1.0 ));
@@ -488,18 +496,20 @@ void ConfirmMemstickMoveScreen::CreateViews() {
488
496
root_->Add (leftColumn);
489
497
root_->Add (rightColumn);
490
498
491
- int64_t freeSpaceNew;
492
- int64_t freeSpaceOld;
493
- free_disk_space (newMemstickFolder_, freeSpaceNew);
494
- free_disk_space (oldMemstickFolder, freeSpaceOld);
495
-
496
499
leftColumn->Add (new TextView (ms->T (" Selected PSP Data Folder" ), ALIGN_LEFT, false ));
497
500
if (!initialSetup_) {
498
501
leftColumn->Add (new NoticeView (NoticeLevel::WARN, ms->T (" PPSSPP will restart after the change" ), " " ));
499
502
}
500
503
leftColumn->Add (new TextView (newMemstickFolder_.ToVisualString (), ALIGN_LEFT, false ));
501
- std::string newFreeSpaceText = std::string (ms->T (" Free space" )) + " : " + FormatSpaceString (freeSpaceNew);
502
- leftColumn->Add (new TextView (newFreeSpaceText, ALIGN_LEFT, false ));
504
+
505
+ newFreeSpaceView_ = leftColumn->Add (new TextView (ms->T (" Free space" ), ALIGN_LEFT, false ));
506
+
507
+ newSpaceTask_ = Promise<SpaceResult *>::Spawn (&g_threadManager, [&]() -> SpaceResult * {
508
+ int64_t freeSpaceNew;
509
+ free_disk_space (newMemstickFolder_, freeSpaceNew);
510
+ return new SpaceResult{ freeSpaceNew };
511
+ }, TaskType::IO_BLOCKING, TaskPriority::HIGH);
512
+
503
513
if (existingFilesInNewFolder_) {
504
514
leftColumn->Add (new NoticeView (NoticeLevel::SUCCESS, ms->T (" Already contains PSP data" ), " " ));
505
515
if (!moveData_) {
@@ -511,11 +521,15 @@ void ConfirmMemstickMoveScreen::CreateViews() {
511
521
}
512
522
513
523
if (!oldMemstickFolder.empty ()) {
514
- std::string oldFreeSpaceText = std::string (ms->T (" Free space" )) + " : " + FormatSpaceString (freeSpaceOld);
524
+ oldSpaceTask_ = Promise<SpaceResult *>::Spawn (&g_threadManager, [&]() -> SpaceResult * {
525
+ int64_t freeSpaceOld;
526
+ free_disk_space (oldMemstickFolder, freeSpaceOld);
527
+ return new SpaceResult{ freeSpaceOld };
528
+ }, TaskType::IO_BLOCKING, TaskPriority::HIGH);
515
529
516
530
rightColumn->Add (new TextView (std::string (ms->T (" Current" )) + " :" , ALIGN_LEFT, false ));
517
531
rightColumn->Add (new TextView (oldMemstickFolder.ToVisualString (), ALIGN_LEFT, false ));
518
- rightColumn->Add (new TextView (oldFreeSpaceText , ALIGN_LEFT, false ));
532
+ oldFreeSpaceView_ = rightColumn->Add (new TextView (ms-> T ( " Free space " ) , ALIGN_LEFT, false ));
519
533
}
520
534
521
535
if (moveDataTask_) {
@@ -567,6 +581,19 @@ void ConfirmMemstickMoveScreen::update() {
567
581
moveDataTask_ = nullptr ;
568
582
}
569
583
}
584
+
585
+ if (newSpaceTask_ && newFreeSpaceView_) {
586
+ SpaceResult *result = newSpaceTask_->Poll ();
587
+ newFreeSpaceView_->SetText (std::string (ms->T (" Free space" )) + " : " + FormatSpaceString (result->bytesFree ));
588
+ delete newSpaceTask_;
589
+ newSpaceTask_ = nullptr ;
590
+ }
591
+ if (oldSpaceTask_ && oldFreeSpaceView_) {
592
+ SpaceResult *result = oldSpaceTask_->Poll ();
593
+ oldFreeSpaceView_->SetText (std::string (ms->T (" Free space" )) + " : " + FormatSpaceString (result->bytesFree ));
594
+ delete oldSpaceTask_;
595
+ oldSpaceTask_ = nullptr ;
596
+ }
570
597
}
571
598
572
599
UI::EventReturn ConfirmMemstickMoveScreen::OnConfirm (UI::EventParams ¶ms) {
0 commit comments