diff --git a/libretro-common/file/file_archive.c b/libretro-common/file/file_archive.c index 1b2d0e721c..a2cfee27e4 100644 --- a/libretro-common/file/file_archive.c +++ b/libretro-common/file/file_archive.c @@ -423,17 +423,6 @@ void zlib_deflate_init(void *data, int level) deflateInit(stream, level); } -bool file_archive_inflate_init(void *data) -{ - z_stream *stream = (z_stream*)data; - - if (!stream) - return false; - if (inflateInit(stream) != Z_OK) - return false; - return true; -} - bool file_archive_inflate_data_to_file_init( zlib_file_handle_t *handle, const uint8_t *cdata, uint32_t csize, uint32_t size) diff --git a/libretro-common/file/file_archive_zlib.c b/libretro-common/file/file_archive_zlib.c index 626e699b9d..c98c64b73e 100644 --- a/libretro-common/file/file_archive_zlib.c +++ b/libretro-common/file/file_archive_zlib.c @@ -99,6 +99,17 @@ static int zlib_stream_compress_data_to_file(void *data) return 0; } +static bool zlib_stream_decompress_init(void *data) +{ + z_stream *stream = (z_stream*)data; + + if (!stream) + return false; + if (inflateInit(stream) != Z_OK) + return false; + return true; +} + const struct zlib_file_backend zlib_backend = { zlib_stream_new, zlib_stream_free, @@ -106,6 +117,7 @@ const struct zlib_file_backend zlib_backend = { zlib_stream_get_avail_out, zlib_stream_get_total_out, zlib_stream_decrement_total_out, + zlib_stream_decompress_init, zlib_stream_compress_free, zlib_stream_compress_data_to_file, "zlib" diff --git a/libretro-common/formats/png/rpng.c b/libretro-common/formats/png/rpng.c index 5dc2f2609e..8d38b5eb2c 100644 --- a/libretro-common/formats/png/rpng.c +++ b/libretro-common/formats/png/rpng.c @@ -791,7 +791,7 @@ static bool rpng_load_image_argb_process_init(rpng_t *rpng, if (!rpng->process.stream) return false; - if (!file_archive_inflate_init(rpng->process.stream)) + if (!rpng->process.stream_backend->stream_decompress_init(rpng->process.stream)) return false; rpng->process.inflate_buf = (uint8_t*)malloc(rpng->process.inflate_buf_size); diff --git a/libretro-common/include/file/file_archive.h b/libretro-common/include/file/file_archive.h index 8edc442409..b779fb55e5 100644 --- a/libretro-common/include/file/file_archive.h +++ b/libretro-common/include/file/file_archive.h @@ -45,6 +45,7 @@ struct zlib_file_backend uint32_t (*stream_get_avail_out)(void*); uint64_t (*stream_get_total_out)(void*); void (*stream_decrement_total_out)(void *, unsigned); + bool (*stream_decompress_init)(void *); void (*stream_compress_free)(void *); int (*stream_compress_data_to_file)(void *); const char *ident; @@ -162,8 +163,6 @@ struct string_list *compressed_file_list_new(const char *filename, void zlib_deflate_init(void *data, int level); -bool file_archive_inflate_init(void *data); - void zlib_set_stream(void *data, uint32_t avail_in, uint32_t avail_out,