# HG changeset patch # User Xeli # Date 1317989827 -7200 # Node ID bdd0528ee8a67da2f0bc8cfe5bd7d02adec78c29 # Parent 6bcc36225162b237cfdc0006232f6db035de84b3 Close a game without leaking memory. It should be noted that sending an SDL Quit event leaks memory diff -r 6bcc36225162 -r bdd0528ee8a6 hedgewars/PascalExports.pas --- a/hedgewars/PascalExports.pas Tue Oct 04 19:20:42 2011 +0200 +++ b/hedgewars/PascalExports.pas Fri Oct 07 14:17:07 2011 +0200 @@ -35,6 +35,7 @@ function HW_getNumberOfWeapons:LongInt; cdecl; export; function HW_getMaxNumberOfTeams:LongInt; cdecl; export; function HW_getMaxNumberOfHogs:LongInt; cdecl; export; +procedure HW_terminate(closeFrontend: Boolean); cdecl; export; implementation {$IFDEF HWLIBRARY} diff -r 6bcc36225162 -r bdd0528ee8a6 hedgewars/hwLibrary.pas --- a/hedgewars/hwLibrary.pas Tue Oct 04 19:20:42 2011 +0200 +++ b/hedgewars/hwLibrary.pas Fri Oct 07 14:17:07 2011 +0200 @@ -50,7 +50,8 @@ GenLandPreview name Java_Prefix + 'GenLandPreview', HW_getNumberOfweapons name Java_Prefix + 'HWgetNumberOfWeapons', HW_getMaxNumberOfHogs name Java_Prefix + 'HWgetMaxNumberOfHogs', - HW_getMaxNumberOfTeams name Java_Prefix + 'HWgetMaxNumberOfTeams'; + HW_getMaxNumberOfTeams name Java_Prefix + 'HWgetMaxNumberOfTeams', + HW_terminate name Java_Prefix + 'HWterminate'; {$ENDIF} begin diff -r 6bcc36225162 -r bdd0528ee8a6 project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/EngineProtocol/PascalExports.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/EngineProtocol/PascalExports.java Tue Oct 04 19:20:42 2011 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/EngineProtocol/PascalExports.java Fri Oct 07 14:17:07 2011 +0200 @@ -36,5 +36,5 @@ public static native int HWgetNumberOfWeapons(); public static native int HWgetMaxNumberOfTeams(); public static native int HWgetMaxNumberOfHogs(); - + public static native int HWterminate(boolean b); } diff -r 6bcc36225162 -r bdd0528ee8a6 project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/SDLActivity.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/SDLActivity.java Tue Oct 04 19:20:42 2011 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/SDLActivity.java Fri Oct 07 14:17:07 2011 +0200 @@ -8,6 +8,7 @@ import org.hedgewars.mobile.EngineProtocol.EngineProtocolNetwork; import org.hedgewars.mobile.EngineProtocol.GameConfig; +import org.hedgewars.mobile.EngineProtocol.PascalExports; import org.hedgewars.mobile.TouchInterface.TouchInterface; import android.app.Activity; @@ -346,7 +347,8 @@ Log.v("SDL", "surfaceDestroyed()"); // Send a quit message to the application - SDLActivity.nativeQuit(); + //SDLActivity.nativeQuit(); + PascalExports.HWterminate(true); // Now wait for the SDL thread to quit if (mSDLThread != null) { @@ -520,7 +522,7 @@ if (event.getAction() == KeyEvent.ACTION_DOWN) { Log.v("SDL", "key down: " + keyCode); if(keyCode == KeyEvent.KEYCODE_BACK){//TODO ask user to quit or not - SDLActivity.nativeQuit(); + PascalExports.HWterminate(true); //SDLActivity.mSingleton.finish(); }else{ SDLActivity.onNativeKeyDown(keyCode);