diff --git a/project/AndroidManifestTemplate.xml b/project/AndroidManifestTemplate.xml
index cfa942086..dca5f9fcb 100644
--- a/project/AndroidManifestTemplate.xml
+++ b/project/AndroidManifestTemplate.xml
@@ -24,7 +24,8 @@
-
+
+
diff --git a/project/java/admob/Advertisement.java b/project/java/admob/Advertisement.java
index 77d639706..e55cd8ae6 100644
--- a/project/java/admob/Advertisement.java
+++ b/project/java/admob/Advertisement.java
@@ -30,7 +30,7 @@ import android.view.WindowManager;
import android.widget.TextView;
import android.view.View;
-import com.google.ads.*; // Copy GoogleAdMobAdsSdk.jar to the directory project/libs
+import com.google.android.gms.ads.*; // Copy google-play-services.jar from Google SDK to the directory project/libs, and update it's version number in AndroidManifest.xml
class Advertisement
{
@@ -41,22 +41,33 @@ class Advertisement
{
parent = p;
AdSize adSize = AdSize.BANNER;
+
if( Globals.AdmobBannerSize.equals("BANNER") )
adSize = AdSize.BANNER;
- else if( Globals.AdmobBannerSize.equals("IAB_BANNER") )
- adSize = AdSize.IAB_BANNER;
- else if( Globals.AdmobBannerSize.equals("IAB_LEADERBOARD") )
- adSize = AdSize.IAB_LEADERBOARD;
- else if( Globals.AdmobBannerSize.equals("IAB_MRECT") )
- adSize = AdSize.IAB_MRECT;
- else if( Globals.AdmobBannerSize.equals("IAB_WIDE_SKYSCRAPER") )
- adSize = AdSize.IAB_WIDE_SKYSCRAPER;
+ else if( Globals.AdmobBannerSize.equals("LEADERBOARD") )
+ adSize = AdSize.LEADERBOARD;
+ else if( Globals.AdmobBannerSize.equals("FULL_BANNER") )
+ adSize = AdSize.FULL_BANNER;
+ else if( Globals.AdmobBannerSize.equals("MEDIUM_RECTANGLE") )
+ adSize = AdSize.MEDIUM_RECTANGLE;
else if( Globals.AdmobBannerSize.equals("SMART_BANNER") )
adSize = AdSize.SMART_BANNER;
- ad = new AdView(parent, adSize, Globals.AdmobPublisherId);
- AdRequest adRequest = new AdRequest();
- adRequest.addTestDevice(AdRequest.TEST_EMULATOR); // Copy GoogleAdMobAdsSdk.jar to the directory project/libs
- adRequest.addTestDevice(Globals.AdmobTestDeviceId);
+ else if( Globals.AdmobBannerSize.equals("WIDE_SKYSCRAPER") )
+ adSize = AdSize.WIDE_SKYSCRAPER;
+ else
+ {
+ String[] size = Globals.AdmobBannerSize.split(":");
+ int width = size[0].equals("FULL_WIDTH") ? AdSize.FULL_WIDTH : Integer.parseInt(size[0]);
+ int height = size[1].equals("AUTO_HEIGHT") ? AdSize.AUTO_HEIGHT : Integer.parseInt(size[1]);
+ adSize = new AdSize(width, height);
+ }
+ ad = new AdView(parent);
+ ad.setAdSize(adSize);
+ ad.setAdUnitId(Globals.AdmobPublisherId);
+ AdRequest adRequest = new AdRequest.Builder().
+ addTestDevice(AdRequest.DEVICE_ID_EMULATOR).
+ addTestDevice(Globals.AdmobTestDeviceId).
+ build();
ad.loadAd(adRequest);
}
@@ -67,9 +78,10 @@ class Advertisement
public void requestNewAd()
{
- AdRequest adRequest = new AdRequest();
- adRequest.addTestDevice(AdRequest.TEST_EMULATOR); // Copy GoogleAdMobAdsSdk.jar to the directory project/libs
- adRequest.addTestDevice(Globals.AdmobTestDeviceId);
+ AdRequest adRequest = new AdRequest.Builder().
+ addTestDevice(AdRequest.DEVICE_ID_EMULATOR).
+ addTestDevice(Globals.AdmobTestDeviceId).
+ build();
ad.loadAd(adRequest);
}
}
diff --git a/project/jni/application/ballfield/AndroidAppSettings.cfg b/project/jni/application/ballfield/AndroidAppSettings.cfg
index a579c93e5..164794512 100644
--- a/project/jni/application/ballfield/AndroidAppSettings.cfg
+++ b/project/jni/application/ballfield/AndroidAppSettings.cfg
@@ -70,6 +70,10 @@ CreateService=
# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n)
CompatibilityHacksForceScreenUpdate=n
+# Application does not call SDL_Flip() or SDL_UpdateRects() after mouse click (ScummVM and all Amiga emulators do that) -
+# force screen update by moving mouse cursor a little after each click (y) or (n)
+CompatibilityHacksForceScreenUpdateMouseClick=y
+
# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n)
CompatibilityHacksStaticInit=n
@@ -245,6 +249,6 @@ AdmobPublisherId=n
# Your AdMob test device ID, to receive a test ad
AdmobTestDeviceId=
-# Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER)
+# Your AdMob banner size (BANNER/FULL_BANNER/LEADERBOARD/MEDIUM_RECTANGLE/SMART_BANNER/WIDE_SKYSCRAPER/FULL_WIDTH:Height/Width:AUTO_HEIGHT/Width:Height)
AdmobBannerSize=
diff --git a/project/jni/application/test-advertisements/AndroidAppSettings.cfg b/project/jni/application/test-advertisements/AndroidAppSettings.cfg
index a250e3c7a..28d2d28f6 100644
--- a/project/jni/application/test-advertisements/AndroidAppSettings.cfg
+++ b/project/jni/application/test-advertisements/AndroidAppSettings.cfg
@@ -1,54 +1,253 @@
# The application settings for Android libSDL port
-AppSettingVersion=17
-LibSdlVersion=1.2
+
+# Specify application name (e.x. My Application)
AppName="Admob test"
-AppFullName=ws.openarena.sdl
-ScreenOrientation=h
-InhibitSuspend=y
-AppDataDownloadUrl="Game data is 1 Mb|ballfield2.zip"
-VideoDepthBpp=16
-NeedDepthBuffer=n
-NeedStencilBuffer=n
-NeedGles2=n
-SwVideoMode=y
-SdlVideoResize=y
-SdlVideoResizeKeepAspect=n
-CompatibilityHacks=n
-CompatibilityHacksStaticInit=n
-CompatibilityHacksTextInputEmulatesHwKeyboard=n
-CompatibilityHacksPreventAudioChopping=n
-CompatibilityHacksAppIgnoresAudioBufferSize=n
-AppUsesMouse=y
-AppNeedsTwoButtonMouse=y
-ShowMouseCursor=n
-ForceRelativeMouseMode=n
-AppNeedsArrowKeys=n
-AppNeedsTextInput=y
-AppUsesJoystick=n
-AppUsesAccelerometer=n
-AppUsesMultitouch=y
-NonBlockingSwapBuffers=n
-RedefinedKeys="SPACE RETURN NO_REMAP NO_REMAP SPACE ESCAPE"
-AppTouchscreenKeyboardKeysAmount=0
-AppTouchscreenKeyboardKeysAmountAutoFire=0
-RedefinedKeysScreenKb="0 1 2 3 4 5 6 7 8 9"
-StartupMenuButtonTimeout=500
-HiddenMenuOptions='OptionalDownloadConfig'
-FirstStartMenuOptions=''
-MultiABI=n
-AppMinimumRAM=0
+
+# Specify reversed site name of application (e.x. com.mysite.myapp)
+AppFullName=test.ad.app
+
+# Application version code (integer)
AppVersionCode=101
+
+# Application user-visible version name (string)
AppVersionName="1.01"
+
+# Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...'
+# If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu
+# If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as binary BLOB to the application dir and not unzipped
+# If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir -
+# these files are put inside .apk package by build system
+# Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS
+AppDataDownloadUrl="Game data is 1 Mb|ballfield2.zip"
+
+# Reset SDL config when updating application to the new version (y) / (n)
ResetSdlConfigForThisVersion=n
+
+# Delete application data files when upgrading (specify file/dir paths separated by spaces)
DeleteFilesOnUpgrade="%"
-CompiledLibraries="sdl_mixer sdl_image"
-CustomBuildScript=n
-AppCflags='-O2 -finline-functions'
-AppLdflags=''
-AppSubdirsBuild=''
-AppCmdline=''
+
+# Here you may type readme text, which will be shown during startup. Format is:
+# Text in English, use \\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/
ReadmeText='^Readme text'
+
+# libSDL version to use (1.2/1.3/2.0)
+LibSdlVersion=1.2
+
+# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape
+ScreenOrientation=h
+
+# Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only
+# with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32)
+VideoDepthBpp=16
+
+# Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n)
+NeedDepthBuffer=n
+
+# Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n)
+NeedStencilBuffer=n
+
+# Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device
+# you need this option only if you're developing 3-d app (y) or (n)
+NeedGles2=n
+
+# Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL,
+# this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n)
+SwVideoMode=y
+
+# Application video output will be resized to fit into native device screen (y)/(n)
+SdlVideoResize=y
+
+# Application resizing will keep 4:3 aspect ratio, with black bars at sides (y)/(n)
+SdlVideoResizeKeepAspect=n
+
+# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer
+InhibitSuspend=y
+
+# Create Android service, so the app is less likely to be killed while in background
+CreateService=
+
+# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread -
+# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n)
+CompatibilityHacksForceScreenUpdate=n
+
+# Application does not call SDL_Flip() or SDL_UpdateRects() after mouse click (ScummVM and all Amiga emulators do that) -
+# force screen update by moving mouse cursor a little after each click (y) or (n)
+CompatibilityHacksForceScreenUpdateMouseClick=y
+
+# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n)
+CompatibilityHacksStaticInit=n
+
+# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n)
+CompatibilityHacksTextInputEmulatesHwKeyboard=n
+
+# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n)
+CompatibilityHacksPreventAudioChopping=n
+
+# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n)
+CompatibilityHacksAppIgnoresAudioBufferSize=n
+
+# Hack for VCMI: preload additional shared libraries before aplication start
+CompatibilityHacksAdditionalPreloadedSharedLibraries=""
+
+# Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue -
+# do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n)
+CompatibilityHacksSlowCompatibleEventQueue=
+
+# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL
+CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=
+
+# Application uses SDL_UpdateRects() properly, and does not draw in any region outside those rects.
+# This improves drawing speed, but I know only one application that does that, and it's written by me (y)/(n)
+CompatibilityHacksProperUsageOfSDL_UpdateRects=
+
+# Application uses mouse (y) or (n), this will show mouse emulation dialog to the user
+AppUsesMouse=y
+
+# Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n)
+AppNeedsTwoButtonMouse=y
+
+# Right mouse button can do long-press/drag&drop action, necessary for some games (y) or (n)
+# If you disable it, swiping with two fingers will send mouse wheel events
+RightMouseButtonLongPress=
+
+# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n)
+ShowMouseCursor=n
+
+# Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n)
+GenerateSubframeTouchEvents=
+
+# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n)
+ForceRelativeMouseMode=n
+
+# Application needs arrow keys (y) or (n), will show on-screen dpad/joystick (y) or (n)
+AppNeedsArrowKeys=n
+
+# Application needs text input (y) or (n), enables button for text input on screen
+AppNeedsTextInput=y
+
+# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1
+AppUsesJoystick=n
+
+# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n)
+AppUsesSecondJoystick=n
+
+# Application uses third on-screen joystick, as SDL joystick 0 axes 20-21 (y)/(n)
+AppUsesThirdJoystick=
+
+# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7
+AppUsesAccelerometer=n
+
+# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4
+AppUsesGyroscope=
+
+# Use gyroscope to move mouse cursor (y) or (n), it eats battery, and can be disabled in settings, do not use with AppUsesGyroscope setting
+MoveMouseWithGyroscope=
+
+# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0
+AppUsesMultitouch=y
+
+# Application records audio (it will use any available source, such a s microphone)
+# API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void);
+# This option will add additional permission to Android manifest (y)/(n)
+AppRecordsAudio=
+
+# Application needs to access SD card. If your data files are bigger than 5 Mb, enable it. (y) / (n)
+AccessSdCard=
+
+# Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n)
+AccessInternet=
+
+# Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n)
+ImmersiveMode=
+
+# Application implements Android-specific routines to put to background, and will not draw anything to screen
+# between SDL_ACTIVEEVENT lost / gained notifications - you should check for them
+# rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n)
+# This option is reported to be buggy, sometimes failing to restore video state
+NonBlockingSwapBuffers=n
+
+# Redefine common hardware keys to SDL keysyms
+# BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent
+# SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices
+# Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys are 3-rd and 4-th)
+# Keys: TOUCHSCREEN (works only when AppUsesMouse=n), DPAD_CENTER/SEARCH, VOLUMEUP, VOLUMEDOWN, MENU, BACK, CAMERA
+RedefinedKeys="SPACE RETURN NO_REMAP NO_REMAP SPACE ESCAPE"
+
+# Number of virtual keyboard keys (currently 6 is maximum)
+AppTouchscreenKeyboardKeysAmount=0
+
+# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right)
+RedefinedKeysScreenKb="0 1 2 3 4 5 6 7 8 9"
+
+# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu
+RedefinedKeysScreenKbNames=""
+
+# On-screen keys theme
+# 0 = Ultimate Droid by Sean Stieber (green, with gamepad joystick)
+# 1 = Simple Theme by Beholder (white, with gamepad joystick)
+# 2 = Sun by Sirea (yellow, with round joystick)
+# 3 = Keen by Gerstrong (multicolor, with round joystick)
+TouchscreenKeysTheme=2
+
+# Redefine gamepad keys to SDL keysyms, button order is:
+# A B X Y L1 R1 L2 R2 LThumb RThumb
+RedefinedKeysGamepad=""
+
+# How long to show startup menu button, in msec, 0 to disable startup menu
+StartupMenuButtonTimeout=500
+
+# Menu items to hide from startup menu, available menu items:
+# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout
+HiddenMenuOptions=''
+
+# Menu items to show at startup - this is Java code snippet, leave empty for default
+# new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration()
+# Available menu items:
+# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout
+FirstStartMenuOptions='SettingsMenu.DummyMenu'
+
+# Enable multi-ABI binary, with hardware FPU support - it will also work on old devices,
+# but .apk size is 2x bigger (y) / (n) / (x86) / (all)
+MultiABI='armeabi-v7a'
+
+# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower
+AppMinimumRAM=0
+
+# Optional shared libraries to compile - removing some of them will save space
+# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed
+# Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2
+CompiledLibraries="sdl_mixer sdl_image"
+
+# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n)
+CustomBuildScript=n
+
+# Aditional CFLAGS for application
+AppCflags='-O2 -finline-functions'
+
+# Additional LDFLAGS for application
+AppLdflags=''
+
+# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable
+AppOverlapsSystemHeaders=
+
+# Build only following subdirs (empty will build all dirs, ignored with custom script)
+AppSubdirsBuild=''
+
+# Exclude these files from build
+AppBuildExclude=''
+
+# Application command line parameters, including app name as 0-th param
+AppCmdline=''
+
+# Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens
+# Minimum screen size that application supports: (s)mall / (m)edium / (l)arge
MinimumScreenSize=s
+
+# Your AdMob Publisher ID, (n) if you don't want advertisements
AdmobPublisherId=a14fe4dd0ebe974
+
+# Your AdMob test device ID, to receive a test ad
AdmobTestDeviceId=66133194946FB6C1CD0ED2EFCCB82539
-AdmobBannerSize=BANNER
+
+# Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER/FULL_WIDTH:Height/Width:AUTO_HEIGHT/Width:Height)
+AdmobBannerSize=400:AUTO_HEIGHT
diff --git a/project/jni/application/test-advertisements/ballfield.cpp b/project/jni/application/test-advertisements/ballfield.cpp
index 9283bb863..bf6ed0957 100644
--- a/project/jni/application/test-advertisements/ballfield.cpp
+++ b/project/jni/application/test-advertisements/ballfield.cpp
@@ -534,9 +534,7 @@ int main(int argc, char* argv[])
int touchPointers[MAX_POINTERS][5];
memset(touchPointers, 0, sizeof(touchPointers));
- SDL_Joystick * joysticks[MAX_POINTERS+1];
- for(i=0; i 0 && adSize.h > 0)
+ {
+ adX = abs(x_offs / 100) % (physicalW - adSize.w);
+ adY = abs(y_offs / 80) % (physicalH - adSize.h);
+ SDL_ANDROID_SetAdvertisementPosition(adX, adY);
+ }
}
SDL_Rect adRect;
adRect.x = adX * SCREEN_W / physicalW;
diff --git a/project/jni/sdl-1.2/src/video/android/SDL_androidvideo.c b/project/jni/sdl-1.2/src/video/android/SDL_androidvideo.c
index 50916ea0e..2baf3414d 100644
--- a/project/jni/sdl-1.2/src/video/android/SDL_androidvideo.c
+++ b/project/jni/sdl-1.2/src/video/android/SDL_androidvideo.c
@@ -426,6 +426,7 @@ void SDLCALL SDL_ANDROID_GetClipboardText(char * buf, int len)
int SDLCALL SDL_ANDROID_GetAdvertisementParams(int * visible, SDL_Rect * position)
{
jint arr[5];
+ (*JavaEnv)->PushLocalFrame( JavaEnv, 1 );
jintArray elemArr = (*JavaEnv)->NewIntArray(JavaEnv, 5);
if (elemArr == NULL)
return 0;
@@ -433,6 +434,7 @@ int SDLCALL SDL_ANDROID_GetAdvertisementParams(int * visible, SDL_Rect * positio
(*JavaEnv)->CallVoidMethod(JavaEnv, JavaRenderer, JavaGetAdvertisementParams, elemArr);
(*JavaEnv)->GetIntArrayRegion(JavaEnv, elemArr, 0, 5, arr);
(*JavaEnv)->DeleteLocalRef(JavaEnv, elemArr);
+ (*JavaEnv)->PopLocalFrame( JavaEnv, NULL );
if(visible)
*visible = arr[0];
if(position)