On Sat, Apr 10, 2021 at 04:56:55PM -0700, Nam Nguyen wrote: > solene@ reported that games/barony has missing textures.[1] Here is a > diff fixing this sourced from a PR by Sylvain Becker. > > I used hg bisect to track down the revision in sdl2's repository that > introduced this bug.[2] I contacted Sylvain Becker, the author of the sdl2 > commit. Sylvain fixed barony's usage of sdl2. > > The bug is with barony's modification of refcount, which is > read-only. The fix uses userdata to stash imgref. > > I tried to understand the fix, but more eyes are welcome. > > Details > ======= > > >From /usr/local/include/SDL2/SDL_surface.h, refcount is read-only. > > /** Application data associated with the surface */ > void *userdata; /**< Read-write */ > /** Reference count -- used when freeing surface */ > int refcount; /**< Read-mostly */ > > Important variables: > userdata: used to store imgref (the id) of a surface > imgref: global Uint32 used to index into allsurfaces, an array of > GL_Surface pointers[3][4] > refcount: read-only field in SDL_Surface used to count how many > references are made to a GL_Surface. See deleted comments in 1107-1113 > in SDL_pixels.c.[2] It is probably used for some other purpose in the > implementation now that is deleted. > > Testing > ======= > > Textures work now with epic game assets downloaded on September 5, > 2020. Feedback and tests are welcome. OK? > > Footnotes: > [1] https://github.com/TurningWheel/Barony/issues/580 > [2] > https://github.com/libsdl-org/SDL/commit/ebc12a2fd2bb692908884e7db6cc935941a591f2#diff-98a8d948613c29516e252e8134aee43ba14fb7bcd6457d29be3ba99861fd80bcL1107 > [3] Barony-3.3.7/src/main.cpp:344:Uint32 imgref = 1 > [4] src/init.cpp:354: allsurfaces = (SDL_Surface**) malloc
I tested this and can confirm this fixes the texture loading problem and makes Barony 3.3.7 playable again, thanks for working with the upstream SDL2 developers to find and fix this Nam! ok brynet@ at least, but will also need approval by solene@ (maintainer) and also naddy@ because of the upcoming ports tree lock. -Bryan.