From d8772156a7d415a4bccc82d35bd9ffee877fc57b Mon Sep 17 00:00:00 2001 From: root Date: Wed, 6 Aug 2014 00:46:21 +0400 Subject: [PATCH] fixe all code v 2 --- CMakeLists.txt | 8 +- apps/openmw/CMakeLists.txt | 57 +- .../{SDL_android_main.c => android_main.c} | 18 +- apps/openmw/engine.cpp | 4 +- apps/openmw/main.cpp | 5 + cmake/FindOGRE.cmake | 4 +- components/CMakeLists.txt | 2 +- components/files/androidpath.cpp | 170 +++ components/files/androidpath.hpp | 57 + components/files/fixedpath.hpp | 6 +- components/files/linuxpath.cpp | 46 +- components/ogreinit/ogreinit.cpp | 2 +- eclipse-project/.classpath | 9 - eclipse-project/AndroidManifest.xml | 46 - eclipse-project/ant.properties | 17 - eclipse-project/bin/AndroidManifest.xml | 46 - eclipse-project/bin/classes.dex | Bin 30620 -> 0 bytes .../classes/org/libsdl/app/BuildConfig.class | Bin 337 -> 0 bytes .../classes/org/libsdl/app/DummyEdit.class | Bin 2166 -> 0 bytes .../bin/classes/org/libsdl/app/R$attr.class | Bin 328 -> 0 bytes .../classes/org/libsdl/app/R$drawable.class | Bin 396 -> 0 bytes .../bin/classes/org/libsdl/app/R$layout.class | Bin 382 -> 0 bytes .../bin/classes/org/libsdl/app/R$string.class | Bin 386 -> 0 bytes .../bin/classes/org/libsdl/app/R.class | Bin 465 -> 0 bytes .../org/libsdl/app/SDLActivity$1.class | Bin 1137 -> 0 bytes .../app/SDLActivity$SDLCommandHandler.class | Bin 2009 -> 0 bytes .../app/SDLActivity$ShowTextInputTask.class | Bin 1909 -> 0 bytes .../classes/org/libsdl/app/SDLActivity.class | Bin 11901 -> 0 bytes .../app/SDLGenericMotionListener_API12.class | Bin 770 -> 0 bytes .../org/libsdl/app/SDLInputConnection.class | Bin 1787 -> 0 bytes .../org/libsdl/app/SDLJoystickHandler.class | Bin 535 -> 0 bytes ...oystickHandler_API12$RangeComparator.class | Bin 1035 -> 0 bytes ...SDLJoystickHandler_API12$SDLJoystick.class | Bin 728 -> 0 bytes .../libsdl/app/SDLJoystickHandler_API12.class | Bin 4307 -> 0 bytes .../bin/classes/org/libsdl/app/SDLMain.class | Bin 732 -> 0 bytes .../classes/org/libsdl/app/SDLSurface$1.class | Bin 1017 -> 0 bytes .../classes/org/libsdl/app/SDLSurface.class | Bin 7698 -> 0 bytes ...tions-2ba65cb4f94dbc226915dbfb39e51358.jar | Bin 943 -> 0 bytes eclipse-project/bin/jarlist.cache | 3 - .../res/crunch/drawable-hdpi/ic_launcher1.png | Bin 6199 -> 0 bytes .../res/crunch/drawable-mdpi/ic_launcher1.png | Bin 3281 -> 0 bytes .../crunch/drawable-xhdpi/ic_launcher1.png | Bin 9504 -> 0 bytes .../crunch/drawable-xxhdpi/ic_launcher1.png | Bin 18387 -> 0 bytes eclipse-project/bin/resources.ap_ | Bin 40701 -> 0 bytes eclipse-project/build.properties | 17 - eclipse-project/build.xml | 93 -- eclipse-project/default.properties | 11 - .../gen/org/libsdl/app/BuildConfig.java | 6 - eclipse-project/gen/org/libsdl/app/R.java | 22 - eclipse-project/jni/Android.mk | 1 - eclipse-project/jni/Application.mk | 6 - eclipse-project/jni/src/Android.mk | 19 - eclipse-project/jni/src/Android_static.mk | 12 - eclipse-project/proguard-project.txt | 20 - eclipse-project/project.properties | 14 - .../res/drawable-hdpi/ic_launcher1.png | Bin 6082 -> 0 bytes .../res/drawable-mdpi/ic_launcher1.png | Bin 3083 -> 0 bytes .../res/drawable-xhdpi/ic_launcher1.png | Bin 9576 -> 0 bytes .../res/drawable-xxhdpi/ic_launcher1.png | Bin 19165 -> 0 bytes eclipse-project/res/layout/main.xml | 13 - eclipse-project/res/values/strings.xml | 4 - .../src/org/libsdl/app/SDLActivity.java | 1211 ----------------- extern/sdl4ogre/sdlwindowhelper.cpp | 12 +- 63 files changed, 276 insertions(+), 1685 deletions(-) rename apps/openmw/{SDL_android_main.c => android_main.c} (62%) create mode 100644 components/files/androidpath.cpp create mode 100644 components/files/androidpath.hpp delete mode 100644 eclipse-project/.classpath delete mode 100644 eclipse-project/AndroidManifest.xml delete mode 100644 eclipse-project/ant.properties delete mode 100644 eclipse-project/bin/AndroidManifest.xml delete mode 100644 eclipse-project/bin/classes.dex delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/BuildConfig.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/DummyEdit.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/R$attr.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/R$drawable.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/R$layout.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/R$string.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/R.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLActivity$1.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLActivity$SDLCommandHandler.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLActivity$ShowTextInputTask.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLActivity.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLGenericMotionListener_API12.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLInputConnection.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLJoystickHandler.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLJoystickHandler_API12$RangeComparator.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLJoystickHandler_API12$SDLJoystick.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLJoystickHandler_API12.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLMain.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLSurface$1.class delete mode 100644 eclipse-project/bin/classes/org/libsdl/app/SDLSurface.class delete mode 100644 eclipse-project/bin/dexedLibs/annotations-2ba65cb4f94dbc226915dbfb39e51358.jar delete mode 100644 eclipse-project/bin/jarlist.cache delete mode 100644 eclipse-project/bin/res/crunch/drawable-hdpi/ic_launcher1.png delete mode 100644 eclipse-project/bin/res/crunch/drawable-mdpi/ic_launcher1.png delete mode 100644 eclipse-project/bin/res/crunch/drawable-xhdpi/ic_launcher1.png delete mode 100644 eclipse-project/bin/res/crunch/drawable-xxhdpi/ic_launcher1.png delete mode 100644 eclipse-project/bin/resources.ap_ delete mode 100644 eclipse-project/build.properties delete mode 100644 eclipse-project/build.xml delete mode 100644 eclipse-project/default.properties delete mode 100644 eclipse-project/gen/org/libsdl/app/BuildConfig.java delete mode 100644 eclipse-project/gen/org/libsdl/app/R.java delete mode 100644 eclipse-project/jni/Android.mk delete mode 100644 eclipse-project/jni/Application.mk delete mode 100644 eclipse-project/jni/src/Android.mk delete mode 100644 eclipse-project/jni/src/Android_static.mk delete mode 100644 eclipse-project/proguard-project.txt delete mode 100644 eclipse-project/project.properties delete mode 100644 eclipse-project/res/drawable-hdpi/ic_launcher1.png delete mode 100644 eclipse-project/res/drawable-mdpi/ic_launcher1.png delete mode 100644 eclipse-project/res/drawable-xhdpi/ic_launcher1.png delete mode 100644 eclipse-project/res/drawable-xxhdpi/ic_launcher1.png delete mode 100644 eclipse-project/res/layout/main.xml delete mode 100644 eclipse-project/res/values/strings.xml delete mode 100644 eclipse-project/src/org/libsdl/app/SDLActivity.java diff --git a/CMakeLists.txt b/CMakeLists.txt index c0d3c8f03..3cd9a147c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,10 +62,6 @@ if (NOT ANDROID) ADD_DEFINITIONS(-DNOT_ANDROID) endif() -if (ANDROID) -ADD_DEFINITIONS(-DBUILD_ANDROID) -endif() - # doxygen main page @@ -248,10 +244,10 @@ if(OGRE_STATIC) if (ANDROID) add_static_ogre_plugin(RenderSystem_GLES2) -endif (ANDROID) -if (NOT ANDROID) +else () add_static_ogre_plugin(RenderSystem_GL) endif () + if(WIN32) add_static_ogre_plugin(RenderSystem_Direct3D9) endif(WIN32) diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index 2fb4f793f..7bb9da63b 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -1,30 +1,18 @@ # local files -if (ANDROID) -set(GAME - main.cpp - SDL_android_main.c - engine.cpp -) -endif (ANDROID) -if (NOT ANDROID) set(GAME main.cpp +#ifdef ANDROID +android_main.c +#endif engine.cpp ) -endif () -if(NOT WIN32 AND NOT ANDROID) - set(GAME ${GAME} crashcatcher.cpp) -endif() -if (NOT ANDROID) -ADD_DEFINITIONS(-DNOT_ANDROID) -endif() -if (ANDROID) -ADD_DEFINITIONS(-DBUILD_ANDROID) +if(NOT WIN32 OR NOT ANDROID) + set(GAME ${GAME} crashcatcher.cpp) endif() @@ -106,8 +94,7 @@ add_openmw_dir (mwbase # Main executable if (ANDROID) set(BOOST_COMPONENTS system filesystem program_options thread wave atomic) -endif (ANDROID) -if (NOT ANDROID) +else () set(BOOST_COMPONENTS system filesystem program_options thread wave) endif () if(WIN32) @@ -123,9 +110,8 @@ add_executable(openmw ${GAME} ${GAME_HEADER} ${APPLE_BUNDLE_RESOURCES} ) -endif () +else () -if (ANDROID) add_library(openmw SHARED ${OPENMW_LIBS} ${OPENMW_LIBS_HEADER} ${OPENMW_FILES} @@ -133,7 +119,7 @@ add_library(openmw SHARED ${APPLE_BUNDLE_RESOURCES} ) -endif (ANDROID) +endif () # Sound stuff - here so CMake doesn't stupidly recompile EVERYTHING # when we change the backend. @@ -156,36 +142,14 @@ target_link_libraries(openmw ) if (ANDROID) -target_link_libraries(openmw -${OGRE_STATIC_PLUGINS} -) + target_link_libraries(openmw +${OGRE_STATIC_PLUGINS} EGL android log dl -) -target_link_libraries(openmw -boost_atomic -boost_chrono -boost_date_time -boost_filesystem -boost_program_options -boost_system -boost_thread -boost_wave -) -target_link_libraries(openmw -FreeImage -freetype -) - -target_link_libraries(openmw -OgreMainStatic -) - -target_link_libraries(openmw MyGUI.OgrePlatform MyGUIEngineStatic Plugin_StrangeButtonStatic @@ -194,6 +158,7 @@ BulletCollision BulletDynamics LinearMath ) + endif (ANDROID) if (USE_SYSTEM_TINYXML) diff --git a/apps/openmw/SDL_android_main.c b/apps/openmw/android_main.c similarity index 62% rename from apps/openmw/SDL_android_main.c rename to apps/openmw/android_main.c index 5586512dc..76da91c4f 100644 --- a/apps/openmw/SDL_android_main.c +++ b/apps/openmw/android_main.c @@ -1,11 +1,7 @@ -/* - SDL_android_main.c, placed in the public domain by Sam Lantinga 3/13/14 -*/ + #include "../../SDL_internal.h" #ifdef __ANDROID__ - -/* Include the SDL main definition header */ #include "SDL_main.h" @@ -14,24 +10,19 @@ *******************************************************************************/ #include -/* Called before SDL_main() to initialize JNI bindings in SDL library */ +/* Called before to initialize JNI bindings */ -//extern void SDL_Android_Init(JNIEnv* env, jclass cls); extern void SDL_Android_Init(JNIEnv* env, jclass cls); -/* Start up the SDL app */ + int Java_org_libsdl_app_SDLActivity_nativeInit(JNIEnv* env, jclass cls, jobject obj) { - /* This interface could expand with ABI negotiation, calbacks, etc. */ + SDL_Android_Init(env, cls); SDL_SetMainReady(); - - //DL_SetHint(SDL_HINT_RENDER_DRIVER, "software"); - - // SDL_SetHint(SDL_HINT_SIMULATE_INPUT_EVENTS, "0"); /* Run the application code! */ @@ -50,4 +41,3 @@ int Java_org_libsdl_app_SDLActivity_nativeInit(JNIEnv* env, jclass cls, jobject #endif /* __ANDROID__ */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index 66eae5f5d..731efaa6b 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -192,7 +192,9 @@ OMW::Engine::Engine(Files::ConfigurationManager& configurationManager) //kindly ask SDL not to trash our OGL context //might this be related to http://bugzilla.libsdl.org/show_bug.cgi?id=748 ? SDL_SetHint(SDL_HINT_RENDER_DRIVER, "software"); + SDL_SetMainReady(); + if(SDL_Init(flags) != 0) { throw std::runtime_error("Could not initialize SDL! " + std::string(SDL_GetError())); @@ -576,4 +578,4 @@ void OMW::Engine::setScriptBlacklist (const std::vector& list) void OMW::Engine::setScriptBlacklistUse (bool use) { mScriptBlacklistUse = use; -} \ No newline at end of file +} diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index 6c699bed1..fb26612df 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -21,6 +21,7 @@ #endif + #if OGRE_PLATFORM == OGRE_PLATFORM_LINUX || OGRE_PLATFORM == OGRE_PLATFORM_APPLE #include extern int cc_install_handlers(int argc, char **argv, int num_signals, int *sigs, const char *logfile, int (*user_info)(char*, char*)); @@ -405,3 +406,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine return main(__argc, __argv); } #endif + + + + diff --git a/cmake/FindOGRE.cmake b/cmake/FindOGRE.cmake index 844ee09a3..b065fff89 100644 --- a/cmake/FindOGRE.cmake +++ b/cmake/FindOGRE.cmake @@ -263,14 +263,14 @@ if (ANDROID) ${FreeImage_LIBRARIES} ${FREETYPE_LIBRARIES} ${Cocoa_LIBRARIES} ${Carbon_LIBRARIES}) -endif (ANDROID) -if (NOT ANDROID) +else () set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${OGRE_LIBRARY_FWK} ${ZZip_LIBRARIES} ${ZLIB_LIBRARIES} ${FreeImage_LIBRARIES} ${FREETYPE_LIBRARIES} ${X11_LIBRARIES} ${X11_Xt_LIBRARIES} ${XAW_LIBRARY} ${X11_Xrandr_LIB} ${Cocoa_LIBRARIES} ${Carbon_LIBRARIES}) endif() + if (NOT ZLIB_FOUND OR NOT ZZip_FOUND) set(OGRE_DEPS_FOUND FALSE) endif () diff --git a/components/CMakeLists.txt b/components/CMakeLists.txt index efe432227..e47fbce7d 100644 --- a/components/CMakeLists.txt +++ b/components/CMakeLists.txt @@ -50,7 +50,7 @@ add_component_dir (misc ) add_component_dir (files - linuxpath windowspath macospath fixedpath multidircollection collections configurationmanager + linuxpath androidpath windowspath macospath fixedpath multidircollection collections configurationmanager constrainedfiledatastream lowlevelfile ) diff --git a/components/files/androidpath.cpp b/components/files/androidpath.cpp new file mode 100644 index 000000000..e1443342e --- /dev/null +++ b/components/files/androidpath.cpp @@ -0,0 +1,170 @@ +#include "androidpath.hpp" + +#if defined(__ANDROID__) + +#include +#include +#include +#include +#include + + +namespace +{ + boost::filesystem::path getUserHome() + { + const char* dir = getenv("HOME"); + if (dir == NULL) + { + struct passwd* pwd = getpwuid(getuid()); + if (pwd != NULL) + { + dir = pwd->pw_dir; + } + } + if (dir == NULL) + return boost::filesystem::path(); + else + return boost::filesystem::path(dir); + } + + boost::filesystem::path getEnv(const std::string& envVariable, const boost::filesystem::path& fallback) + { + const char* result = getenv(envVariable.c_str()); + if (!result) + return fallback; + boost::filesystem::path dir(result); + if (dir.empty()) + return fallback; + else + return dir; + } +} + +/** + * \namespace Files + */ +namespace Files +{ + +AndroidPath::AndroidPath(const std::string& application_name) + : mName(application_name) +{ +} + +boost::filesystem::path AndroidPath::getUserConfigPath() const +{ + + return getEnv("XDG_CONFIG_HOME", "/sdcard/morrowind/config") / mName; + +} + +boost::filesystem::path AndroidPath::getUserDataPath() const +{ + + + return getEnv("XDG_DATA_HOME", "/sdcard/morrowind/share") / mName; + +} + +boost::filesystem::path AndroidPath::getCachePath() const +{ + + return getEnv("XDG_CACHE_HOME", "/sdcard/morrowind/cache") / mName; + +} + +boost::filesystem::path AndroidPath::getGlobalConfigPath() const +{ + boost::filesystem::path globalPath("/sdcard/morrowind/"); + +return globalPath / mName; +} + +boost::filesystem::path AndroidPath::getLocalPath() const +{ + return boost::filesystem::path("./"); +} + +boost::filesystem::path AndroidPath::getGlobalDataPath() const +{ + + boost::filesystem::path globalDataPath("/sdcard/morrowind/data"); + +return globalDataPath / mName; +} + +boost::filesystem::path AndroidPath::getInstallPath() const +{ + boost::filesystem::path installPath; + + boost::filesystem::path homePath = getUserHome(); + + if (!homePath.empty()) + { + boost::filesystem::path wineDefaultRegistry(homePath); + wineDefaultRegistry /= ".wine/system.reg"; + + if (boost::filesystem::is_regular_file(wineDefaultRegistry)) + { + boost::filesystem::ifstream file(wineDefaultRegistry); + bool isRegEntry = false; + std::string line; + std::string mwpath; + + while (std::getline(file, line)) + { + if (line[0] == '[') // we found an entry + { + if (isRegEntry) + { + break; + } + + isRegEntry = (line.find("Softworks\\\\Morrowind]") != std::string::npos); + } + else if (isRegEntry) + { + if (line[0] == '"') // empty line means new registry key + { + std::string key = line.substr(1, line.find('"', 1) - 1); + if (strcasecmp(key.c_str(), "Installed Path") == 0) + { + std::string::size_type valuePos = line.find('=') + 2; + mwpath = line.substr(valuePos, line.rfind('"') - valuePos); + + std::string::size_type pos = mwpath.find("\\"); + while (pos != std::string::npos) + { + mwpath.replace(pos, 2, "/"); + pos = mwpath.find("\\", pos + 1); + } + break; + } + } + } + } + + if (!mwpath.empty()) + { + // Change drive letter to lowercase, so we could use + // ~/.wine/dosdevices symlinks + mwpath[0] = tolower(mwpath[0]); + installPath /= homePath; + installPath /= ".wine/dosdevices/"; + installPath /= mwpath; + + if (!boost::filesystem::is_directory(installPath)) + { + installPath.clear(); + } + } + } + } + + return installPath; +} + +} /* namespace Files */ + +#endif /* defined(__linux__) || defined(__FreeBSD__) */ diff --git a/components/files/androidpath.hpp b/components/files/androidpath.hpp new file mode 100644 index 000000000..cee1cc0a6 --- /dev/null +++ b/components/files/androidpath.hpp @@ -0,0 +1,57 @@ +#ifndef COMPONENTS_FILES_LINUXPATH_H +#define COMPONENTS_FILES_LINUXPATH_H + +#if defined(__ANDROID__) + +#include +/** + * \namespace Files + */ +namespace Files +{ + +struct AndroidPath +{ + AndroidPath(const std::string& application_name); + + /** + * \brief Return path to the user directory. + */ + boost::filesystem::path getUserConfigPath() const; + + boost::filesystem::path getUserDataPath() const; + + /** + * \brief Return path to the global (system) directory where config files can be placed. + */ + boost::filesystem::path getGlobalConfigPath() const; + + /** + * \brief Return path to the runtime configuration directory which is the + * place where an application was started. + */ + boost::filesystem::path getLocalPath() const; + + /** + * \brief Return path to the global (system) directory where game files can be placed. + */ + boost::filesystem::path getGlobalDataPath() const; + + /** + * \brief + */ + boost::filesystem::path getCachePath() const; + + /** + * \brief Gets the path of the installed Morrowind version if there is one. + */ + boost::filesystem::path getInstallPath() const; + + std::string mName; +}; + +} /* namespace Files */ + +#endif /* defined(__linux__) || defined(__FreeBSD__) */ + +#endif /* COMPONENTS_FILES_LINUXPATH_H */ diff --git a/components/files/fixedpath.hpp b/components/files/fixedpath.hpp index cfd3458ce..45ad3238f 100644 --- a/components/files/fixedpath.hpp +++ b/components/files/fixedpath.hpp @@ -4,10 +4,12 @@ #include #include -#if defined(__linux__) || defined(__FreeBSD__) +#if defined(__UNIX__) || defined(__FreeBSD__) #include namespace Files { typedef LinuxPath TargetPathType; } - +#elif defined (__ANDROID__) + #include + namespace Files { typedef AndroidPath TargetPathType; } #elif defined(__WIN32) || defined(__WINDOWS__) || defined(_WIN32) #include namespace Files { typedef WindowsPath TargetPathType; } diff --git a/components/files/linuxpath.cpp b/components/files/linuxpath.cpp index c59f4065d..151b0a695 100644 --- a/components/files/linuxpath.cpp +++ b/components/files/linuxpath.cpp @@ -58,51 +58,33 @@ LinuxPath::LinuxPath(const std::string& application_name) boost::filesystem::path LinuxPath::getUserConfigPath() const { -#ifdef NOT_ANDROID + return getEnv("XDG_CONFIG_HOME", getUserHome() / ".config") / mName; -#endif -//else -#ifdef BUILD_ANDROID - return getEnv("XDG_CONFIG_HOME", "/sdcard/morrowind/config") / mName; -#endif + + + } boost::filesystem::path LinuxPath::getUserDataPath() const { -//if (flag==false) -#ifdef NOT_ANDROID + return getEnv("XDG_DATA_HOME", getUserHome() / ".local/share") / mName; -#endif -//else -#ifdef BUILD_ANDROID - return getEnv("XDG_DATA_HOME", "/sdcard/morrowind/share") / mName; -#endif + } boost::filesystem::path LinuxPath::getCachePath() const { -//if (flag==false) -#ifdef NOT_ANDROID + return getEnv("XDG_CACHE_HOME", getUserHome() / ".cache") / mName; -#endif -//else -#ifdef BUILD_ANDROID - return getEnv("XDG_CACHE_HOME", "/sdcard/morrowind/cache") / mName; -#endif } boost::filesystem::path LinuxPath::getGlobalConfigPath() const { -//if (flag==false) -#ifdef NOT_ANDROID + boost::filesystem::path globalPath("/etc/"); -#endif -//else -#ifdef BUILD_ANDROID - boost::filesystem::path globalPath("/sdcard/morrowind/"); -#endif + return globalPath / mName; } @@ -113,15 +95,9 @@ boost::filesystem::path LinuxPath::getLocalPath() const boost::filesystem::path LinuxPath::getGlobalDataPath() const { -//if (flag==false) -#ifdef NOT_ANDROID - + boost::filesystem::path globalDataPath("/usr/share/games/"); -#endif -//else -#ifdef BUILD_ANDROID - boost::filesystem::path globalDataPath("/sdcard/morrowind/data"); -#endif + return globalDataPath / mName; } diff --git a/components/ogreinit/ogreinit.cpp b/components/ogreinit/ogreinit.cpp index 8d316468e..cbf8a9b0b 100644 --- a/components/ogreinit/ogreinit.cpp +++ b/components/ogreinit/ogreinit.cpp @@ -95,7 +95,7 @@ namespace OgreInit Ogre::Root* OgreInit::init(const std::string &logPath) { - #ifdef NOT_ANDROID + #ifdef NOT ANDROID // Set up logging first new Ogre::LogManager; diff --git a/eclipse-project/.classpath b/eclipse-project/.classpath deleted file mode 100644 index 51769745b..000000000 --- a/eclipse-project/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/eclipse-project/AndroidManifest.xml b/eclipse-project/AndroidManifest.xml deleted file mode 100644 index 834995717..000000000 --- a/eclipse-project/AndroidManifest.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/eclipse-project/ant.properties b/eclipse-project/ant.properties deleted file mode 100644 index b0971e891..000000000 --- a/eclipse-project/ant.properties +++ /dev/null @@ -1,17 +0,0 @@ -# This file is used to override default values used by the Ant build system. -# -# This file must be checked into Version Control Systems, as it is -# integral to the build system of your project. - -# This file is only used by the Ant script. - -# You can use this to override default values such as -# 'source.dir' for the location of your java source folder and -# 'out.dir' for the location of your output folder. - -# You can also use it define how the release builds are signed by declaring -# the following properties: -# 'key.store' for the location of your keystore and -# 'key.alias' for the name of the key to use. -# The password will be asked during the build when you use the 'release' target. - diff --git a/eclipse-project/bin/AndroidManifest.xml b/eclipse-project/bin/AndroidManifest.xml deleted file mode 100644 index 834995717..000000000 --- a/eclipse-project/bin/AndroidManifest.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/eclipse-project/bin/classes.dex b/eclipse-project/bin/classes.dex deleted file mode 100644 index 37732412a152accb7e9fdb66cc6a9343036f0d19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30620 zcmeI43wWGWwfEQizH`Yv)9F2>?es!Pp=r}AX_H>kCZ%c83rTuQfOL{fn`x7oBs1xS zYg>U94vV)6RCu5Ef)C;v|^aZDCp~BL>_4s(RAsR zBD=vs@F8#m_!#&MxC49%JOmyAPk@)e+aTvG@&Z%9>7WeE1{Gj2*a6N57lHlYGH@lh z27Dac0uF;az+K>Oa3A;@_y%|wdBl?g9^kcRbB!H3HSgw1g-|xflq*2!56?+zDWDY00}Y@Bbb@X$04@brgB!uWf?L2H;OpRF@C0}Uya;{;-UWH*iHrc#!91`S ztO8rWPOuy716P5Yz-{0w;NQTb;0bU9{1p5WybAsRtTvJ1U>cYYszD=Y13STf@FDOy z@HOx)@LlkI@B;Wx;M+=HgK=OUSPB|IGl+q1uoqkot_Qb*FN1G@AAp~Mzk<9d{tHY8 z)u0vZ04Z=WI0UW(hrt)Y!{7*b6BM^&doU492Q$E2Pzh>56NrJm;Dg{Z;OpQS@H=32 zkRFtQ8n7B{261o!*blA+9|O05yTRAN6W}@U68J561N<5IJMkCbR8S5UgL<$TYz5um zVsH((8GI2u29AKYKp=)622(*9r~>t%1#AV|K@ZpkE&`W<4}yfLx*7U^JKn z&Hyt&8JG!XfpRb#%mH)3JTMZ~?dwTm&u# zmwKR5tB04@cWfy==`a0pxht^^+hSAl;4SA)-iuYqraN5G@tJK!#ff;Pzq`&S9u-3T2Ix{@vD!@l~=jep#o&`tc2G`<;tsE^HaXt%TswxtNB!U zyym|I=%c*O1AV3d-VaD1VNZzw)YoI#l_m;k7U`egb!^<>@h`&P>G3*FzTok1!++7^ zb1?juJbncHT^_#*{>vVJ4*XXtj<5gKY_rTxh z<^N!o{&(T;_vG5wnYtax;@^T-pAiH4d>tsSefOZpYrp)P$4|}TXTU$~$*+R{rpMn5 z{|%2<+h+Ltv-odi>4&Jpw>{+k^XN81&z0?lPL;T!%Vme5Ez)ghhx8aaSrX7TR`8c7r;Yl( zY3OQMVdP6?0J@d$YMZ5jt7#d(F5+L6ICH&FQ zWpW5Tm4DEqANJ^{JbH_v&GK188{}uu9CkY8&^+>;11)3~9cAb_@`#~J<-edsj1Voa z2)$wxb|h?QP$qfdGdw!e&~kauqrWk*Xhg&XE_P zQ`uQQP5P;E&O^E^W9M{(wjQq+5bT-laZE*j=2Cd?_u}{Fbr$Ydx3Y`JOSf)T7fq zdb&r?@TgnwYSNucKFisKYx?EvC|p`Dn~Z#syliN>{2E#(5jh*W+NcPE$v`@N z_^a6_yj2z&S}s){UF^{%9$jN-T-F+zBfC8L9z&|I zkWYGH_2XLJErzzrVMASi-hwB&&5Qr0p=;zxPw#0%Hygj&!oJ{H6J90%Vdxh51+}dWreHs!djp6Jo$O7 zG`}UE^H{x=wt4ccgLIaRM}MoAUgerT>cuP7@z~A|L+jh_g*&`?(ShgqGx82rfD-gN z@S{3@I?&T`(ZOl_azm@+Ukr8UO$Q$1GbY?2w;JmD(GG7ODb;z@!G7p@L*4n*!T#r` zCR`)08M;FL;L+EiKI&pkbI(Y(vRC^w;R`u5KRFSGN9Rm-{AUSYMf{Jv`1OSKjH~A= zeR5nPFA%?MmwOkWqRBw_?*Hn=|Hez-NH{zFwS=!CT`=M*Hk~B?CgQ`yFNZdtB>qn1 z6Nz61-Efll2a(Spel2w4N#dVGzL0o*Ho3&KPxroB{}+g_iMSD)A(+ve?Ny@juMxjB zq9OG|?xXg}q<@F_-UxMvwjkH^I#%@2^aa@W$_Ql>->O0$O|R!5jo0VUB$uA!5_9%c zHWPoN7k{o7uj%#4#6Rf8pXZ8A{&#xqn@agld+}{q@tO4Vh=0Y4k7mVZ+NYwoz4-Q% z#CMZEM+XE?hfDM*Cr@X!Z=4su)r-%xL+js6`c^OAi~fg1$Cy5rOAO6?W@jVo0s6U} z1MLR-*`3Y}wcAz>96AsF0`xOH?W<8hKgZKUh32WB;beu|`>rL*>Pc4Q=)qF=8`iDpfzB zG}oln{kv+;|CI4Ky!^jtV^2OLu^_F^J*Qy#;PHEi4*TAdZ8c%N>oZ72}e0QLwaUDQu%%cn~ z(~fQAq0^zYA)W8cS zFnsJ)8hEQtQ~ZmvSFL8FXpOigVqNR~zuMZj&v)zU4_Vfet5LJAu`VU!`VU*yBlQ-# zW5$fN+~-vI zrw`;ly~W9WYm1e8Q;VJZV9UoX>(!Q^b$@Hf_ux5}@AY#n>+SOjeYdt*zNf)EZCGY2 z#^375oeW*9rFMI<t=?xWk0KFzPs(m zeJp2?rr$XB;(c`quvuj?hty0MF(wcwh_FI04- z>z8EJ8y(0^UdLz|%?nLAulPeLq z+`JF54iurOo`L%ybal>$L&f+%*G~^ert9QnP6Od#z2#3y#A=O%xKWVsmU6!|!|PfS zB!&9C@#xPnc_cz}Sncwx3Tw0^LS=?u$giw9OIiE6h&!c)i*0}JnxuFpfUN+YmX3h*1+$-tX zArV@RRvxDYzx2ri@X7KTnd8f&+>9NUlb8Dbj2$!bv))7A@E-EB-$TCfIJuv?sP$Ws z>)mFnH9}hLk<#jnmR8@W!FmMH(thefZxVXVXOHCU)VzMQgze_05z^c|ie9~$&lwAx zHFUm-3AZ}|aYG|%JriFhSVdT4f^{0a=`Yjr3FfW!*fm%`UHOaXS9cs-hzGUQenS+bRui0N}D@;k|=*zB2J#Y(0=Wx zrkw07lM>(C?B2Vmbz`SP{dbu9CqfD8R^Yh#mi{PW2gt2}y+uHp+kG<8UW#s>M5OdP zZXN#W)uHqo?RGi3Uq7mJxRZn4S=6n>US}mD`J^bYCR)=)V-ukjX5@vPMETh=$tk^A zEbd#W{pmn$vkYYV=YHC+{o{^{E!H^MVxJ;goD$jM8%x`DMf4N@1bVD^5)MqZPM601 z5@}40l_QQ*+?XCGjRU7h?}jFsv_fmJ5KOku&e+uHjqIncais0`3~6_$V|g7nwWhYT zqur}_E%o;L!7g#!md&Ad6S=7~y5)@$2^6_}WF{cJGyr-R(*y;$`-I%c)pcPLl)qrD-OOy-86H*^i**3e|E zrz6d0_P)7Yd{2V#$lUX5!n4Dp!le}j7mGE#BL5<>F0ClIP^<$L`4@<_@7kbkM&M*W z<48Vc#*tqt3X+6grMJ83j{+&7Qof*LiCsFgkQ%ieW3JGYeeZ~R(t8?*4EO4 zC6cmAKce@{rJr>3(6dvC#cZgP&%_JPTdU#pfPJ$bp7Qhv}^>ujP!<;#Qd zXV4QrW)$hFHkAGW;`Mx}7A-TmCqjDuSKDfNiiglqdxXOsc#?(W-+?dG)pLhEotl1u zxOTo76SflNuSkTIWGMe9NUP^;O<6%MZc5Fe)Z`H6B&B)W<>iqGy$Yv$5BGVN^t$4N zEv?~9FbkA}8Q=_12Bz^j+-YDsIGugU4sv&Wujca#dCY+Jaqo|PoJk9&M7t#H3)_@7 zGA9&-*u2HURG**<9{ziH$**{U?_9y55# zlsP-tcT9FRQH!f(#iT^!JAA4f9=_7CorR8{vO8(n1S{;QWSCQkM0W(Ge<^g>bvU{3 z`Q)yCOKsrZGx$xt1IX=57EYML42Lsqx|}*RqN^TqvW1VcudsB-Fo}6Tlaam?4$Ii!4Dv)`h@n~$Ng)gW+eK{HQ zM)cDX9ewQzi&+<0MM@1NBHtsgBJ|EB)w5oz(pS`f=zP41Ixo;V&+dGf8gCo3Rc(ult8PiP3X{tNY+Fx;GE%>i(}!Zaqf#(PMN!J*b;w zbPpR{_cXxwP|?+~8D>mp`t%4g9jD1iF8wsrv!C;NHWBI3d3s#0?(pGBe7bXYOHdD} zbIq1tlb`M-!nw`2PLYMa82idkG3!2$Eem{op>v>l&~r6xm-udeuQ;c~_bcKyn{*}q zJS)6l%C@+KgQw)=$eNr$Fg&_FC+KpgWw=E77HJL?_`-hG-huX-Jk?xd^FD2j69^{C z2aHB5wbL3VLhW7&r&!@pnG%+od^5SV-Z~XsaCnNSj>$KFFfVqobNNhcv`qHRVGM2{ zztem=*IKYc>+Ms(R4IKiBMDojza3^xBJM2u8#l>FrZ=oJ_c30sP`{>UDeb3)JKVd$ z=1F|FAv6x{0(Q9$XAz$mS!6u2JUoW_e*MSinxx4-Gil$e{A}dv!}>y>Mw0P+?wPGM zlcu~LkEedqmD5m4vqP1J{7Mftz8El-v=utV1zf}UOvrw}D&c(!V9k*U&q8Qu@*9!HtZ)Dp1 z(G%MIL(}GUUYj#^{xo{oc6NJ=@3JA!%rUn|`2HC(?E`m>cBS_nm)?B81f2(w=Rp(f z#kHT5(kkoA<{rT9m+zpHi_S!Qv`pk|nkawHtKHBz`2KPEXX^dTadO?qsh@lfx$aT> zgsUaydx`x!_T4f3S)cjtoqE7TXd`i@Z}XyjadK&P`z`4M&{k`KS)VfgOv`%IN4WLLcK-FFCVN*Q|^W3+!~i z!y6tp(%!eUH?oXAO@w}h{R*T%vY7Fci2NtF>xszg`VRepm_+1F&I5_aA9?5_!yxBEc)Y2VM+`p49Ge+Ijp6^s-$#f5- z)rfA`pttp>)BzJPxtqUp|D+Hsb?)S@e3^-IWrC47x@~iNuIUP8qSQ*Xv}5h zAJX``(WtQAIGU9sH&@)L4Cd(GNBN}mXBk=MJ_^~7INSU%m)fd5dZ_Pa=!ihxtEW`6 z{~X?YKrN{2Rh~U}&J^}8XA+)d!e`j}IY#pVi|>cqK0__rxx{|F{dUI+G+)Zz;M5wQ z&;NMmNdLa2k2Uv|-@~0%k(jeV0rseZk{1dahKRs z@6yj}O>g@@u4#CzHQFk*R$HxBx7Ir7*7_N-^mOL_?Z8Z^&Ou#^bv(@SkcU*m)4RD3 zfrdx8JH+3c9n>WK-ezdz$TNa^k{H_geckMebmzB&Z{r`o^E08F%oVe0DxgE0!6!U&(|& z;fC+dgs*qQ_heaS`N+~MUFp49(wdRe<&vYW{JufCFS2sfbV+&guMWw_Ohdlilixom zw{nJ!m@ciJ{DDEa_Q!Nt=gGe|DEEySMLsKzVkj%$%%hLPeinQWd;@4dUkyG0m`>*J zB~s9@fXsQVpK+jj9e02JpC)&1e6)&;d6|fOgV|r6g+5N?qfG5LQ@U*_>CiTW!ZOm?_2u0U{0>) z+E;#`tO}ANcX@1Ru$b#F^pkn@B7ehn`h8OG9wTSc{v&zT(eN7!N=jrh`-ENAF81%? zJoSvtR#vZ-d>U!mI-gkju;gKSy2i>edTP;-6cj8hXqU+aZH$KJ=_`%Zdl34!Q13vv zx3qq0S)mGRor&A>5Pm0gI`RUm^`UvpaCaP8()!TsV?x>=(^ao{vUMK0A0f}a$c5}} z`a_qn?iN`6A#QN#gN62~^o3XR$ZmN^8Y!juVQvwe@LSD~x_!+m?{EH&+sjxq@O&U( zhl9I=w~@z@yu72+W$)4c5I4h8P&Bbfd*W1Dn`i&jwnG*66RhKU@0w>1cZy}s9CuIa zhC?!UP7dYiPHeaQLQ3yxewZ>{{)anRnv? zUQQFtN@aSN@%H6RO?3W!I4{e7dxU#7`xbcL0{>rHz=}vw zWLtlzBan1!e8=wD>Cwv8p7es-rueh^LoGpvtB8l1d3JABcB%u1F@f z#kbGg5#1FPYlZk%G*mY=$%qx})~u;sThq2;RrT7lYTKIYnj30mWJcOtyScfxrmned zRb5T36lKI4)^2F3t&xJka8qrgs zaaPvV$r&r7@$Oh>q;sG@p4cAIYR048@$;kUcrp=5Zi`e8bjFjB=Kg5MPAOVdTX)u~ z=C<|KH8pi>$*)fAI`SkRr;eA8SDob4)io$XL3MR4EvnN%6f(3L8idWA)gX4m3P9op z6p%U%FuWS1sA1iT>V~$B)s1!4%W1ydz+Y%IL=&C;$$00iXd;nJo7&B48tCoqkEK!# z@kF{(CY(&AIoiKHmaguNSMt*{gIVhEi?skM?%OJ5sY&L=(HBsqCn(Xn*JKXn$;0Q!J56_Gj1exTxA)ViOv(GYv?iRm|fIBI^I32A-O%flXk^p zyJywJQ@!0$I%&u-MqZcb9Z1*2cEvklQ`aPQs5V9un&(inkJqb|(StQMarLpip4E>_ zH(0CY{9;TL_GA$fZnR3$nnv(+^T|-JkJw2Gu2~E|^&+1PO^iFMv z?oAG)*GF-K4Er%B7GTs)Fv2EAMRNDxNS%3Xy0~_2Pb}S)?3}ecnu?jOX4)lU%-Ce& zgz9AL*LKF!$^N>;wq&K8{@&T1kY(9F&|PDyGg#vpgX+8Eow%1-)$OTd_dq)48ss>; zO#J)Wl`^@ZGupi?zBAjk)h0T+lPNs%itcC%<4*Z|I&SsUyPTL&9fs@oGMRLe_%*Sf zc26NjIpa^F(iGpGh^7bn&Gb64gyydPtR7^-rGy1vyGRf(-_kg(M-u{C(mV2V||h}6)!&igyj9vz*PenqldD?&Sm z#<)>lk?iTk_2F>XS`3vpBpw_YM!k+vr^;*qv$WOqR!YTjlBz+MVcf9sS0`ERsQoDo z$^PxLy5sGs&hA-J_BC0XOEu_mu{8rdJ$uzlY8#J>Yn&QQr>Wk!6C*nNqr2T9HTJ|v z)@N1$9mgkRnDT~r_=G5RR>!F~)ih)_Wm9KY%FMqPk1lrZVb?LZ^Z5JvUCG_e?Aweb zo1-bSGQW5EmBMc1Si4fh*QA=ct1|F~JGz%*m8iCz;ssj-7)IS$LA1j#F|A zooeHlmp_0T6ab4@gk?;d}W7;i(P-Fd>Oq6UMTslb}r=2h!z zBzJvvV>LX-m$A54{Af=kl}`5d>d_=^oZX@bzqjZfn~INXzXY3V>f7qpHj6{%Qpzh5 z)zizO2o68lAL);=iX}L(b>6*ftJ=jqB=a=ogTSj&6MdQO{z zM=9^nx>0-^SFYp$w~=$(Mm_!UT4~;O5`?eQSidq}SQ#|=eU*)?0cXCAoca8`OawRhOxiUUIgEu8=L~eAKE@Wl%`Cd|VPb?(`?J;6wULyjTYmg3e z43@%M7i2Wxb48?-&bm64u*XGFZ#MB=H4EPO8|ju+mYL+NzSf#G5j$w&#v9PH$cl+hCFl)yG_k5XNd zzpXpo>khM&1Q{YGO~4&Vl51|wnwZdJLtWf6n>aL7M(JHm)(B{c_nPYDs@$DtMT4w6 z$BGBTYgpE)g;5x~#Bsw}b0???_QV;!9A3qpgZl|O-N`+KuanM>Y z?p82qMGNpcC7^6PVQK+&&2Fr#Ey}tZp(_xWuFx8<<%(;UP6xftFs=7o*9xXb+Eg{; z%kW_&Sg$v290HAD%*t!TjoxLPv66Sr;V=AR>85B;Z+EOQns%$(lpN@%AZ>-q;zX6_ zD$kR8Rnf{dnX^t)tY0s9}gak9Tv= zXQJKJq&c}WmJlE5_y#WTEn@M5PG)|_GUm>@1Cl~F%DcCcVP4Q&JDFP|3ArNIrnP(U z#rdveeRLp&V{ikFvD5&QC#Nf#TAAz^phMu+s;lyKMYS%xx0rWI0$s8AcK(=pbXUAH z)|A}ljtgzL+XfWORg+k8vH4Nff_O(;cXS}p(G}~TElwQAmB)#5ojHW35cKpQ$XxEm zWK>)a<7au}ZD>#y7+rzK?%Lr<6ie59NM=P^|(I3yDQQ- zEX2x_#0))|>6Y80i;sFf3DBXP>;Zf|?4oH6?~Sp3T@%IWiQ=Anl8Gd2iobw1TZCcU z#V~WLJ3BL#laMP~F|-q%nqd{^L(UQg5A zVz?2FsO=h@D^ie=n(;l#4K=CL?CCX^SZ1jmmWb_MG0@LF_sbO{jPuq(yMW3O7ppG@dDM;U@ItYan<7_wPmR)CBMu5~*~ zN3E*5!BuSE1_Sh|hQXxkqn*blML^P` zOj10LuD7EyVQ(B}EIQ^mxn~({J=h9!Pb|S?!W|Qs&oDF;%X^M3FT)|FYVJhHltEHA zk8m=vA>lg2&P*?lNG4pjX4;lXLbXnm(yI{}mt>c0HVRxp>0HTPH3J$M?WQZCJ-eyk zK)RYObV{sV@#~dMj|2>134-bsGYg*C*kz_(s5ibR)*W%TERpIq{&?#cNduw^IaaFy ztx?BlHJ-J+x@{iM$>j6r&!2rVc?Hjj^39Zoe8lnjx6Pe9=Oohk3+A6hsyU22CWnE< z&IDtQBddPQf)U)~i@OIX_ChQ1U>s@K|MqehW=!q6?-a?*IPBGxfTg@+r~2WT`1^IL zO2Ckmg!*IK^`oo)%m)p`7!M*vF73?ZSJ1CFzNxgkKBARkqa{I?rpQdUC2#TW>f}< z!dpq6OVhf^2&LSesD5`rBuEZY1n8V^LdWsAaiROR8AXE2$QudD&$^c_u&45*zCIj z@fo+_Pj$y)y#&l*EM+!w^aa-Ca2C*hW!d-XJ&lI+Qd{iQfE2M?)XimPI){!8<0J+( zjOS*2Wi;F{8X3uuM+$p7gA%j~Qo9);rvJ;zB{#J@)e-HEmGO6mRFMsy=>=cf?6lHd zZ2bfJp2~Op)20h^(n)sQTJOBHejdhXWVD9|5+{sXAKN+p@Nk#p?22|zHTx37nUy(T zWrIVN0LO};A)G=3hQSBz7T@kD3%{Swj#&2tyUnLz1ohl57GHwh```FR1%J(6B%cdf zuUWzIRXp;gph}((T6a3ZqC;!szM%6r=LP#6;^T3<@I`yi_;^Ent^9k?HqxTQ-(JFZ zVM$Y{uaLfm>nl%R{EahDu*m+seYw10!&Uuo&&J921>mbR9bR{ou5-@@OhPSVQl zw=3sD|}mE-)%a;hBP5z9H`1P|GcwS4#^^<|5;9^6xPs%7~d zzt11E+s9j0fIk_v0=@~013`Oa*Ev=*Uq!u4EnDBRSl)E3m#tut#UCYQ?Y9Mf-P}J-mu2rfUSLw zpQyCoAMnZNOiNnj1>1hr`XYJAv$pkDrC-eM0DfB6)T+Tj)2Ziam?*!qtv}N_Esphb zyQ<2uzvt|na80Y7s6^Iq1M;*+6)#>q>)!Z9d-k^2d&leV z9tMl{RxN2bciG}9dtf{%{>+~c@H3RbqCE`P4`djAaMYE&ZDp!?tz~^nM}{>bR93cF z?(^}(LBa9$FFE#`_QF>j=gZE*xHYEO8dgvq|G8Z-!*BZ?D>TBf4%qX`>|~eU3fOe5 z*0G|hYz05Dfx?6UzwK!Stf^G_vucq)&=VN$PxeU0-#xk1LLSJq|K^w;`gPF$lXC@? zSS*+3*nf5o(8RrRV~+hx>xWiwb;CXPl}?g3gKD_(%mEA+k3X`U>9J#tTs4&7GdY^= z9XW2df5n8pVcrkr@bgDM*1=%$^=!!fM*K4~uYalUk1xTF6V+^U^-J6g_rLmQ$lv^M z=hbUmr2edl^^0Y{U!6c@)n0W2i(mR|{7TyMR=|GNd7JFZ%HpRlFDctDH)}%qC~xC0 z=z{%0`$x``T7|0v)+ZyR_085yoWJgkfb%*1lAAj$L%? zV*Bn(#$R#86?>{C?x~uY{eN$j-7-Ty>$e_bQ0%FfFSwi-va+57O-bn`+Z|Jx}?P=TkSH0CAYZbEqkW@J}u`c_BUX9BWW~=5H-~7A2lykJ&tCONKpf zOqr5@uYHwMxUz zxWaMy<8s_UfIu$6f^j+H^8QEc{r`F))>5mJzi7Qg-;R0vF0p*Y0iWe_e0GiOlhM~N z{U;k?emgo#cZB{pMAj2IEe00-2e_@zivulbk-I|$i+fTdu@tYUA^csfJcbu@?8oet5V!& zbCq`l|LS`BbW5OT!kDXVC#x=%rdKXMCc@}KSGv0-xQ9n6!JE~E3gKcLVI3i1lITj^ z^>3MK9%W_}VLPdFX;Rr}n}3&H_o`dMLGnN1IU#(g`zBX6+Wv|E;GbA>oPsed7WUv{ s#53UJV2vGF9M%oqh#>?1@h75>p|Z(p4*(An)@blPVr+3@XjTV1KQiP+h5!Hn diff --git a/eclipse-project/bin/classes/org/libsdl/app/DummyEdit.class b/eclipse-project/bin/classes/org/libsdl/app/DummyEdit.class deleted file mode 100644 index 510766fcc3011cc0591d38c53bcee64945229f73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2166 zcmaJ?-E&h#96j4jdr7!yp-?EaS`es7C=Gt2!P=SvMgj#}id0c=ZMyZz;#d-nl63C}{C zK(8OnWy^ZDS}JFq#l`G+tx{P&Rnnn_n7~fQD+RtTWtX(Nk)38^p+jKcq3OdD-dVL= z)YVXVDiCPXu0W>Pgwx()Ev%?;-Y;bfrl0pcPr0G?y_`VDN$u%yM4&&lvCZ{8#tX9q zhU#XROHT{L@_tDrAd$2YM#D&1;#P%cEvzW&{Qz8-ezdSY*M{j zQ=Y4G1yh?5j9Pe!+O(1Y%3QWd8&gKPB$b=iRXwZA%+};HZR0Xtr&Am9nf0BZ6y3z4 zUnN(1lDSLF*f@vtS$Ip};KPcw z;1alscg&08kX{RkNC!S3vYQWQ93@<{z)Bw4(rTMbZOnn9C3HniESi^&SAUyd3&+AR zVE4$@d2Gg@q=`wt7P#uPHqXkA2EPp(zw$XN@FflMWv5zI44Z6v!Ek_=Q1aK#AIx23 zYx;aX*>30P3flMw^kj~%!p_82&}o|POlAc=pL3xN``GT`HpmaqERh0-z8595ECg!J`b%{}vGebIedQX0+HHj_NTxI0yM@6vH-s&evm5Hax}|v-2A! z5aW0B*a{B4j{$yCx3DMkC5G4?es2v=#J<9F5|?9l>TB`-HN03K#BRfk^07P8oGYVT zhD}_#0!yxbTV&*Y49o9uTz-!e@&}xhKVn4w6!FW{Ic(%Oiqkj~aUR7h zD3CcB;#HjG8AbLx5IZRBBoVazdM3+UlUy4dVhUuozt6gjo-Z)*GrHKW;I&)mSi_}E z-_Rg*?!Y=uDgV?@ni8`mN&Q})1P^`yKa@CG zJc$I}%bQ^)zkGdvd;++}VU8Z*sC7$WbnO>L$n{#xPGtx#M?x5`nw z>{eSH#)SUa`J9kU+J!36$99Pn8DUUqtL`^1wQ^6gHi|H++D4kWbUNnWViKOUCmdJ* zK7KfgL_T+1*q2-LAja=>S9aq8s1G0Zx7ZPFO3B8qg60sI$ z5#OdOnU#b{We-|ZCR<87BG8!7Npe$^!jv@ zVFMwdJ5fg7RFA2&_wGMJf0AcH&xBQu{}lalsS3i;r|RXIWG=C=wE58>uZ8@e3G&}F6JtLgF%Q*1cYItt-5Vi znJOP-W)xwZ6uC61EOpC&hi?6-D?*g~6Yr7`+!sxms~g>#^k-*nRzf(nR+X`lRi!E) z2mHie3s(R9h;t6isTm`9=yUa%^{~MmwRsu0cp^Fuc&Bd&UpvV*V|xIMFk}q7-eb1Y R?Z+MNVvlQUL)gaz(Kjt1P0auR diff --git a/eclipse-project/bin/classes/org/libsdl/app/R$string.class b/eclipse-project/bin/classes/org/libsdl/app/R$string.class deleted file mode 100644 index 4c00d04aae0717707f138c4f7db5b02aaa7d79ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmZ`#u};G<6uj4@NeL+}El|2M00R-MAeKl-l_HP|%8H!SDz03oiW648i3y2;58$H^ zFM$b(<=(sJ^ZA}XzurFpT;R}0hcGG1Wu#SR7djG~O*B8URjJID-8`YS2^Rp%|A)FZ_%UBC* zrS);Zi~O}<_0OI-=fDns2tR}_Jgz>o4tm^Clb3OuCsE6R?&%xC*H*H_*jxa{7%+xy W-^CES?fIz1G4{ANHiUglF#QH_p-)@@ diff --git a/eclipse-project/bin/classes/org/libsdl/app/R.class b/eclipse-project/bin/classes/org/libsdl/app/R.class deleted file mode 100644 index 953e3910a2550dfb64342e521ccb8c33ec092044..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmZutO-sW-6r637ZjIH}YOV3(B0Z=FgI*Oc1wkkZReIkvOWd+1Ws@lWEKh<5e}F$q ze4FT{m4!F+-psPI@9X>H6TmqRIBE=?)Wm^SVHW8?%;&+F!=dR+Jc~e!Bo6MvnVjYf zjZ2lN{EDG|bUa~jhG`@{)Uncniv~k`q!M{sJcZIch)_$0?kJrKJrPFP{&(o)k18v* zg?BF)y!*5;Q+ciI?Z)`jhG1yjB#AUbEwW5z99@RqV&;L!b3>UdaP%1bB}Zh$OBJj6 zM>%#F`b$nNUem&UxFQ^T|GBc)_u>Bl(8Oh? diff --git a/eclipse-project/bin/classes/org/libsdl/app/SDLActivity$1.class b/eclipse-project/bin/classes/org/libsdl/app/SDLActivity$1.class deleted file mode 100644 index 1f8366f5c5704d69ad315770a9fcc25de6ea8961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1137 zcmaJ=-%k@k5dOAz^q?G4Dj?K~q7}=Pauk1yF%g7lQZ(U!#Q3zmuI1o*hj-T+{uTcL zpD`8_A2g9S|0EyO*`rAt1uog0+1;6MX18}A;FOIgSzQD)v)H8e1G4x zo>iXOk<)UbgM3+o%8=gWEpEEptDCQ?yTXn%BpEW@+l{8@@v18rlF^P6<`)RHayIM| zLw}3AdDpl12&d8oI)SJ6LHQntu<1r2!^JnJ*~AzgZ&27?3@Zv8uTB`r$BySjPZ+if z=Oyz$^eNGLj5_$U+YIW8UlRkM1a)ZWm)e+)0i>jMNyi{`sZHt_!i5wRT-Gs+9D`Dj z?!y(w6EB;Mst7hu=*v`mo4eaQaOAmjsY*^6rp_rMU#5DMpy{P>12;9~8M0^duVV(c zsI7GoSqEVx8kPuJj!ity6iz9$=c?160nDPP!C)Ba_HNntUBNvab0`rtn;ToJL`;u! z$6!ekVd_|rL?k^wa^4;=3|SGk_tyD-T(pMU})+VN{T9>`*I{}#Iz_>C=xfCaBH=r24^1S>8NLlNQ{HBF(_2Q{6R zodwbv+1FT7S7S*%rQaw)YZz&=9wF^Ho%={;jba-aW3G)+qtwQ@F{!pOVSGXMF!s4Z zdn)#&kzpRD=&Tb4dEzR?2kFzubx=P*jcv=uXNIVIBB=?jCJlnsy2;)q7xo2rH(>o6 zeyV?`9Q>j){wBxq+|3Iqv@>=l*}M0gd(U~!b6)oEe}DZQz#<$4Cm7PM zSJN#~@l8uNc6asSwfu555PKrHf1cj6u5BBRxki7BdkP{9aeDV$Vd}20x8)22SA`>j zC5FCas>~3{x+YiAhd~Yf7+@IA3x}^a>)2}Fp4n-wZ?<2>jeDkfMF_`>RPNy zp%dtBWhROVikrxa;tazg_dM52gn)!oOV}+;>BOPAWGdnDpy4^(OgIh8QZa>>6-+aX zbWk?}Vd;6drr|7JVPF)~g=Bu)*fVs?aB6xn@W^=PxFnSu#H%=`;I*eS)#gCMdAv^f zF}&I(GMiIyfnl`cRTe-e`_fEG!z|_~IJdGbGj{0zW@VdKgN%ZC0(~fM!BQ~;UBg9? zi>S|ok_cqRr+Nd()(x-7ziM!&$|*5Xyuong1*vlrhhSs4tl=%Z%`j+}C}r18L1{bH zP1>H|`+Auk85LJRz~5zvb>i+SHC)AeR89oCEPPQB7WDzqmCQ+q?=xt^*=+=OZ64HJ zQ^hi}3RbAzI+l*qhK6gnP7G1*i}(G2+ePl}i7JsX(@RD>o2h3J{2{|!$9jk}M9>1D z=Omg!2&P~-RQjHbE~nuJK4N%@+-?ZRboWc{4tE&Fd#aeaH@8Ac?hzxaC}>#6O^T#0 zOkQ;F1)=Fx&$U|?7*0RcQ=PlH)Rt_jk2QRPBGriN+;&>cXm-1CJefNlS!zqcZSr@t zcvc$1B2ZCmFr0f{K~!5~DIxrXiV`;El-Xh!dlsqG^d;QU@HxJqIYlMT9g|_2QrZKm zm4UWzBBX>bH5jN+0S9hNNqs`}9feE7r_c6lr0kX&G259q3`$rLa)g}e9yn4Y(uA;W zhWYM^|B+}p^@@Q}-6$$*8bVYh&~F{Dm|rI{!Y@n);d7z5bdb=FicOn%<^O^Lb9Kp zV5E@#3tD_Ue)uVxU$1anl*aIw(rI_?7tu=A$J50yN ze?w_AUVe;ErJ{+?nz$Qc3&F@BZy-+C`smXaL6r4lgbg6ZqPWOZ8aF4Yzcs9}A>3la z)B!PUvN#MjiXAqFeKvt_*d)GXQ}~gc4T+jr)$56#pGUS+XvLLMd$m+ES!RpsdzfAE^(@Ga4v1G)P71Cb@)dlij!vDBt`C zeAEv*I_iv$kI&Wuj-7G*=8XS_|Aymu?rsRQz^Gv^=kC4tobx-c-yeVf@+*J~FcmZr zhHa;;SImN2s^~_orsu}9qeahLGrf(0+^W4kFYb65tLA(2hI?BK8g!ZgyiCMo|5YBvvt}|;FjY{5dO!-|uZ1z@7moSq3KY2+r7{|91oF$|T ztK`^bNnbZhW#Q?g1=p_lp2!*-w(kvuV$N`ks;ii7ULl6(S@Ka2P;4 z$oiy)DNJ*Vvzff^!pD=h2 z&+_Te7GC%PYPfraMPv&TEVhtY;HRB4Te$iguFnjIR|^X=vIt~kmzeiKpKxTKqK9Ri zKEoOM93%7vlhT*WHDBQheT@u#gE{&ZOY|KCeIG=9Iz(KLI?ki|7M3`kC9cKWc!#52 nW)D#`{RN(!{uVyC$p=j^P+%Ej^&&Hx;3xf92_!KguA=oH&uQXq diff --git a/eclipse-project/bin/classes/org/libsdl/app/SDLActivity.class b/eclipse-project/bin/classes/org/libsdl/app/SDLActivity.class deleted file mode 100644 index 17d2160ba381ccc5f0eb535ba807ba289c1a9f2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11901 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 B>C*rJ diff --git a/eclipse-project/bin/classes/org/libsdl/app/SDLGenericMotionListener_API12.class b/eclipse-project/bin/classes/org/libsdl/app/SDLGenericMotionListener_API12.class deleted file mode 100644 index aa93501948996cb1287c3c9ddee291aea712e4f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 770 zcmb7CTTc@~6#h=z?aI1ZZi*mCH9SzG4)R)KLh2=$MMxlh@Wo8G6Bt-$$nLO&|HO-l z3CIIKz#nBi+m@uY^5Daq%bat*^UXQ)>-W_)fOS0cQ6jvw>ApyGC+j9c9v_R{chN^> zRI1}G>$EkI&RpSt-PqZDz3!tzm^_rZ6p1wZV!LywV&|huXh_pdt?r6kt5eZtv9fLc z2}P*B(MG$sgz{>mO{lbNR|P2JZU`TD2(?HX_4(vmN2PnRlPJP;WMi4MWvUB*a9ME& zIwOeazuwSfd^^gFu(leF@o$b^_2=ig z>_mOCXPMLS(GU<}>958^LGD7JoG>#=q?j!~!czqm?mrqG1|S5x_9Ttf2VD$tl9zi! z?NzZvLbz#oxvfNInaX_B2~%TpAk5veNz}nR-M=WLWX`KI`1uejb%7!-3V9$|g}xPZr8 UQNm)catTjZ2ORUTjHlI!KWY-e1ONa4 diff --git a/eclipse-project/bin/classes/org/libsdl/app/SDLInputConnection.class b/eclipse-project/bin/classes/org/libsdl/app/SDLInputConnection.class deleted file mode 100644 index fc9929a0e88b654cd4720a7ce0334688cf739774..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1787 zcma)6TUT2}6#j-e;XoKDgeD+F1Z!jz;)pF#HPi50?#specP)@Uq@w_{1+&svem3sm&%UsdJJrXK{TW)-;no~ zT2lE8GeeU+1VTU}oi77VB=g#CRv@k)hw1T3z_XUl z3A})LhEb=n;yKE9RD~=9t03Bo0;jaq7+I|;r$jDu+qM_RX`C_fGQ;@icFVS^wyIb~ zpFC6q5=b(bExX#3x3&msB9|;2)yjs!kQO+LbA-3#)@qKwD!-)k-onlNKE@6*os-P<%#(<3oXhu4S|=tJ0Unrsug$Rqi?=LKFF* zeo?IH@uPVRBmvlu1wKNN24Pcfxt=UYRq?kOM(izLdc9k?=r+BQyyoaZ9j9NTSMKwg zV$2gvPTve*(uwAqR+Dadl4`k`O2_vw^c@`s5T-RuJNPdc_NXA28W<`)${4Hoc3JmuZ=KfH~TpzmJI&?F(No95Qn%v|ao%Wa4dWXO z)9rPmol5WFjW)UF0hE+p`ELmE-y!%TO!CKA;D6vW{}X5UU$FS!xWNCxMgF7@YIYxL z7H{Eg0v4jK&f*e5y-dD`Kqd<;G)gZtW?kT`UEq;a`g_oS8Q;ZXK+OjlPaidgfe~Y{ zFJ5FnUW8b^PX0iI+z8?^UHs!C+zcYD9E~6-!r1?dz?hx_fOhIcip+G&bR&L6nd=&7 zW{Ki+@drqzenj*RAJ6S!m6*PdSRgPC1R;%{(-<~ps9Li~({34a feF!uA9At2ZGS?hru(8j%fdQHUhEGU7fKQ(SI5~m6 diff --git a/eclipse-project/bin/classes/org/libsdl/app/SDLJoystickHandler.class b/eclipse-project/bin/classes/org/libsdl/app/SDLJoystickHandler.class deleted file mode 100644 index 4aaf73430c9d8b94353828d614811c1535939fcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 535 zcmah_O-sW-5Ph4bR%^AbUk5=@dTA}V(1VwXAXZU{dZ_f^ZIdkR)|d_HHq!s(#gpK{ zAK;G?Cuu1~5HIuQ>&?8GukVjf04;16U@;u%xX%OSj{Ja&DB|6YbE79Cqr9gp5&D6Q z3$Pg~Ly-s`h_KJ^-J$dh!_tWgl{sa|)f+tq`&|37h#Xc*$YY72?5I%Qjh|f^KL|IF z3>%L2M9>qlO5<75HUl+cs5$=%X){y@nWkH9lnyTv8Iq2@x!LwCd!kfsMyux*prtkm0qF0oOwni%1n;ZUtk|}IXx1YrHd&p zP{autVgB$P%WvdZD3VRfuxnT)zcg(iT%(9#9c8j9`Iyimv~sVhU0^md=FYS_W2PMy bREa~soeOAYGimPc<*kL~Y`%OmTeS592rz3R diff --git a/eclipse-project/bin/classes/org/libsdl/app/SDLJoystickHandler_API12$RangeComparator.class b/eclipse-project/bin/classes/org/libsdl/app/SDLJoystickHandler_API12$RangeComparator.class deleted file mode 100644 index d419395648799205e8f8cb968fd4bd9e8ec5cc52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1035 zcmbVLT~8B16g|@|U04<=Eh>H^R%iiT;l-GeCQXTkmn?|Yqn|4nj{ zY8iYy;BgoU^}c!B-r23Z<8e>4lJh=STqnv#o}qZghun+k#XIVri9p*ZFf3=@ftHc? z7tc`Gld;qd2CG^-WyrUZP&lwK@506`!=f)^@pf?D73zd{Bf(JelYmF3TuEb(oq7F1 zrVOwA|4h8jUp*NJ`lh=;>1HCVXG7y!+M9U=3%C1j`s%7jr#O^n84sY~-03_1<)OH)s-WJC22FMLbPKYNNui z@~^%z%wL&^jSVVz$`zp9n%G{fQV%SW8Tu70652qr=1BACW^~VNeuMLslpI_-3&xpm zV1aaZ1i%d}l0|*P5}oGb140`*XX_HBZIbW{SyvgF8N=!bHD(|@R&Xa{b#RxoT(L>4 z_r|Qx2yIvwHn)DFyiIb6`xC?jHL2xDEIiD#M^vTpJjNQ`CDO`xf~Q%abyP9?2g{rR AYybcN diff --git a/eclipse-project/bin/classes/org/libsdl/app/SDLJoystickHandler_API12$SDLJoystick.class b/eclipse-project/bin/classes/org/libsdl/app/SDLJoystickHandler_API12$SDLJoystick.class deleted file mode 100644 index 0a2faabd233dbcdfe8674953c7fd6eabc76264dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmbVKT~8B16g?M~E-h6`5yfvLO+X%)fH5%vNg9Z;X8njYyprkeq+DEPo7vfFf0j=s zKKKLtQO3IqiH*^O_%i2yoIB^v+5PeJ+jjuFSPwBnc#^rHN_mhcsnVm7>K{d~vPtea z{`gYcBsK1&`>waM+nH*F2nek+J=QAKcBtMC&P?nH^~8)hHYc1As7DB_J~xDR^qboE zj_q(ydit};2`d-9!gH#+&gn_SxtDgm&qJ$y;bi{#-#Gh`Z09mg)R@gD)w83*A64?5 z*O}+czL(9+-a#pKs=Y|n_Sv#OAk1z)K9=fXmY4=+(Qe{8772?HTl1zk9~k#R57KJ! zEY|6kZjsYaINtd+&!8E!~iULgdm;AYjoRh_H2E!Y-`JGh4jk`W%_ H5$1mZn+vyf diff --git a/eclipse-project/bin/classes/org/libsdl/app/SDLJoystickHandler_API12.class b/eclipse-project/bin/classes/org/libsdl/app/SDLJoystickHandler_API12.class deleted file mode 100644 index 14e0070b2af621d9f4719c98509c03ae0f6cfea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4307 zcmbVQYjBiT8Gg?0*?eL1C0Rli2oR-!B^N>plv@%|8lWt00tK1`Xn`-;kK_xR-MG66 z7u#yvl-8n9t<^$pxsytZfI7ho4-!3Sc%qGT;%I9#6DZMxEwlBwA^8c2=%k8eSRSnM^q?+g4by zNYqYjUa~qgYqkL?@W7`o7Vvir?oSE?!|hhLRoRttqLoV$32SHANv5g=My+*PV^*pw zVGD%swx%Zhsj6JNrezphy_nEhHBQV)Ef(;Wlr{*++IYnF!;4%Kqu@7?FEHjVM){G4 z+))rHFyTX%Kz`VX+4Wr=&30m))f}av1>ty$6>YE*jvA*YWvb2LK}+w~URoIFj7OuP zSZ7yisom|g*hxQ%FwwvSf$?;CBJM;gyB&LbWyTs4lTa*Rw%X}Up$N6glG2SKKaKvZ ziOG0CAcyin_X{j23Ej6{Bm8J!s=%E8BLaR*L9RN^gC?eJl)9{n zTCvv3wW)*?Ypqrw^GwXg0(vf{*A?7-Rh5Zq#Q|yUu#;-rA`^@CM4Oe;;rfD!C3u7^ zp~|{=%8AF;P?IvZU{JLtz2>`tr2_Ns*PR-uHr~-`C9G6D;YY1<>7xi4Siy`M=58%% zWVa~YNfRsaMcSK;CsHJ1Nk&R(3o^#T$kn9{IjF-b1N8!V!?G*rs4rNX{{Q?iV55OIZog_WR(S;wQ0v|@aZvFjPoCi>hm&&PuhJxQI(snuvGBSQli;az*PXu9)~Su4bUEu;@#JXta*c2%qhG_cjt{ zxQ!7iu(X#}$C+4mLOY8Vxs!y@xk)lDr(WJ8O>V>T=XXola!0)~0({UYm#Ts?Q{_25 z7K+8}L~YbcCe;m-<7(BOU8# zQ+1yV;Hjy{J{2i~I1UYnZ~_^Q3p4uNMVDSswJwJcKN&?D2`9 zul(xafq$#!5OQY(Wk0%B%c=%*(2KJ3*s5MTf8J+ z6ni*6K>2aGN3(G+IZDQ**(k*kynx+g@^hLf@$D8VgTEaZ9u5Lfhh)x48F_^zE3bfWp{`SG-;tZ zz{A}k9o#qz-ZUmNegLB(-JyXzrur=eg~;(_eT;x7{}#pzG1>Dmay)bie@oD9sx0iI zsj7U;@iKp>Deg=fBG|-3$j_KL)8i47hS+sooZ&XF=G0i89C9ywav#RYS1^_RS@KmK zv&k-eI%ZU)y{M{HWjbccQ`zv|q`QkfH0!%~-8D}9g{HE`;6`~L_7{AQrQ^@+y}5{A zhZYx~qy+daKc4hwOc^CdS%6fvc^{{B+AJ!POyzXmuvV1oy1-MOP@R)o)%Oo#x$WlG z1%_H$5%i5S`f*k#lisUS=!ymlm#dkYK{S>c1=Nr8^N8z8Gc}>R4=^pT^_=9=SmdNov*_$_p=ZmV2ZxM)O-`O@=kp_0mnFq6qmn>JnuKWAbYl&nunk6{LW!F5^04B&nC3{C#Y$hyT}h~gFs v$#}7_;J;WgK%E}V(E~bUAL#F2;#X`ZPZ;<^zp|Cn~ diff --git a/eclipse-project/bin/classes/org/libsdl/app/SDLMain.class b/eclipse-project/bin/classes/org/libsdl/app/SDLMain.class deleted file mode 100644 index 15be793ffa57d5069297c2aea19a3afc2c18f1bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 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 -# Encoding is UTF-8 diff --git a/eclipse-project/bin/res/crunch/drawable-hdpi/ic_launcher1.png b/eclipse-project/bin/res/crunch/drawable-hdpi/ic_launcher1.png deleted file mode 100644 index 8711c59c81223d2a769fe75d38f9a3b1a296cf2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6199 zcmV-77|7>|P)D9?ivXTzT?KUen zEAjTa9n;eGP10)AaGi|=jEI0?5CjV-s-P%}qNsT|^Ed6`{`d;gc56h0NL;*Yo%8FQ zz4!O*cfZg3KJPvUIBloxw4JuocG~__jeJlOFI~FOsjHhdwW+?YK3ABSNtACZ<|d_8@+8y<{o7@`~9P%{_D0J(*PO1|?b9f)Gj*JpJTvu>66?;ROL0rHENZF`h}? z{l=c2Cr)J+J0Spl^{bz5z3PgK9-lRH`h^AqEZc-s8i7|qzEHydT=pPdd|@>xqc9jl z+%|gBRkb&5+}W}7RHym(4bc5R{JTZxo-=zzA|9&&fWQw>(m=6XLjU0*eEXaKggtw@ zz!?Q21Tn|jRb5}Rc>T6L1NalL_XW`XKe+d==FU0emy{68woFJN;6o!{D59@-5a0OP z_c1Uy0YU&q2@-K@cP5*dJ3gzI=K3K?B5&=SzS8&3mq_tIIxVTej^uHb4l1AcWEyTQ|RsAKbSb#Zm=? z5HLoOikanXZRUneZQXm`Y0MovdPGZYW@kL9|JS7pFaFGVXHUQW^Pl^4A(3kA-n40x z_>(C$?!EWc*0W|eZ*c5*Ln4txHj@Hl3_%d0tFs3``oV)JxjqObAOIYb>$>XHXE$~9 z{p+!e|JhG0e0oa#l)t?B_S=z6#i6vhulL~KUtfLQ9a}yKfarVq@SS%qvRj(d4-=vq zC^ev@#@KiPBO~MJ?mB=U-1k%XVF)@24yOdkg#FZ}j=qPEbq*tL|7`E>4!rjAZxQ+) zIQ3_pdv5D18`eGlx#O)Jmo8mu-hA^#Q%^cT%?;JxvP`j%5(`=@R6Gx!@1k7E;n&Zs zhSCaB>F8)t0>?Hc>}2Z80Q9lW(K{5pLM=A>>=P@ob@S^e7R$(u4ad%C$^7)ymmmGw z@jT?^3#Q$A_M90XJE;JD;S1NFUt62~Ta6GJ3Vz^1hybpeLvPOkwC&svDIrb8X7?KPGFdPAL978 z5$jgHibAmuxk5LJrQVFm2LJI`##y`O$?w+J#_w3SW-UC|KRGdI*)q_&#?&_`VT3Uo z8X8(l2vLF35?eOzg4PO314;vo5IB}`IAf+BKVIf=i{a)lR6b`EhC#7+*8z+U4`O6+ z0KlWODxe`NjzcsJrvh1%y^E z(^?}GB>)6U`v}84v^KE6>qy0*0Ua@yVVIA+*4bG+UV!42cus?iK?4S(&`P7fdj!M1 z6Bs>|!|1_rr<}{*@=lC(>4Me=&N^%6Hv%_Lwry_1*l-R6B%945cESOwtu;R-g=Cac zgh3HfmZ4Mt&&%V@t@|LAf(Aed0jC6U$I!`i;<0xdcXBu1mbUv%lPLugBm#&tiriQQ zLkEi(JzU24kc<3K;nro#mc3>DU-`;X=k|{;d~|wq=Ch+iL#Vhe9)0MSQTjk>C`3}8 z&{AX3qD2V`EES=IhJ%II}RED}n$BBeuL`{mN(O0%!+7zIgXFi>Ec!{D@OJ?{NPRs;bgh`OGVr7%hNv z3To1UwQJXwPbffB>nfL7W~!QTpg2AbnGRtX7D|Nz_H|64Tn<107>s}dAcTN(k7Hyc#BYDS z2AomEEE9~;J?|wSJ0^hY8?uW*0*D}bctSM7(1lhKU7d%av<9ODp;RE0z%nT8n6=>u z#eV;LpTE1lA^qbSXSBqXaKQ}$!;FD*2G6Y^7I(mN1uzz!wjeBFVrZz!8+GrNg2E3a z7}YR1g%IsV7m&mtYwTi~-j|&s z8Rd(l@L@O%S}FLRk1!Mnya2<4#Ur5^oKZk)aL$y9)88##d~ST<#pnJX(;B@K+9rYT zBU@Ds#?qj~f|5Q6W$^s~A{3LMFsetn$pHemMGs|Hz&06_Qb9QoH-fYSM%eLUT9(>OS z2r$xLgcnFaYiLBlSpzUR>#nP-vgXaKf2z8QT`Gbk`VSTH=GK?6{DDU?HaH5`jT8*q zrkFat3C+_Q&^RrNK$IbTADmNY1!$#V7!*<}5JFKbx(I}X){_aT1{{;YG8vqh0cJ1| zZQx+nK5SUM1)LIC76UT~c+7lp)#~Hxue~Ec4hv@(W;`x}5P=&2&8>*E@})7P2lxSJ7GHpnwryS znNbBI1$KPQ^M*#8z0SE=5fO0uNN5?Ss?j1o*O$<$qDG--H$mp}7Q1D!V zAe114L;x5J3CBP@VIq;O#)dULIMh3ggl&S@fNgVV0!Yg4d*X$yubyy#gusl@3*e+} zNTm=2VYGRKAP6J?0zx8&p(Jv9p>*5!9i6XD4$%Q%&5>+;)2rvsqOQ17X>napu3RUi zvbY9(AtqA=1xTQ`FOS|sdDPX$VSyr)3MQlQ{m850j)|DXk#Gz&G*zMKhj{L}9gtGN zF&PXVDG5?(SaIu-xfk#JE>^yG_Ig)StN0)Wh3^Yc0SKW$$nQOe62LSm zEXxSrpbbVfJA9HnS3K4QCuWIvMS!4EAX3FuHRO{`?PliC|>12`2mD4 zpr9e7L?s`95r$AGkje6bl4y}8XE052%uRrM{`%U+Oji6u|Gs|ORG&np62cE9f>6Q> zBm$w}htcu#g~asPbvU%48(t^?0%)y4DTxvy4G5(mq=sc%tA@scPp;qIK5|mK8kKyY z9f!axhad()B_AO0B`7qcP*LI-#U0q3f)GFpWgVONwkUD^wM(AsY+pA!79+@w7BDtg zhF1z9ghJp;KH0+h*Bk-B!y@VloAj^U|NPJsQJ+1o4dx= zZ$HUhjnj~G;4ue3%GN`#?=TM`hSM%fGD3k9VWhz1A+IHh2e?du;eKmCWrw}sB9 zKXLc7S`{x(rBcXLXOON*AeQFH)}{c{z~24CI5?O`*^8*1QG&Q*VkB2VeQg|Z+W=J5 zPBJ+IXB2UpBMb!(J^$k)y$zS0drr%)&hDYXljcDtr~5)b1YrOr0ApwC&TAArER(_0gmu{`_lSUc4hy)%bCto9mJoD|jeX ze1uXV9y2hzr3yA@fC4xtpp1fZie%OT;}ngp)tEMYCK?)NOT$QXls);|p6>3~dk+t` z2~n;b?i#2q$@I?Et5=ubdmd!zZYfEb5|UIPAe2A|1vS~Vn5-AU8HI)hV-y5vNie?- zz}pJ-4Rx{4RoqdBO!x@=6ht7g;?dvW<=<|EnmkI8<4{ndVVN94D3~TgGHqd^=)tiJ zXfK583hdlFf@#ee%saCYPK=MCy}g5K`Mob@lobDYF@UgX5KYdU5#RK z2tD10-pSYuJ`*9ty=bztJxpnbb?IP3*TvtGI4ay0^iiE+U;K&#SncQUpz%(d{ zS@bdh|K&={k|i^(^4P@P!;XRzchJ;)2A=-qT5Q|W4wF+bNRS zIg9pYiW(BbAB7(3B1AT)Kfq+}| z3T_a5{)KhzzkFZSJU7`ZZb2{58jyj8??#KlWPJrhI zQ$Js`@y&j8ytlgS4+6Ae<3{(+kA36`(_;VK^FwG&Kq;Ul5J+`2h#m>rLTR{O2uB2; z{LcU}uH)mw9;Rhu$c^M-n;cfc93xKr_NQ0xcquB=A`Q+?IjbGRILA&}$kZi}uFhcM z@F)_Fg|b@)Ap{jqZT#7SezmkNN^1>MnI2b*Iszrwb#!3&Z zq8=vWg=ulrG-tX4#&3S&>8-o|i|5AT%j3!LOH~aiBbiRZu``ILT@XanZ!ikC62^}V zy>jK|0)VZPuRreXj>n(dx`P_*C*Y>qX5P2p_oZg-IUp1@$DO* zdTRY2l0dc6=7X5L0}zB|7%{*yIpQ{lZ7>i@7cE(`#5xrK!pij>>k?V#Im2L(Qla7t zXssdSq!$?!N^68dL8++x@QOim+Mr)LGREM+eDAc`O+K;XH$DE`YyIywr_jk4N=1LL zR4QR&Yy$a-e$-7(!!`}rCI^F_=I0MJpDGuqblGEHXPlKNpR13!CoefzOYc>nz?++s=JJ3g3~WBobwv=1VYbx>6o zi@FsCrCj*epKO4R`Htd&!=qz!TI)T}^{)+ug47yX6KD_!rD1Y*^q4Uk)lUT4OsCkH ziKKc0N zlmG|-GWBO{OWE?`V$q*@q}nDV@*E)*l8!Mcq7hgYkGdH)o6*>8d5`^S!%Oc4oFle< z*WowLXsC0%vUgdb9H6hifX1oSusA`wI+4Bfs&gOQvZc%appO^;VB5BBA$PKOrBZee znFJzAY@_~sp%TDxjHm^q0m=z{&xg&`cfN4XRf~^vjryrqc7EN;rtTt?<%Lve+ueuE zloS}(wb^v~)>FoV0HFKOU~y)1!#b+PfAd4>gd&nAG>Q6S6*ojx#(}{pY>UBiI5Z@$ zY0O+d|Gd^;Z+d<_2Znddn=}2HgiX(e*3Dh}M`=@Y3aLygUDt5-!|mClx3ugbnWWqu|?@nuIs6I2{1c!dNW#9Hw1|R_F=^yK!+ElxlYIRe^ z7mof9`{#KA`BH$HbLt?&5Fmh)vJs2(Ol@7u&GY6=e`({E;}_LCx(7!0^^U%HLGzpk z#wx{4rmg>M`pj9cwYPVl@L2S|f3tedjOKHExBTlu*_)~+FLHuJ9gk$(!k=9+8$bn# ztc`R{8tG&`OtXG`e5`WIvVVMV9Zqp$?{|RViNbKxjHX9zt3B;#5^t-Eq~TONt9G+xYt0wa_10fB;}Cwn-+rYXlrW=KePY= zK>zUA#Au=Nr+0&XG(U2{W?onuC3u&1X-eNX`X(f)a1{`~od@+Z#o zi={<=AQpx~UKE6)MoHx;twBko^-uy#ZEiqIa|04d<_-^yYz~F-^%pm^ZT?UL^mcP! zweY+tqr>A_p;f&mBt=0i0_{5{EyfLF5KcU|c5~Zd;M8Tg({|cU+i5#(r|s0W{}0au VzZRD=T=D<_002ovPDHLkV1linqX+;1 diff --git a/eclipse-project/bin/res/crunch/drawable-mdpi/ic_launcher1.png b/eclipse-project/bin/res/crunch/drawable-mdpi/ic_launcher1.png deleted file mode 100644 index 1562aa3881e205ba41b58287411c8f2863c9c0f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3281 zcmV;?3@-DDP)I2DCdI6=h)V3U@wRsF(#|B*PI;&HL{pwA(x43n6SJ4jq@Q2Uj z+;{gaOM(IYamTicd;5maeX9ufQ}- zcsyEbe#pOIS6g?_RR{3gb5F#lR+QD}uUV#C_a`1co< z!sP-!k7C6lfts@)9sq`V`d=UFIrif(-TTGkEgxAVFbZ|UfXb_XV)h=FME5>(ftkkw;tHJJ6BVjf4=qp86T`$y{!Dx zJlNvJbK{o{@PmJSN3J*jKhC=XDqFj9`PQKILnd1@QH+-|Y|j=}U}i00>NT1cwf^p|3vy zmkSUA=&JgU&CTb}uC_zBdpru>c;z=Zc<=yPTMt~X$mELJ+IgRtM1S?GpTuTNuY7f1 zedEN-0;re}_$Fm2Wz-AKvv8a=w$<;4%LOC=kEZT#>Ks~sp$S+v=ZK;zY1^`}b;JAU z={bbKq1HQ6quTtl$G-B)_abv|owoMFeY?wt21bf58K9=7hJl)Y2LM7?u$?jV_9QSe zG7bp|g%D_(`f~vCLK7_Cv?=4dqEk~C2D*pP+1ibcL*3|aANcB-<6d~-ABq>uo&UbZ zoG+|f{T={XaLKh$UTEkp;i_>70WM59P8tonTHta4MhLvRVnuR1Z=?GUzzY}5oHFyK z*)v8*5)=CRI=Y&g4!5f`u8J3N>EB5U5UYyS)|7e*sfSKZ{FvY)Ymts|LK{U z+o~!`-$;#*R24KYoAY`ciFKPEdcqt1Iw$y-*Yaug?QYDF`8u(p1f4a$agAg|z9wqcU&+ zS<8hG5_W&$wW630gaW3K#riF~Fx)o?uSW$}*!oKXShVQ#QAo4gjW`Ga49kIO zyO02MjUkw$L)CON?{7v^!y$x%I&{C*f!MUoz>$jwhz40XAdyLCAtZ;HvXB_b0t6uB zRPjMoTE5|TjVscb>~$1mmPaMkj1WagiP0gB_T$}fw+IvzhL9KW005+vFf12Y$A#qz zguE(3UJbFrF!pZmM0dv!3L`$~UPTg*{>;j{I(|tzpnzOwn--`-VY@CIN1R%{k3$xt zK*n&M-*dRLi6~o_%(oE-!;2xK{U^Lr|aZsz_46!0`!k$KnX!nEC8>rz~vmrdPb2o94L$; z=+yv1;E(yr>G?n1&DnloAjSxLiW@=r0f1`QHIr97ayQhER?N>8y>O zfh5K<7P!m7g+x(a0Fna=qfiwFU1bnll!SDr_r_Zm9Byg(^bmiv1Cp~&%dz2b4k;zF zh673fAx>$UHiwpW;sBb@^n3PS9-gDA#*49V9C@)Kq{kUnZC{Jdu0e2dDgo-M0xAi* z`jUtjhTu~eqyRLP0))iFe)48n;mC_`{Nj6SlH=J``wkx2y?ptm%tZmDi2ry<7?Qh^ zxUPWXa!3G#5HJEzLZB$58o-7#{k&fJ^w3}jmANI@yR#L`e)-?XnhqGFpoD-iig4Hi zGwVWk8BX?%BNp-DbCm@M1vCHxfrtmOLVqb__KB&LQ=gbIW47_gLl3lX-t^x7k6Mk# zH*NZ3m{07;YVMeFBt33Sv4xAVQ5z}4f$4BiO5oEJM8f{x?P%$K@DH`qoM=3X-e_Kq zE}R^!TJb)ll(0_03zbnS0TdU7F+7+=)^cIH970G?MiB{l5RG`@52#?83Ptn7vRrV> zkiwC#`w?AIw`-U2sY?k@(6c!?YE0p-g!^#@=0XAlaJYbQ`E3gqR_N>3AF}{Jajh9A zThqFcCOG`zA$TWacGRdNLm;l z$s%jJaJYb`sslOU;J0@)wZD1MwUEQ5fVBW% zBr;Rd<0c$F43!f2BEHR8p*+03v2FOFvg(KZMS-Ux1%4DyEJRm(KhlN+A!$QpRq@N& zWOfEq=#AM?tBMQRm&rJ7oGI^$K*6dV=UDX%0#x2~V9UNu)KXuv`Iv zfO7$ESl>7eAV9e8(_kA8V)5{@abbM3etnw-00AwyHWc?K3Ma&(IXU_8c{R{61E$SW z%U3nN3E&(n+TivUHF@~II5FSkd6*Br+yqi5|LQ1N|ztDZ!3ELL1T@J?; zP!;xn{V?ZJ;g<6p0Av!Go{~ug8%(9*+qJb2XKT3*TWVxX(bIVxu|gk$J`K7?tM9(0 zI`47;*t!1b=;&}K#q-)t(|Xu)Ib3n7m1LAcVGO#$;L%y-ZMRR^Hh0l@*iYVC)o|i`S`GWVwq2JS&L8Mc%}%6jOo)dO%@1Z8n|j{4 zqA#|hdcjkEzq*IgQ=!yyIkJueMWKL@;I>&33(~iiELo^uNb8+#txsw`&ttB`(KBsb0{#xnC`!j}seL+ESMfoIc zO=Dx9IG^5$zR`m-=S=)Lu}H7$xFyBKx#in-9Nu`v005w)cPt$*$$y(W&RpB!B@#d? zW5X3dVL=E?1%hGU4Tbqt)zhX|zPoehN6z{5jvgH}PxL1CG#?vyt)wt~;?KYGjYNHY zy}T5Fiwa}a)dhZI(D_j+Ydq?3Nfbtq8w+CY{E3L<1rZ4sA`~h;KqOiGH%~s_hChL^ ziy1sHkZ}@evi z4fO{*uIkUM^XAR-Bu^eIHMq?EIAxfTfIghVB0cXmHfC|nuGuyFOznRGQz;!eUMKr$ P00000NkvXXu0mjfyUs?S diff --git a/eclipse-project/bin/res/crunch/drawable-xhdpi/ic_launcher1.png b/eclipse-project/bin/res/crunch/drawable-xhdpi/ic_launcher1.png deleted file mode 100644 index b086cf710f7b4c75770f7c703f701966294c8afa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9504 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/eclipse-project/default.properties b/eclipse-project/default.properties deleted file mode 100644 index 0cdab9561..000000000 --- a/eclipse-project/default.properties +++ /dev/null @@ -1,11 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system use, -# "build.properties", and override values to adapt the script to your -# project structure. - -# Project target. -target=android-12 diff --git a/eclipse-project/gen/org/libsdl/app/BuildConfig.java b/eclipse-project/gen/org/libsdl/app/BuildConfig.java deleted file mode 100644 index 397b993f1..000000000 --- a/eclipse-project/gen/org/libsdl/app/BuildConfig.java +++ /dev/null @@ -1,6 +0,0 @@ -/** Automatically generated file. DO NOT MODIFY */ -package org.libsdl.app; - -public final class BuildConfig { - public final static boolean DEBUG = true; -} \ No newline at end of file diff --git a/eclipse-project/gen/org/libsdl/app/R.java b/eclipse-project/gen/org/libsdl/app/R.java deleted file mode 100644 index 02e05052f..000000000 --- a/eclipse-project/gen/org/libsdl/app/R.java +++ /dev/null @@ -1,22 +0,0 @@ -/* AUTO-GENERATED FILE. DO NOT MODIFY. - * - * This class was automatically generated by the - * aapt tool from the resource data it found. It - * should not be modified by hand. - */ - -package org.libsdl.app; - -public final class R { - public static final class attr { - } - public static final class drawable { - public static final int ic_launcher1=0x7f020000; - } - public static final class layout { - public static final int main=0x7f030000; - } - public static final class string { - public static final int app_name=0x7f040000; - } -} diff --git a/eclipse-project/jni/Android.mk b/eclipse-project/jni/Android.mk deleted file mode 100644 index 5053e7d64..000000000 --- a/eclipse-project/jni/Android.mk +++ /dev/null @@ -1 +0,0 @@ -include $(call all-subdir-makefiles) diff --git a/eclipse-project/jni/Application.mk b/eclipse-project/jni/Application.mk deleted file mode 100644 index e5b50793b..000000000 --- a/eclipse-project/jni/Application.mk +++ /dev/null @@ -1,6 +0,0 @@ - -# Uncomment this if you're using STL in your project -# See CPLUSPLUS-SUPPORT.html in the NDK documentation for more information -# APP_STL := stlport_static - -APP_ABI := armeabi armeabi-v7a x86 diff --git a/eclipse-project/jni/src/Android.mk b/eclipse-project/jni/src/Android.mk deleted file mode 100644 index 943a8cdbe..000000000 --- a/eclipse-project/jni/src/Android.mk +++ /dev/null @@ -1,19 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE := main - -SDL_PATH := ../SDL - -LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include - -# Add your application source files here... -LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.c \ - YourSourceHere.c - -LOCAL_SHARED_LIBRARIES := SDL2 - -LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog - -include $(BUILD_SHARED_LIBRARY) diff --git a/eclipse-project/jni/src/Android_static.mk b/eclipse-project/jni/src/Android_static.mk deleted file mode 100644 index faed669c0..000000000 --- a/eclipse-project/jni/src/Android_static.mk +++ /dev/null @@ -1,12 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE := main - -LOCAL_SRC_FILES := YourSourceHere.c - -LOCAL_STATIC_LIBRARIES := SDL2_static - -include $(BUILD_SHARED_LIBRARY) -$(call import-module,SDL)LOCAL_PATH := $(call my-dir) diff --git a/eclipse-project/proguard-project.txt b/eclipse-project/proguard-project.txt deleted file mode 100644 index f2fe1559a..000000000 --- a/eclipse-project/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/eclipse-project/project.properties b/eclipse-project/project.properties deleted file mode 100644 index 8937e94b9..000000000 --- a/eclipse-project/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-14 diff --git a/eclipse-project/res/drawable-hdpi/ic_launcher1.png b/eclipse-project/res/drawable-hdpi/ic_launcher1.png deleted file mode 100644 index 60f09b4754e31fe8079998608766dab2ebfd00ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6082 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

