SDL_image: fix calling WebPDemux() with dynamically loaded libwebp (1af8a)

From 1af8a539a8aa959b0271e26edef1560f32e895d7 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Tue, 1 Nov 2022 21:17:28 +0300
Subject: [PATCH] fix calling WebPDemux() with dynamically loaded libwebp

autotools and cmake configurators still need fixing
---
 IMG_webp.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/IMG_webp.c b/IMG_webp.c
index 96532a20..e881501a 100644
--- a/IMG_webp.c
+++ b/IMG_webp.c
@@ -54,7 +54,8 @@ static struct {
     uint8_t*    (*WebPDecodeRGBInto) (const uint8_t* data, size_t data_size, uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
     uint8_t*    (*WebPDecodeRGBAInto) (const uint8_t* data, size_t data_size, uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
 #endif
-    WebPDemuxer* (*WebPDemux)(const WebPData* data);
+    /* WebPDemux() is an inline in webp/demux.h calling WebPDemuxInternal().  */
+    WebPDemuxer* (*WebPDemuxInternal)(const WebPData*, int, WebPDemuxState*, int);
     int (*WebPDemuxGetFrame)(const WebPDemuxer* dmux, int frame_number, WebPIterator* iter);
     uint32_t (*WebPDemuxGetI)(const WebPDemuxer* dmux, WebPFormatFeature feature);
     void (*WebPDemuxDelete)(WebPDemuxer* dmux);
@@ -88,7 +89,7 @@ int IMG_InitWEBP()
         FUNCTION_LOADER(WebPDecodeRGBInto, uint8_t * (*) (const uint8_t* data, size_t data_size, uint8_t* output_buffer, size_t output_buffer_size, int output_stride))
         FUNCTION_LOADER(WebPDecodeRGBAInto, uint8_t * (*) (const uint8_t* data, size_t data_size, uint8_t* output_buffer, size_t output_buffer_size, int output_stride))
 #endif
-        FUNCTION_LOADER(WebPDemux, WebPDemuxer* (*)(const WebPData* data))
+        FUNCTION_LOADER(WebPDemuxInternal, WebPDemuxer* (*)(const WebPData*, int, WebPDemuxState*, int))
         FUNCTION_LOADER(WebPDemuxGetFrame, int (*)(const WebPDemuxer* dmux, int frame_number, WebPIterator* iter))
         FUNCTION_LOADER(WebPDemuxGetI, uint32_t (*)(const WebPDemuxer* dmux, WebPFormatFeature feature));
         FUNCTION_LOADER(WebPDemuxDelete, void (*)(WebPDemuxer* dmux))
@@ -110,6 +111,10 @@ void IMG_QuitWEBP()
     --lib.loaded;
 }
 
+static SDL_INLINE WebPDemuxer* SDL_WebPDemux(const WebPData* data) {
+    return lib.WebPDemuxInternal(data, 0, NULL, WEBP_DEMUX_ABI_VERSION);
+}
+
 static int webp_getinfo (SDL_RWops *src, int *datasize) {
     Sint64 start;
     int is_WEBP;
@@ -342,7 +347,7 @@ IMG_Animation *IMG_LoadWEBPAnimation_RW(SDL_RWops *src)
 
     wd.size = raw_data_size;
     wd.bytes = raw_data;
-    dmuxer = lib.WebPDemux(&wd);
+    dmuxer = SDL_WebPDemux(&wd);
     anim = (IMG_Animation *)SDL_malloc(sizeof(IMG_Animation));
     anim->w = features.width;
     anim->h = features.height;