Added fake stdin/stdout/stderr streams, to prevent crashes on some tablets
This commit is contained in:
@@ -23,6 +23,7 @@ endif
|
||||
LOCAL_CFLAGS += $(foreach D, $(APP_SUBDIRS), -I$(LOCAL_PATH)/$(D)) \
|
||||
-I$(LOCAL_PATH)/../sdl-$(SDL_VERSION)/include \
|
||||
$(foreach L, $(COMPILED_LIBRARIES), -I$(LOCAL_PATH)/../$(L)/include)
|
||||
-D__sF=__SDL_fake_stdout
|
||||
|
||||
LOCAL_CFLAGS += $(APPLICATION_ADDITIONAL_CFLAGS)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# The application settings for Android libSDL port
|
||||
AppSettingVersion=15
|
||||
AppSettingVersion=16
|
||||
LibSdlVersion=1.2
|
||||
AppName="ScummVM"
|
||||
AppFullName=org.scummvm.sdl
|
||||
@@ -20,9 +20,10 @@ NonBlockingSwapBuffers=n
|
||||
RedefinedKeys="LALT RETURN ESCAPE F7 ESCAPE F5 F5 RETURN DELETE F7 F7"
|
||||
AppTouchscreenKeyboardKeysAmount=0
|
||||
AppTouchscreenKeyboardKeysAmountAutoFire=0
|
||||
RedefinedKeysScreenKb="LALT RETURN ESCAPE F7"
|
||||
MultiABI=n
|
||||
AppVersionCode=12001
|
||||
AppVersionName="1.2.0.01"
|
||||
AppVersionCode=12102
|
||||
AppVersionName="1.2.1.02"
|
||||
CompiledLibraries="mad tremor flac ogg jpeg png fluidsynth"
|
||||
CustomBuildScript=y
|
||||
AppCflags=''
|
||||
|
||||
@@ -48,9 +48,9 @@ done
|
||||
CFLAGS="-I$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/include \
|
||||
-fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums \
|
||||
-D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID \
|
||||
-Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os \
|
||||
-Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -O2 \
|
||||
-fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \
|
||||
-Wa,--noexecstack -DNDEBUG -g \
|
||||
-Wa,--noexecstack -DNDEBUG -g -D__sF=__SDL_fake_stdout \
|
||||
-I$LOCAL_PATH/../sdl-1.2/include $STL_INCLUDE \
|
||||
`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-I$LOCAL_PATH/../\1/include@g\"`"
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
ufoai
|
||||
scummvm
|
||||
@@ -50,7 +50,7 @@ common_CFLAGS := \
|
||||
-Wpointer-arith -Wwrite-strings -Wunused -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes \
|
||||
-Wno-long-long -Wfloat-equal -Wno-multichar -Wsign-compare -Wno-format-nonliteral -Wendif-labels \
|
||||
-Wstrict-prototypes -Wdeclaration-after-statement -Wno-system-headers -DHAVE_CONFIG_H -std=gnu99 \
|
||||
-I$(LOCAL_PATH)/include -I$(LOCAL_PATH)/include/curl -I$(LOCAL_PATH)/lib
|
||||
-I$(LOCAL_PATH)/include -I$(LOCAL_PATH)/include/curl -I$(LOCAL_PATH)/lib -D__sF=__SDL_fake_stdout
|
||||
|
||||
#########################
|
||||
# Build the libcurl library
|
||||
@@ -75,6 +75,8 @@ LOCAL_CFLAGS += $(common_CFLAGS)
|
||||
|
||||
LOCAL_MODULE:= libcurl
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION)
|
||||
|
||||
LOCAL_LDLIBS := -lz
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
@@ -8,7 +8,7 @@ APP_SUBDIRS := $(patsubst $(LOCAL_PATH)/%, %, $(shell find $(LOCAL_PATH)/src -ty
|
||||
|
||||
LOCAL_CFLAGS := -O3 $(foreach D, $(APP_SUBDIRS), -I$(LOCAL_PATH)/$(D)) \
|
||||
-I$(LOCAL_PATH)/include -DHAVE_CONFIG_H -include stdint.h -I$(LOCAL_PATH)/../sdl-$(SDL_VERSION)/include \
|
||||
-Werror=implicit
|
||||
-Werror=implicit -D__sF=__SDL_fake_stdout
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ LOCAL_CPP_EXTENSION := .cpp
|
||||
LOCAL_SRC_FILES := $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.cpp))))
|
||||
LOCAL_SRC_FILES += $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.c))))
|
||||
|
||||
LOCAL_SHARED_LIBRARIES :=
|
||||
LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION)
|
||||
|
||||
LOCAL_STATIC_LIBRARIES :=
|
||||
|
||||
|
||||
@@ -16,11 +16,14 @@ LOCAL_CFLAGS := -Os -I$(LOCAL_PATH)/src -I$(LOCAL_PATH)/include -DBUILDING_LIBIN
|
||||
-DLOCALEDIR=\"\" \
|
||||
-DLIBDIR=\"\" \
|
||||
-DLOCALE_ALIAS_PATH=\"\" \
|
||||
-DINSTALLDIR=\"\"
|
||||
-DINSTALLDIR=\"\" \
|
||||
-D__sF=__SDL_fake_stdout
|
||||
|
||||
# -DLOCALE_ALIAS_PATH=\"/usr/local/share/locale\" \
|
||||
# -DINSTALLDIR=\"/usr/local/lib\"
|
||||
|
||||
LOCAL_SRC_FILES := $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.c))))
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION)
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
@@ -4,7 +4,7 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := lua
|
||||
|
||||
LOCAL_CFLAGS := -O3 -I$(LOCAL_PATH)/src -I$(LOCAL_PATH)/include
|
||||
LOCAL_CFLAGS := -O3 -I$(LOCAL_PATH)/src -I$(LOCAL_PATH)/include -D__sF=__SDL_fake_stdout
|
||||
|
||||
LOCAL_CPP_EXTENSION := .cpp
|
||||
|
||||
@@ -12,7 +12,7 @@ LOCAL_SRC_FILES := $(addprefix src/, $(notdir $(wildcard $(LOCAL_PATH)/src/*.c)
|
||||
|
||||
LOCAL_STATIC_LIBRARIES :=
|
||||
|
||||
LOCAL_SHARED_LIBRARIES :=
|
||||
LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION)
|
||||
|
||||
LOCAL_LDLIBS :=
|
||||
|
||||
|
||||
@@ -106,7 +106,9 @@ void _mm_registeralldrivers(void)
|
||||
_mm_registerdriver(&drv_pipe);
|
||||
#endif
|
||||
#ifndef macintosh
|
||||
#ifndef ANDROID
|
||||
_mm_registerdriver(&drv_stdout);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
_mm_registerdriver(&drv_nos);
|
||||
|
||||
1
project/jni/sdl-1.2/src/video/android/SDL_fake_stdout.c
Symbolic link
1
project/jni/sdl-1.2/src/video/android/SDL_fake_stdout.c
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../../sdl-1.3/src/video/android/SDL_fake_stdout.c
|
||||
@@ -229,6 +229,7 @@ JAVA_EXPORT_NAME(DemoRenderer_nativeInitJavaCallbacks) ( JNIEnv* env, jobject t
|
||||
JavaShowScreenKeyboard = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "showScreenKeyboard", "()V");
|
||||
|
||||
ANDROID_InitOSKeymap();
|
||||
SDL_ANDROID_initFakeStdout();
|
||||
}
|
||||
|
||||
int SDL_ANDROID_SetApplicationPutToBackgroundCallback(
|
||||
|
||||
@@ -53,6 +53,7 @@ extern void SDL_ANDROID_processMoveMouseWithKeyboard();
|
||||
extern int SDL_ANDROID_InsideVideoThread();
|
||||
extern SDL_VideoDevice *ANDROID_CreateDevice_1_3(int devindex);
|
||||
extern void SDL_ANDROID_DeferredTextInput();
|
||||
extern void SDL_ANDROID_initFakeStdout();
|
||||
|
||||
#if SDL_VERSION_ATLEAST(1,3,0)
|
||||
extern SDL_Window * ANDROID_CurrentWindow;
|
||||
|
||||
23
project/jni/sdl-1.3/src/video/android/SDL_fake_stdout.c
Normal file
23
project/jni/sdl-1.3/src/video/android/SDL_fake_stdout.c
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
Writing to stdout will crash your program on some particular Android tablets.
|
||||
Although this is the device bug I've put a workaround here,
|
||||
it is heavily dependent on NDK internals and is not portable in any way.
|
||||
*/
|
||||
|
||||
#ifndef _SDL_fake_stdout_h
|
||||
#define _SDL_fake_stdout_h
|
||||
#include <stdio.h>
|
||||
|
||||
extern FILE __SDL_fake_stdout[];
|
||||
|
||||
FILE __SDL_fake_stdout[3];
|
||||
|
||||
void SDL_ANDROID_initFakeStdout()
|
||||
{
|
||||
FILE * ff = NULL;
|
||||
__SDL_fake_stdout[0] = * fopen("/dev/null", "r");
|
||||
__SDL_fake_stdout[1] = * fopen("/dev/null", "w");
|
||||
__SDL_fake_stdout[2] = * fopen("/dev/null", "w");
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -6,7 +6,11 @@ XERCES_SUBDIRS := $(patsubst $(LOCAL_PATH)/%, %, $(shell find $(LOCAL_PATH)/src/
|
||||
|
||||
LOCAL_MODULE := xerces
|
||||
|
||||
LOCAL_CFLAGS := -Os -DHAVE_CONFIG_H -I$(LOCAL_PATH) -I$(LOCAL_PATH)/src -I$(LOCAL_PATH)/include -I$(LOCAL_PATH)/.. -I$(LOCAL_PATH)/include/xercesc/util -I$(LOCAL_PATH)/include/xercesc/util/MsgLoaders/InMemory -I$(LOCAL_PATH)/include/xercesc/dom/ -I$(LOCAL_PATH)/include/xercesc/dom/impl -I$(LOCAL_PATH)/include/xercesc/validators/schema/identity -I$(LOCAL_PATH)/include/xercesc/util/Transcoders/IconvGNU/ -I$(LOCAL_PATH)/include/xercesc/sax
|
||||
LOCAL_CFLAGS := -Os -DHAVE_CONFIG_H -I$(LOCAL_PATH) -I$(LOCAL_PATH)/src -I$(LOCAL_PATH)/include \
|
||||
-I$(LOCAL_PATH)/.. -I$(LOCAL_PATH)/include/xercesc/util -I$(LOCAL_PATH)/include/xercesc/util/MsgLoaders/InMemory \
|
||||
-I$(LOCAL_PATH)/include/xercesc/dom/ -I$(LOCAL_PATH)/include/xercesc/dom/impl \
|
||||
-I$(LOCAL_PATH)/include/xercesc/validators/schema/identity -I$(LOCAL_PATH)/include/xercesc/util/Transcoders/IconvGNU/ \
|
||||
-I$(LOCAL_PATH)/include/xercesc/sax -D__sF=__SDL_fake_stdout
|
||||
|
||||
LOCAL_CPP_EXTENSION := .cpp
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := xml2
|
||||
|
||||
LOCAL_CFLAGS := -Os -I$(LOCAL_PATH) -I$(LOCAL_PATH)/include
|
||||
LOCAL_CFLAGS := -Os -I$(LOCAL_PATH) -I$(LOCAL_PATH)/include -D__sF=__SDL_fake_stdout
|
||||
|
||||
LOCAL_CPP_EXTENSION := .cpp
|
||||
|
||||
@@ -20,7 +20,7 @@ LOCAL_SRC_FILES := \
|
||||
triostr.c trio.c trionan.c
|
||||
|
||||
|
||||
LOCAL_SHARED_LIBRARIES :=
|
||||
LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION)
|
||||
LOCAL_STATIC_LIBRARIES :=
|
||||
LOCAL_LDLIBS := -lz -ldl
|
||||
|
||||
|
||||
Reference in New Issue
Block a user