SDL: Compatibility with Android 4.4, when compiled with Android 5.0 platform headers
This commit is contained in:
@@ -87,7 +87,12 @@
|
||||
#define HAVE_CTYPE_H 1
|
||||
#define HAVE_MATH_H 1
|
||||
#undef HAVE_ICONV_H
|
||||
#define HAVE_SIGNAL_H 1
|
||||
/* Android 4.4 has bsd_signal() libc symbol and an inline signal() function in headers,
|
||||
Android 5.0 introduces signal() symbol in libc,
|
||||
which means that libsdl.so compiled for Android 5.0 will crash on Andorid 4.4 and below,
|
||||
furthermore, signal handlers will do nothing good and will block the native stack trace collector on Android,
|
||||
so it's better to disable signals altogether. */
|
||||
#undef HAVE_SIGNAL_H
|
||||
#undef HAVE_ALTIVEC_H
|
||||
|
||||
#define HAVE_MALLOC 1
|
||||
|
||||
@@ -76,6 +76,26 @@ int SDL_SYS_CreateThread(SDL_Thread *thread, void *args)
|
||||
return(0);
|
||||
}
|
||||
|
||||
#if defined(__ANDROID__) && !defined(__LP64__)
|
||||
/* Compatibility to Android 4.4 */
|
||||
static __inline__ int ___SDL_sigaddset(sigset_t *set, int signum)
|
||||
{
|
||||
unsigned long *local_set = (unsigned long *)set;
|
||||
signum--;
|
||||
local_set[signum/LONG_BIT] |= 1UL << (signum%LONG_BIT);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __inline__ int ___SDL_sigemptyset(sigset_t *set)
|
||||
{
|
||||
memset(set, 0, sizeof *set);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define sigaddset ___SDL_sigaddset
|
||||
#define sigemptyset ___SDL_sigemptyset
|
||||
#endif
|
||||
|
||||
void SDL_SYS_SetupThread(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -148,6 +148,26 @@ static void HandleAlarm(int sig)
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(__ANDROID__) && !defined(__LP64__)
|
||||
/* Compatibility to Android 4.4 */
|
||||
static __inline__ int ___SDL_sigaddset(sigset_t *set, int signum)
|
||||
{
|
||||
unsigned long *local_set = (unsigned long *)set;
|
||||
signum--;
|
||||
local_set[signum/LONG_BIT] |= 1UL << (signum%LONG_BIT);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __inline__ int ___SDL_sigemptyset(sigset_t *set)
|
||||
{
|
||||
memset(set, 0, sizeof *set);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define sigaddset ___SDL_sigaddset
|
||||
#define sigemptyset ___SDL_sigemptyset
|
||||
#endif
|
||||
|
||||
int SDL_SYS_TimerInit(void)
|
||||
{
|
||||
struct sigaction action;
|
||||
|
||||
Reference in New Issue
Block a user