Skip to content

Commit b0624a7

Browse files
committed
Revert "task_save_handler improvements:"
This reverts commit 6e17be0.
1 parent 6e17be0 commit b0624a7

1 file changed

Lines changed: 34 additions & 38 deletions

File tree

tasks/task_save.c

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,7 @@ static void task_save_handler(retro_task_t *task)
518518
state->file = intfstream_open_file(
519519
state->path, RETRO_VFS_FILE_ACCESS_WRITE,
520520
RETRO_VFS_FILE_ACCESS_HINT_NONE);
521+
521522
if (!state->file)
522523
return;
523524
}
@@ -529,34 +530,23 @@ static void task_save_handler(retro_task_t *task)
529530
state->size = (ssize_t)_len;
530531
}
531532

532-
/* Nothing to write - finish immediately */
533-
if (state->size <= 0 || !state->data)
534-
{
535-
task_set_progress(task, 100);
536-
task_save_handler_finished(task, state);
537-
return;
538-
}
539-
540533
remaining = MIN(state->size - state->written, SAVE_STATE_CHUNK);
541-
written = (int)intfstream_write(state->file,
534+
535+
if (state->data)
536+
{
537+
written = (int)intfstream_write(state->file,
542538
(uint8_t*)state->data + state->written, remaining);
543-
state->written += written;
539+
state->written += written;
540+
}
544541

545542
task_set_progress(task, (state->written / (float)state->size) * 100);
546543

547544
flg = task_get_flags(task);
548545

549-
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
550-
{
551-
/* Cancellation - no error message, just clean up */
552-
task_save_handler_finished(task, state);
553-
return;
554-
}
555-
556-
if (written != remaining)
546+
if (((flg & RETRO_TASK_FLG_CANCELLED) > 0) || written != remaining)
557547
{
558-
/* Write failure */
559548
char msg[128];
549+
560550
if (state->flags & SAVE_TASK_FLAG_UNDO_SAVE)
561551
{
562552
const char *failed_undo_str = msg_hash_to_str(
@@ -574,33 +564,39 @@ static void task_save_handler(retro_task_t *task)
574564
msg[++_len] = '\0';
575565
strlcpy(msg + _len, state->path, sizeof(msg) - _len);
576566
}
567+
577568
task_set_error(task, strdup(msg));
578569
task_save_handler_finished(task, state);
579-
return;
580570
}
581-
582-
if (state->written == state->size)
571+
else if (state->written == state->size)
583572
{
584-
/* Save complete - set title directly, no intermediate allocation */
573+
char *msg = NULL;
574+
585575
task_free_title(task);
586-
if (!((flg & RETRO_TASK_FLG_MUTE) > 0))
576+
577+
if (state->flags & SAVE_TASK_FLAG_UNDO_SAVE)
578+
msg = strdup(msg_hash_to_str(MSG_RESTORED_OLD_SAVE_STATE));
579+
else if (state->state_slot < 0)
580+
msg = strdup(msg_hash_to_str(MSG_SAVED_STATE_TO_SLOT_AUTO));
581+
else
587582
{
588-
if (state->flags & SAVE_TASK_FLAG_UNDO_SAVE)
589-
task_set_title(task, strdup(msg_hash_to_str(
590-
MSG_RESTORED_OLD_SAVE_STATE)));
591-
else if (state->state_slot < 0)
592-
task_set_title(task, strdup(msg_hash_to_str(
593-
MSG_SAVED_STATE_TO_SLOT_AUTO)));
594-
else
595-
{
596-
char msg[128];
597-
snprintf(msg, sizeof(msg),
598-
msg_hash_to_str(MSG_SAVED_STATE_TO_SLOT),
599-
state->state_slot);
600-
task_set_title(task, strdup(msg));
601-
}
583+
char new_msg[128];
584+
snprintf(new_msg, sizeof(new_msg),
585+
msg_hash_to_str(MSG_SAVED_STATE_TO_SLOT),
586+
state->state_slot);
587+
msg = strdup(new_msg);
588+
}
589+
590+
if (!((flg & RETRO_TASK_FLG_MUTE) > 0) && msg)
591+
{
592+
task_set_title(task, msg);
593+
msg = NULL;
602594
}
595+
603596
task_save_handler_finished(task, state);
597+
598+
if (!string_is_empty(msg))
599+
free(msg);
604600
}
605601
}
606602

0 commit comments

Comments
 (0)