d2jlk@h6*XIDHJA%ueVH!ywEl!b9r@n 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 diff --git a/eclipse-project/res/layout/main.xml b/eclipse-project/res/layout/main.xml deleted file mode 100644 index 123c4b6ea..000000000 --- a/eclipse-project/res/layout/main.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/eclipse-project/res/values/strings.xml b/eclipse-project/res/values/strings.xml deleted file mode 100644 index 0ec895d1b..000000000 --- a/eclipse-project/res/values/strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - Openmw - diff --git a/eclipse-project/src/org/libsdl/app/SDLActivity.java b/eclipse-project/src/org/libsdl/app/SDLActivity.java deleted file mode 100644 index 2ec638821..000000000 --- a/eclipse-project/src/org/libsdl/app/SDLActivity.java +++ /dev/null @@ -1,1211 +0,0 @@ -package org.libsdl.app; - -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.lang.reflect.Method; - -import android.app.*; -import android.content.*; -import android.view.*; -import android.view.inputmethod.BaseInputConnection; -import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.InputConnection; -import android.view.inputmethod.InputMethodManager; -import android.widget.AbsoluteLayout; -import android.os.*; -import android.os.Process; -import android.util.Log; -import android.graphics.*; -import android.media.*; -import android.hardware.*; - - - - -/** - SDL Activity -*/ -public class SDLActivity extends Activity { - private static final String TAG = "SDL"; - - // Keep track of the paused state - public static boolean mIsPaused, mIsSurfaceReady, mHasFocus; - public static boolean mExitCalledFromJava; - - public static final boolean mAccelerometerEnabled = true; - // Main components - protected static SDLActivity mSingleton; - protected static SDLSurface mSurface; - protected static View mTextEdit; - protected static ViewGroup mLayout; - protected static SDLJoystickHandler mJoystickHandler; - - // This is what SDL runs in. It invokes SDL_main(), eventually - protected static Thread mSDLThread; - - // Audio - protected static AudioTrack mAudioTrack; - - // Load the .so - static { - System.loadLibrary("SDL2"); - System.loadLibrary("openal"); - - - - - - System.loadLibrary("avutil-52"); - System.loadLibrary("avcodec-54"); - System.loadLibrary("avformat-54"); - - System.loadLibrary("swresample-0"); - System.loadLibrary("swscale-2"); - - System.loadLibrary("avfilter-3"); - System.loadLibrary("avdevice-54"); - - - // System.loadLibrary("bullet"); - // System.loadLibrary("SDL2"); - System.loadLibrary("openmw"); - - //System.loadLibrary("SDL2_image"); - //System.loadLibrary("SDL2_mixer"); - //System.loadLibrary("SDL2_net"); - //System.loadLibrary("SDL2_ttf"); - // System.loadLibrary("main"); - } - - - public static void initialize() { - // The static nature of the singleton and Android quirkyness force us to initialize everything here - // Otherwise, when exiting the app and returning to it, these variables *keep* their pre exit values - mSingleton = null; - mSurface = null; - mTextEdit = null; - mLayout = null; - mJoystickHandler = null; - mSDLThread = null; - mAudioTrack = null; - mExitCalledFromJava = false; - mIsPaused = false; - mIsSurfaceReady = false; - mHasFocus = true; - } - - // Setup - @Override - protected void onCreate(Bundle savedInstanceState) { - Log.v("SDL", "onCreate():" + mSingleton); - super.onCreate(savedInstanceState); - - SDLActivity.initialize(); - // So we can call stuff from static callbacks - mSingleton = this; - - // Set up the surface - mSurface = new SDLSurface(getApplication()); - - if(Build.VERSION.SDK_INT >= 12) { - mJoystickHandler = new SDLJoystickHandler_API12(); - } - else { - mJoystickHandler = new SDLJoystickHandler(); - } - - mLayout = new AbsoluteLayout(this); - mLayout.addView(mSurface); - - setContentView(mLayout); - } - - // Events - @Override - protected void onPause() { - Log.v("SDL", "onPause()"); - super.onPause(); - SDLActivity.handlePause(); - } - - @Override - protected void onResume() { - Log.v("SDL", "onResume()"); - super.onResume(); - SDLActivity.handleResume(); - } - - - @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); - Log.v("SDL", "onWindowFocusChanged(): " + hasFocus); - - SDLActivity.mHasFocus = hasFocus; - if (hasFocus) { - SDLActivity.handleResume(); - } - } - - @Override - public void onLowMemory() { - Log.v("SDL", "onLowMemory()"); - super.onLowMemory(); - SDLActivity.nativeLowMemory(); - } - - @Override - protected void onDestroy() { - Log.v("SDL", "onDestroy()"); - // Send a quit message to the application - SDLActivity.mExitCalledFromJava = true; - SDLActivity.nativeQuit(); - - // Now wait for the SDL thread to quit - if (SDLActivity.mSDLThread != null) { - try { - SDLActivity.mSDLThread.join(); - } catch(Exception e) { - Log.v("SDL", "Problem stopping thread: " + e); - } - SDLActivity.mSDLThread = null; - - //Log.v("SDL", "Finished waiting for SDL thread"); - } - - super.onDestroy(); - // Reset everything in case the user re opens the app - SDLActivity.initialize(); - } - - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - int keyCode = event.getKeyCode(); - // Ignore certain special keys so they're handled by Android - if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || - keyCode == KeyEvent.KEYCODE_VOLUME_UP || - keyCode == KeyEvent.KEYCODE_CAMERA || - keyCode == 168 || /* API 11: KeyEvent.KEYCODE_ZOOM_IN */ - keyCode == 169 /* API 11: KeyEvent.KEYCODE_ZOOM_OUT */ - ) { - return false; - } - return super.dispatchKeyEvent(event); - } - - /** Called by onPause or surfaceDestroyed. Even if surfaceDestroyed - * is the first to be called, mIsSurfaceReady should still be set - * to 'true' during the call to onPause (in a usual scenario). - */ - public static void handlePause() { - if (!SDLActivity.mIsPaused && SDLActivity.mIsSurfaceReady) { - SDLActivity.mIsPaused = true; - SDLActivity.nativePause(); - mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, false); - } - } - - /** Called by onResume or surfaceCreated. An actual resume should be done only when the surface is ready. - * Note: Some Android variants may send multiple surfaceChanged events, so we don't need to resume - * every time we get one of those events, only if it comes after surfaceDestroyed - */ - public static void handleResume() { - if (SDLActivity.mIsPaused && SDLActivity.mIsSurfaceReady && SDLActivity.mHasFocus) { - SDLActivity.mIsPaused = false; - SDLActivity.nativeResume(); - mSurface.handleResume(); - } - } - - /* The native thread has finished */ - public static void handleNativeExit() { - SDLActivity.mSDLThread = null; - mSingleton.finish(); - } - - - // Messages from the SDLMain thread - static final int COMMAND_CHANGE_TITLE = 1; - static final int COMMAND_UNUSED = 2; - static final int COMMAND_TEXTEDIT_HIDE = 3; - - protected static final int COMMAND_USER = 0x8000; - - /** - * This method is called by SDL if SDL did not handle a message itself. - * This happens if a received message contains an unsupported command. - * Method can be overwritten to handle Messages in a different class. - * @param command the command of the message. - * @param param the parameter of the message. May be null. - * @return if the message was handled in overridden method. - */ - protected boolean onUnhandledMessage(int command, Object param) { - return false; - } - - /** - * A Handler class for Messages from native SDL applications. - * It uses current Activities as target (e.g. for the title). - * static to prevent implicit references to enclosing object. - */ - protected static class SDLCommandHandler extends Handler { - @Override - public void handleMessage(Message msg) { - Context context = getContext(); - if (context == null) { - Log.e(TAG, "error handling message, getContext() returned null"); - return; - } - switch (msg.arg1) { - case COMMAND_CHANGE_TITLE: - if (context instanceof Activity) { - ((Activity) context).setTitle((String)msg.obj); - } else { - Log.e(TAG, "error handling message, getContext() returned no Activity"); - } - break; - case COMMAND_TEXTEDIT_HIDE: - if (mTextEdit != null) { - mTextEdit.setVisibility(View.GONE); - - InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); - imm.hideSoftInputFromWindow(mTextEdit.getWindowToken(), 0); - } - break; - - default: - if ((context instanceof SDLActivity) && !((SDLActivity) context).onUnhandledMessage(msg.arg1, msg.obj)) { - Log.e(TAG, "error handling message, command is " + msg.arg1); - } - } - } - } - - // Handler for the messages - Handler commandHandler = new SDLCommandHandler(); - - // Send a message from the SDLMain thread - boolean sendCommand(int command, Object data) { - Message msg = commandHandler.obtainMessage(); - msg.arg1 = command; - msg.obj = data; - return commandHandler.sendMessage(msg); - } - - // C functions we call - public static native int nativeInit(); - public static native void nativeLowMemory(); - public static native void nativeQuit(); - public static native void nativePause(); - public static native void nativeResume(); - public static native void onNativeResize(int x, int y, int format); - public static native int onNativePadDown(int device_id, int keycode); - public static native int onNativePadUp(int device_id, int keycode); - public static native void onNativeJoy(int device_id, int axis, - float value); - public static native void onNativeHat(int device_id, int hat_id, - int x, int y); - public static native void onNativeKeyDown(int keycode); - public static native void onNativeKeyUp(int keycode); - public static native void onNativeKeyboardFocusLost(); - public static native void onNativeTouch(int touchDevId, int pointerFingerId, - int action, float x, - float y, float p); - public static native void onNativeAccel(float x, float y, float z); - public static native void onNativeSurfaceChanged(); - public static native void onNativeSurfaceDestroyed(); - public static native void nativeFlipBuffers(); - public static native int nativeAddJoystick(int device_id, String name, - int is_accelerometer, int nbuttons, - int naxes, int nhats, int nballs); - public static native int nativeRemoveJoystick(int device_id); - public static native String nativeGetHint(String name); - - /** - * This method is called by SDL using JNI. - */ - public static void flipBuffers() { - SDLActivity.nativeFlipBuffers(); - } - - /** - * This method is called by SDL using JNI. - */ - public static boolean setActivityTitle(String title) { - // Called from SDLMain() thread and can't directly affect the view - return mSingleton.sendCommand(COMMAND_CHANGE_TITLE, title); - } - - /** - * This method is called by SDL using JNI. - */ - public static boolean sendMessage(int command, int param) { - return mSingleton.sendCommand(command, Integer.valueOf(param)); - } - - /** - * This method is called by SDL using JNI. - */ - public static Context getContext() { - return mSingleton; - } - - /** - * This method is called by SDL using JNI. - * @return result of getSystemService(name) but executed on UI thread. - */ - public Object getSystemServiceFromUiThread(final String name) { - final Object lock = new Object(); - final Object[] results = new Object[2]; // array for writable variables - synchronized (lock) { - runOnUiThread(new Runnable() { - @Override - public void run() { - synchronized (lock) { - results[0] = getSystemService(name); - results[1] = Boolean.TRUE; - lock.notify(); - } - } - }); - if (results[1] == null) { - try { - lock.wait(); - } catch (InterruptedException ex) { - ex.printStackTrace(); - } - } - } - return results[0]; - } - - static class ShowTextInputTask implements Runnable { - /* - * This is used to regulate the pan&scan method to have some offset from - * the bottom edge of the input region and the top edge of an input - * method (soft keyboard) - */ - static final int HEIGHT_PADDING = 15; - - public int x, y, w, h; - - public ShowTextInputTask(int x, int y, int w, int h) { - this.x = x; - this.y = y; - this.w = w; - this.h = h; - } - - @Override - public void run() { - AbsoluteLayout.LayoutParams params = new AbsoluteLayout.LayoutParams( - w, h + HEIGHT_PADDING, x, y); - - if (mTextEdit == null) { - mTextEdit = new DummyEdit(getContext()); - - mLayout.addView(mTextEdit, params); - } else { - mTextEdit.setLayoutParams(params); - } - - mTextEdit.setVisibility(View.VISIBLE); - mTextEdit.requestFocus(); - - InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); - imm.showSoftInput(mTextEdit, 0); - } - } - - /** - * This method is called by SDL using JNI. - */ - public static boolean showTextInput(int x, int y, int w, int h) { - // Transfer the task to the main thread as a Runnable - return mSingleton.commandHandler.post(new ShowTextInputTask(x, y, w, h)); - } - - /** - * This method is called by SDL using JNI. - */ - public static Surface getNativeSurface() { - return SDLActivity.mSurface.getNativeSurface(); - } - - // Audio - - - public static int audioInit(int sampleRate, boolean is16Bit, boolean isStereo, int desiredFrames) { - int channelConfig = isStereo ? AudioFormat.CHANNEL_CONFIGURATION_STEREO : AudioFormat.CHANNEL_CONFIGURATION_MONO; - int audioFormat = is16Bit ? AudioFormat.ENCODING_PCM_16BIT : AudioFormat.ENCODING_PCM_8BIT; - int frameSize = (isStereo ? 2 : 1) * (is16Bit ? 2 : 1); - - Log.v("SDL", "SDL audio: wanted " + (isStereo ? "stereo" : "mono") + " " + (is16Bit ? "16-bit" : "8-bit") + " " + (sampleRate / 1000f) + "kHz, " + desiredFrames + " frames buffer"); - - // Let the user pick a larger buffer if they really want -- but ye - // gods they probably shouldn't, the minimums are horrifyingly high - // latency already - desiredFrames = Math.max(desiredFrames, (AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat) + frameSize - 1) / frameSize); - - if (mAudioTrack == null) { - mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, - channelConfig, audioFormat, desiredFrames * frameSize, AudioTrack.MODE_STREAM); - - // Instantiating AudioTrack can "succeed" without an exception and the track may still be invalid - // Ref: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/media/java/android/media/AudioTrack.java - // Ref: http://developer.android.com/reference/android/media/AudioTrack.html#getState() - - if (mAudioTrack.getState() != AudioTrack.STATE_INITIALIZED) { - Log.e("SDL", "Failed during initialization of Audio Track"); - mAudioTrack = null; - return -1; - } - - mAudioTrack.play(); - } - - Log.v("SDL", "SDL audio: got " + ((mAudioTrack.getChannelCount() >= 2) ? "stereo" : "mono") + " " + ((mAudioTrack.getAudioFormat() == AudioFormat.ENCODING_PCM_16BIT) ? "16-bit" : "8-bit") + " " + (mAudioTrack.getSampleRate() / 1000f) + "kHz, " + desiredFrames + " frames buffer"); - - return 0; - } - - - public static void audioWriteShortBuffer(short[] buffer) { - for (int i = 0; i < buffer.length; ) { - int result = mAudioTrack.write(buffer, i, buffer.length - i); - if (result > 0) { - i += result; - } else if (result == 0) { - try { - Thread.sleep(1); - } catch(InterruptedException e) { - // Nom nom - } - } else { - Log.w("SDL", "SDL audio: error return from write(short)"); - return; - } - } - } - - - public static void audioWriteByteBuffer(byte[] buffer) { - for (int i = 0; i < buffer.length; ) { - int result = mAudioTrack.write(buffer, i, buffer.length - i); - if (result > 0) { - i += result; - } else if (result == 0) { - try { - Thread.sleep(1); - } catch(InterruptedException e) { - // Nom nom - } - } else { - Log.w("SDL", "SDL audio: error return from write(byte)"); - return; - } - } - } - - - public static void audioQuit() { - if (mAudioTrack != null) { - mAudioTrack.stop(); - mAudioTrack = null; - } - } - - // Input - - /** - * This method is called by SDL using JNI. - * @return an array which may be empty but is never null. - */ - public static int[] inputGetInputDeviceIds(int sources) { - int[] ids = InputDevice.getDeviceIds(); - int[] filtered = new int[ids.length]; - int used = 0; - for (int i = 0; i < ids.length; ++i) { - InputDevice device = InputDevice.getDevice(ids[i]); - if ((device != null) && ((device.getSources() & sources) != 0)) { - filtered[used++] = device.getId(); - } - } - return Arrays.copyOf(filtered, used); - } - - // Joystick glue code, just a series of stubs that redirect to the SDLJoystickHandler instance - public static boolean handleJoystickMotionEvent(MotionEvent event) { - return mJoystickHandler.handleMotionEvent(event); - } - - /** - * This method is called by SDL using JNI. - */ - public static void pollInputDevices() { - if (SDLActivity.mSDLThread != null) { - mJoystickHandler.pollInputDevices(); - } - } - - // APK extension files support - - /** com.android.vending.expansion.zipfile.ZipResourceFile object or null. */ - private Object expansionFile; - - /** com.android.vending.expansion.zipfile.ZipResourceFile's getInputStream() or null. */ - private Method expansionFileMethod; - - public InputStream openAPKExtensionInputStream(String fileName) throws IOException { - // Get a ZipResourceFile representing a merger of both the main and patch files - if (expansionFile == null) { - Integer mainVersion = Integer.parseInt(nativeGetHint("SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION")); - Integer patchVersion = Integer.parseInt(nativeGetHint("SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION")); - - try { - // To avoid direct dependency on Google APK extension library that is - // not a part of Android SDK we access it using reflection - expansionFile = Class.forName("com.android.vending.expansion.zipfile.APKExpansionSupport") - .getMethod("getAPKExpansionZipFile", Context.class, int.class, int.class) - .invoke(null, this, mainVersion, patchVersion); - - expansionFileMethod = expansionFile.getClass() - .getMethod("getInputStream", String.class); - } catch (Exception ex) { - ex.printStackTrace(); - expansionFile = null; - expansionFileMethod = null; - } - } - - // Get an input stream for a known file inside the expansion file ZIPs - InputStream fileStream; - try { - fileStream = (InputStream)expansionFileMethod.invoke(expansionFile, fileName); - } catch (Exception ex) { - ex.printStackTrace(); - fileStream = null; - } - - if (fileStream == null) { - throw new IOException(); - } - - return fileStream; - } -} - -/** - Simple nativeInit() runnable -*/ -class SDLMain implements Runnable { - @Override - public void run() { - // Runs SDL_main() - try { - java.lang.Process p = Runtime.getRuntime().exec("su"); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - SDLActivity.nativeInit(); - - //Log.v("SDL", "SDL thread terminated"); - } -} - - -/** - SDLSurface. This is what we draw on, so we need to know when it's created - in order to do anything useful. - - Because of this, that's where we set up the SDL thread -*/ -class SDLSurface extends SurfaceView implements SurfaceHolder.Callback, - View.OnKeyListener, View.OnTouchListener, SensorEventListener { - - // Sensors - protected static SensorManager mSensorManager; - protected static Display mDisplay; - - // Keep track of the surface size to normalize touch events - protected static float mWidth, mHeight; - - // Startup - public SDLSurface(Context context) { - super(context); - getHolder().addCallback(this); - - setFocusable(true); - setFocusableInTouchMode(true); - requestFocus(); - setOnKeyListener(this); - setOnTouchListener(this); - - mDisplay = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); - mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); - - if(Build.VERSION.SDK_INT >= 12) { - setOnGenericMotionListener(new SDLGenericMotionListener_API12()); - } - - // Some arbitrary defaults to avoid a potential division by zero - mWidth = 1.0f; - mHeight = 1.0f; - } - - public void handleResume() { - setFocusable(true); - setFocusableInTouchMode(true); - requestFocus(); - setOnKeyListener(this); - setOnTouchListener(this); - enableSensor(Sensor.TYPE_ACCELEROMETER, true); - } - - public Surface getNativeSurface() { - return getHolder().getSurface(); - } - - // Called when we have a valid drawing surface - @Override - public void surfaceCreated(SurfaceHolder holder) { - Log.v("SDL", "surfaceCreated()"); - holder.setType(SurfaceHolder.SURFACE_TYPE_GPU); - } - - // Called when we lose the surface - @Override - public void surfaceDestroyed(SurfaceHolder holder) { - Log.v("SDL", "surfaceDestroyed()"); - // Call this *before* setting mIsSurfaceReady to 'false' - SDLActivity.handlePause(); - SDLActivity.mIsSurfaceReady = false; - SDLActivity.onNativeSurfaceDestroyed(); - } - - // Called when the surface is resized - @Override - public void surfaceChanged(SurfaceHolder holder, - int format, int width, int height) { - Log.v("SDL", "surfaceChanged()"); - - int sdlFormat = 0x15151002; // SDL_PIXELFORMAT_RGB565 by default - switch (format) { - case PixelFormat.A_8: - Log.v("SDL", "pixel format A_8"); - break; - case PixelFormat.LA_88: - Log.v("SDL", "pixel format LA_88"); - break; - case PixelFormat.L_8: - Log.v("SDL", "pixel format L_8"); - break; - case PixelFormat.RGBA_4444: - Log.v("SDL", "pixel format RGBA_4444"); - sdlFormat = 0x15421002; // SDL_PIXELFORMAT_RGBA4444 - break; - case PixelFormat.RGBA_5551: - Log.v("SDL", "pixel format RGBA_5551"); - sdlFormat = 0x15441002; // SDL_PIXELFORMAT_RGBA5551 - break; - case PixelFormat.RGBA_8888: - Log.v("SDL", "pixel format RGBA_8888"); - sdlFormat = 0x16462004; // SDL_PIXELFORMAT_RGBA8888 - break; - case PixelFormat.RGBX_8888: - Log.v("SDL", "pixel format RGBX_8888"); - sdlFormat = 0x16261804; // SDL_PIXELFORMAT_RGBX8888 - break; - case PixelFormat.RGB_332: - Log.v("SDL", "pixel format RGB_332"); - sdlFormat = 0x14110801; // SDL_PIXELFORMAT_RGB332 - break; - case PixelFormat.RGB_565: - Log.v("SDL", "pixel format RGB_565"); - sdlFormat = 0x15151002; // SDL_PIXELFORMAT_RGB565 - break; - case PixelFormat.RGB_888: - Log.v("SDL", "pixel format RGB_888"); - // Not sure this is right, maybe SDL_PIXELFORMAT_RGB24 instead? - sdlFormat = 0x16161804; // SDL_PIXELFORMAT_RGB888 - break; - default: - Log.v("SDL", "pixel format unknown " + format); - break; - } - - mWidth = width; - mHeight = height; - SDLActivity.onNativeResize(width, height, sdlFormat); - Log.v("SDL", "Window size:" + width + "x"+height); - - // Set mIsSurfaceReady to 'true' *before* making a call to handleResume - SDLActivity.mIsSurfaceReady = true; - SDLActivity.onNativeSurfaceChanged(); - - - if (SDLActivity.mSDLThread == null) { - // This is the entry point to the C app. - // Start up the C app thread and enable sensor input for the first time - - SDLActivity.mSDLThread = new Thread(new SDLMain(), "SDLThread"); - enableSensor(Sensor.TYPE_ACCELEROMETER, true); - SDLActivity.mSDLThread.start(); - - // Set up a listener thread to catch when the native thread ends - new Thread(new Runnable(){ - @Override - public void run(){ - try { - SDLActivity.mSDLThread.join(); - } - catch(Exception e){} - finally{ - // Native thread has finished - if (! SDLActivity.mExitCalledFromJava) { - SDLActivity.handleNativeExit(); - } - } - } - }).start(); - } - } - - // unused - @Override - public void onDraw(Canvas canvas) {} - - - // Key events - @Override - public boolean onKey(View v, int keyCode, KeyEvent event) { - // Dispatch the different events depending on where they come from - // Some SOURCE_DPAD or SOURCE_GAMEPAD are also SOURCE_KEYBOARD - // So, we try to process them as DPAD or GAMEPAD events first, if that fails we try them as KEYBOARD - - if ( (event.getSource() & 0x00000401) != 0 || /* API 12: SOURCE_GAMEPAD */ - (event.getSource() & InputDevice.SOURCE_DPAD) != 0 ) { - if (event.getAction() == KeyEvent.ACTION_DOWN) { - if (SDLActivity.onNativePadDown(event.getDeviceId(), keyCode) == 0) { - return true; - } - } else if (event.getAction() == KeyEvent.ACTION_UP) { - if (SDLActivity.onNativePadUp(event.getDeviceId(), keyCode) == 0) { - return true; - } - } - } - - if( (event.getSource() & InputDevice.SOURCE_KEYBOARD) != 0) { - if (event.getAction() == KeyEvent.ACTION_DOWN) { - //Log.v("SDL", "key down: " + keyCode); - SDLActivity.onNativeKeyDown(keyCode); - return true; - } - else if (event.getAction() == KeyEvent.ACTION_UP) { - //Log.v("SDL", "key up: " + keyCode); - SDLActivity.onNativeKeyUp(keyCode); - return true; - } - } - - return false; - } - - // Touch events - @Override - public boolean onTouch(View v, MotionEvent event) { - /* Ref: http://developer.android.com/training/gestures/multi.html */ - final int touchDevId = event.getDeviceId(); - final int pointerCount = event.getPointerCount(); - int action = event.getActionMasked(); - int pointerFingerId; - int i = -1; - float x,y,p; - - switch(action) { - case MotionEvent.ACTION_MOVE: - for (i = 0; i < pointerCount; i++) { - pointerFingerId = event.getPointerId(i); - x = event.getX(i) / mWidth; - y = event.getY(i) / mHeight; - p = event.getPressure(i); - SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p); - } - break; - - case MotionEvent.ACTION_UP: - case MotionEvent.ACTION_DOWN: - // Primary pointer up/down, the index is always zero - i = 0; - case MotionEvent.ACTION_POINTER_UP: - case MotionEvent.ACTION_POINTER_DOWN: - // Non primary pointer up/down - if (i == -1) { - i = event.getActionIndex(); - } - - pointerFingerId = event.getPointerId(i); - x = event.getX(i) / mWidth; - y = event.getY(i) / mHeight; - p = event.getPressure(i); - SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p); - break; - - case MotionEvent.ACTION_CANCEL: - for (i = 0; i < pointerCount; i++) { - pointerFingerId = event.getPointerId(i); - x = event.getX(i) / mWidth; - y = event.getY(i) / mHeight; - p = event.getPressure(i); - SDLActivity.onNativeTouch(touchDevId, pointerFingerId, MotionEvent.ACTION_UP, x, y, p); - } - break; - - default: - break; - } - - return true; - } - - // Sensor events - public void enableSensor(int sensortype, boolean enabled) { - // TODO: This uses getDefaultSensor - what if we have >1 accels? - if (!SDLActivity.mAccelerometerEnabled) { - return; - } - if (enabled) { - mSensorManager.registerListener(this, - mSensorManager.getDefaultSensor(sensortype), - SensorManager.SENSOR_DELAY_GAME, null); - } else { - mSensorManager.unregisterListener(this, - mSensorManager.getDefaultSensor(sensortype)); - } - } - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) { - // TODO - } - - @Override - public void onSensorChanged(SensorEvent event) { - if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { - float x, y; - switch (mDisplay.getRotation()) { - case Surface.ROTATION_90: - x = -event.values[1]; - y = event.values[0]; - break; - case Surface.ROTATION_270: - x = event.values[1]; - y = -event.values[0]; - break; - case Surface.ROTATION_180: - x = -event.values[1]; - y = -event.values[0]; - break; - default: - x = event.values[0]; - y = event.values[1]; - break; - } - SDLActivity.onNativeAccel(-x / SensorManager.GRAVITY_EARTH, - y / SensorManager.GRAVITY_EARTH, - event.values[2] / SensorManager.GRAVITY_EARTH - 1); - } - } -} - -/* This is a fake invisible editor view that receives the input and defines the - * pan&scan region - */ -class DummyEdit extends View implements View.OnKeyListener { - InputConnection ic; - - public DummyEdit(Context context) { - super(context); - setFocusableInTouchMode(true); - setFocusable(true); - setOnKeyListener(this); - } - - @Override - public boolean onCheckIsTextEditor() { - return true; - } - - @Override - public boolean onKey(View v, int keyCode, KeyEvent event) { - - // This handles the hardware keyboard input - if (event.isPrintingKey()) { - if (event.getAction() == KeyEvent.ACTION_DOWN) { - ic.commitText(String.valueOf((char) event.getUnicodeChar()), 1); - } - return true; - } - - if (event.getAction() == KeyEvent.ACTION_DOWN) { - SDLActivity.onNativeKeyDown(keyCode); - return true; - } else if (event.getAction() == KeyEvent.ACTION_UP) { - SDLActivity.onNativeKeyUp(keyCode); - return true; - } - - return false; - } - - // - @Override - public boolean onKeyPreIme (int keyCode, KeyEvent event) { - // As seen on StackOverflow: http://stackoverflow.com/questions/7634346/keyboard-hide-event - // FIXME: Discussion at http://bugzilla.libsdl.org/show_bug.cgi?id=1639 - // FIXME: This is not a 100% effective solution to the problem of detecting if the keyboard is showing or not - // FIXME: A more effective solution would be to change our Layout from AbsoluteLayout to Relative or Linear - // FIXME: And determine the keyboard presence doing this: http://stackoverflow.com/questions/2150078/how-to-check-visibility-of-software-keyboard-in-android - // FIXME: An even more effective way would be if Android provided this out of the box, but where would the fun be in that :) - if (event.getAction()==KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) { - if (SDLActivity.mTextEdit != null && SDLActivity.mTextEdit.getVisibility() == View.VISIBLE) { - SDLActivity.onNativeKeyboardFocusLost(); - } - } - return super.onKeyPreIme(keyCode, event); - } - - @Override - public InputConnection onCreateInputConnection(EditorInfo outAttrs) { - ic = new SDLInputConnection(this, true); - - outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI - | 33554432 /* API 11: EditorInfo.IME_FLAG_NO_FULLSCREEN */; - - return ic; - } -} - -class SDLInputConnection extends BaseInputConnection { - - public SDLInputConnection(View targetView, boolean fullEditor) { - super(targetView, fullEditor); - - } - - @Override - public boolean sendKeyEvent(KeyEvent event) { - - /* - * This handles the keycodes from soft keyboard (and IME-translated - * input from hardkeyboard) - */ - int keyCode = event.getKeyCode(); - if (event.getAction() == KeyEvent.ACTION_DOWN) { - if (event.isPrintingKey()) { - commitText(String.valueOf((char) event.getUnicodeChar()), 1); - } - SDLActivity.onNativeKeyDown(keyCode); - return true; - } else if (event.getAction() == KeyEvent.ACTION_UP) { - - SDLActivity.onNativeKeyUp(keyCode); - return true; - } - return super.sendKeyEvent(event); - } - - @Override - public boolean commitText(CharSequence text, int newCursorPosition) { - - nativeCommitText(text.toString(), newCursorPosition); - - return super.commitText(text, newCursorPosition); - } - - @Override - public boolean setComposingText(CharSequence text, int newCursorPosition) { - - nativeSetComposingText(text.toString(), newCursorPosition); - - return super.setComposingText(text, newCursorPosition); - } - - public native void nativeCommitText(String text, int newCursorPosition); - - public native void nativeSetComposingText(String text, int newCursorPosition); - - @Override - public boolean deleteSurroundingText(int beforeLength, int afterLength) { - // Workaround to capture backspace key. Ref: http://stackoverflow.com/questions/14560344/android-backspace-in-webview-baseinputconnection - if (beforeLength == 1 && afterLength == 0) { - // backspace - return super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)) - && super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL)); - } - - return super.deleteSurroundingText(beforeLength, afterLength); - } -} - -/* A null joystick handler for API level < 12 devices (the accelerometer is handled separately) */ -class SDLJoystickHandler { - - /** - * Handles given MotionEvent. - * @param event the event to be handled. - * @return if given event was processed. - */ - public boolean handleMotionEvent(MotionEvent event) { - return false; - } - - /** - * Handles adding and removing of input devices. - */ - public void pollInputDevices() { - } -} - -/* Actual joystick functionality available for API >= 12 devices */ -class SDLJoystickHandler_API12 extends SDLJoystickHandler { - - static class SDLJoystick { - public int device_id; - public String name; - public ArrayList axes; - public ArrayList hats; - } - static class RangeComparator implements Comparator { - @Override - public int compare(InputDevice.MotionRange arg0, InputDevice.MotionRange arg1) { - return arg0.getAxis() - arg1.getAxis(); - } - } - - private ArrayList mJoysticks; - - public SDLJoystickHandler_API12() { - - mJoysticks = new ArrayList(); - } - - @Override - public void pollInputDevices() { - int[] deviceIds = InputDevice.getDeviceIds(); - // It helps processing the device ids in reverse order - // For example, in the case of the XBox 360 wireless dongle, - // so the first controller seen by SDL matches what the receiver - // considers to be the first controller - - for(int i=deviceIds.length-1; i>-1; i--) { - SDLJoystick joystick = getJoystick(deviceIds[i]); - if (joystick == null) { - joystick = new SDLJoystick(); - InputDevice joystickDevice = InputDevice.getDevice(deviceIds[i]); - if( (joystickDevice.getSources() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) { - joystick.device_id = deviceIds[i]; - joystick.name = joystickDevice.getName(); - joystick.axes = new ArrayList(); - joystick.hats = new ArrayList(); - - List ranges = joystickDevice.getMotionRanges(); - Collections.sort(ranges, new RangeComparator()); - for (InputDevice.MotionRange range : ranges ) { - if ((range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0 ) { - if (range.getAxis() == MotionEvent.AXIS_HAT_X || - range.getAxis() == MotionEvent.AXIS_HAT_Y) { - joystick.hats.add(range); - } - else { - joystick.axes.add(range); - } - } - } - - mJoysticks.add(joystick); - SDLActivity.nativeAddJoystick(joystick.device_id, joystick.name, 0, -1, - joystick.axes.size(), joystick.hats.size()/2, 0); - } - } - } - - /* Check removed devices */ - ArrayList removedDevices = new ArrayList(); - for(int i=0; i < mJoysticks.size(); i++) { - int device_id = mJoysticks.get(i).device_id; - int j; - for (j=0; j < deviceIds.length; j++) { - if (device_id == deviceIds[j]) break; - } - if (j == deviceIds.length) { - removedDevices.add(Integer.valueOf(device_id)); - } - } - - for(int i=0; i < removedDevices.size(); i++) { - int device_id = removedDevices.get(i).intValue(); - SDLActivity.nativeRemoveJoystick(device_id); - for (int j=0; j < mJoysticks.size(); j++) { - if (mJoysticks.get(j).device_id == device_id) { - mJoysticks.remove(j); - break; - } - } - } - } - - protected SDLJoystick getJoystick(int device_id) { - for(int i=0; i < mJoysticks.size(); i++) { - if (mJoysticks.get(i).device_id == device_id) { - return mJoysticks.get(i); - } - } - return null; - } - - @Override - public boolean handleMotionEvent(MotionEvent event) { - if ( (event.getSource() & InputDevice.SOURCE_JOYSTICK) != 0) { - int actionPointerIndex = event.getActionIndex(); - int action = event.getActionMasked(); - switch(action) { - case MotionEvent.ACTION_MOVE: - SDLJoystick joystick = getJoystick(event.getDeviceId()); - if ( joystick != null ) { - for (int i = 0; i < joystick.axes.size(); i++) { - InputDevice.MotionRange range = joystick.axes.get(i); - /* Normalize the value to -1...1 */ - float value = ( event.getAxisValue( range.getAxis(), actionPointerIndex) - range.getMin() ) / range.getRange() * 2.0f - 1.0f; - SDLActivity.onNativeJoy(joystick.device_id, i, value ); - } - for (int i = 0; i < joystick.hats.size(); i+=2) { - int hatX = Math.round(event.getAxisValue( joystick.hats.get(i).getAxis(), actionPointerIndex ) ); - int hatY = Math.round(event.getAxisValue( joystick.hats.get(i+1).getAxis(), actionPointerIndex ) ); - SDLActivity.onNativeHat(joystick.device_id, i/2, hatX, hatY ); - } - } - break; - default: - break; - } - } - return true; - } -} - -class SDLGenericMotionListener_API12 implements View.OnGenericMotionListener { - // Generic Motion (mouse hover, joystick...) events go here - // We only have joysticks yet - @Override - public boolean onGenericMotion(View v, MotionEvent event) { - return SDLActivity.handleJoystickMotionEvent(event); - } -} diff --git a/extern/sdl4ogre/sdlwindowhelper.cpp b/extern/sdl4ogre/sdlwindowhelper.cpp index 224321914..7592afbec 100644 --- a/extern/sdl4ogre/sdlwindowhelper.cpp +++ b/extern/sdl4ogre/sdlwindowhelper.cpp @@ -45,14 +45,14 @@ SDLWindowHelper::SDLWindowHelper (SDL_Window* window, int w, int h, winHandle = Ogre::StringConverter::toString(WindowContentViewHandle(wmInfo)); break; -#elif BUILD_ANDROID +#elif ANDROID case SDL_SYSWM_ANDROID: winHandle = Ogre::StringConverter::toString((unsigned long)wmInfo.info.android.window); winHandleSurface = Ogre::StringConverter::toString((unsigned long)wmInfo.info.android.surface); - // flag1=true; + break; - #elif NOT_ANDROID + #else case SDL_SYSWM_X11: winHandle = Ogre::StringConverter::toString((unsigned long)wmInfo.info.x11.window); @@ -70,12 +70,10 @@ SDLWindowHelper::SDLWindowHelper (SDL_Window* window, int w, int h, /// \todo externalWindowHandle is deprecated according to the source code. Figure out a way to get parentWindowHandle /// to work properly. On Linux/X11 it causes an occasional GLXBadDrawable error. -#ifdef BUILD_ANDROID -params.insert(std::make_pair("externalWindowHandle", winHandle)); +#ifdef ANDROID params.insert(std::make_pair("externalSurface", winHandleSurface)); -#else -params.insert(std::make_pair("externalWindowHandle", winHandle)); #endif +params.insert(std::make_pair("externalWindowHandle", winHandle)); mWindow = Ogre::Root::getSingleton().createRenderWindow(title, w, h, fullscreen, ¶ms); }