diff --git a/tasks/task_screenshot.c b/tasks/task_screenshot.c index f7c61ee60d..c039518037 100644 --- a/tasks/task_screenshot.c +++ b/tasks/task_screenshot.c @@ -29,7 +29,6 @@ #include <file/file_path.h> #include <compat/strl.h> #include <string/stdstring.h> -#include <gfx/scaler/scaler.h> #include <gfx/video_frame.h> #ifdef HAVE_RBMP @@ -59,26 +58,26 @@ static bool screenshot_dump_direct(screenshot_task_state_t *state) { - struct scaler_ctx scaler; - bool ret = false; + struct scaler_ctx *scaler = (struct scaler_ctx*)&state->scaler; + bool ret = false; #if defined(HAVE_RPNG) if (state->bgr24) - scaler.in_fmt = SCALER_FMT_BGR24; + scaler->in_fmt = SCALER_FMT_BGR24; else if (state->pixel_format_type == RETRO_PIXEL_FORMAT_XRGB8888) - scaler.in_fmt = SCALER_FMT_ARGB8888; + scaler->in_fmt = SCALER_FMT_ARGB8888; else - scaler.in_fmt = SCALER_FMT_RGB565; + scaler->in_fmt = SCALER_FMT_RGB565; video_frame_convert_to_bgr24( - &scaler, + scaler, state->out_buffer, (const uint8_t*)state->frame + ((int)state->height - 1) * state->pitch, state->width, state->height, -state->pitch); - scaler_ctx_gen_reset(&scaler); + scaler_ctx_gen_reset(&state->scaler); ret = rpng_save_image_bgr24( state->filename, diff --git a/tasks/tasks_internal.h b/tasks/tasks_internal.h index 6c59f7a17d..b4b1960940 100644 --- a/tasks/tasks_internal.h +++ b/tasks/tasks_internal.h @@ -23,6 +23,7 @@ #include <retro_miscellaneous.h> #include <queues/task_queue.h> +#include <gfx/scaler/scaler.h> #ifdef HAVE_CONFIG_H #include "../config.h" @@ -210,6 +211,7 @@ typedef struct screenshot_task_state screenshot_task_state_t; struct screenshot_task_state { + struct scaler_ctx scaler; uint8_t *out_buffer; const void *frame; void *userbuf;