SDL2 2.0.4 is out!

Gianfranco Costamagna costamagnagianfranco at yahoo.it
Mon Jan 11 12:51:27 UTC 2016


Hi Felix,



>Please read the comment above that code in configure.in.
>It means that SDL 2.0.0 is ABI compatible with 2.0.4 but new interfaces 
>have been introduced in 2.0.4.


I remember upstream broke (unintentionally) the compatibility in sdlgfx
https://packages.qa.debian.org/s/sdlgfx/news/20140222T160144Z.html(my first transition :) )


>It highly depends on the details.
>What do those macros expand to?
>Changing the size of a struct that's exposed would certainly be not ABI 
>compatible.


sure, but unfortunately I don't know about a tool that automates the check
and with 125k lines of changes I can't say it is API/ABI compatible, while I prefer
to say the opposite :)


e.g.
-    const struct SDL_assert_data *next;
-} SDL_assert_data;
+    const struct SDL_AssertData *next;
+} SDL_AssertData;


-extern DECLSPEC SDL_assert_state SDLCALL SDL_ReportAssertion(SDL_assert_data *,
+extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *,


this seems API incompatible

and one struct has gained a new member at the end
+    Uint32 direction;   /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */
} SDL_MouseWheelEvent;


so probably if nobody does a sizeof of the struct we are even ABI safe, but I don't think this is a sane approach, is it?

typedef struct SDL_AudioDriver

SDL_AudioDriverImpl impl;

-    char **outputDevices;
+    /* A mutex for device detection */
+    SDL_mutex *detectionLock;
+    SDL_bool captureDevicesRemoved;
+    SDL_bool outputDevicesRemoved;
int outputDeviceCount;
-
-    char **inputDevices;
int inputDeviceCount;
+    SDL_AudioDeviceItem *outputDevices;
+    SDL_AudioDeviceItem *inputDevices;
} SDL_AudioDriver;



to me it really looks ABI incompatible.

cheers!

Gianfranco



More information about the Pkg-sdl-maintainers mailing list