Compiling and running on android, but the window is black when run (bug)
@ -31,20 +31,18 @@ endif()
|
|||||||
|
|
||||||
add_definitions(-D"VERSION=\\"${VERSION}\\"")
|
add_definitions(-D"VERSION=\\"${VERSION}\\"")
|
||||||
|
|
||||||
|
set(executable_SOURCES
|
||||||
|
src/main.cpp
|
||||||
|
)
|
||||||
|
|
||||||
if(ANDROID)
|
if(ANDROID)
|
||||||
include_directories($ENV{ANDROID_NDK}/sources/android/native_app_glue)
|
set( sdl_main
|
||||||
set(executable_SOURCES
|
android/SDL_android_main.c
|
||||||
"android/android.cpp"
|
${executable_SOURCES} )
|
||||||
"$ENV{ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c"
|
|
||||||
)
|
|
||||||
|
|
||||||
# add shared library for android
|
# add shared library for android
|
||||||
add_library(${PROJECT_NAME} SHARED ${framework_SOURCES} ${client_SOURCES} ${executable_SOURCES})
|
add_library(${PROJECT_NAME} SHARED ${framework_SOURCES} ${client_SOURCES} ${sdl_main})
|
||||||
else()
|
else()
|
||||||
set(executable_SOURCES
|
|
||||||
src/main.cpp
|
|
||||||
)
|
|
||||||
# add client executable
|
# add client executable
|
||||||
add_executable(${PROJECT_NAME} ${framework_SOURCES} ${client_SOURCES} ${executable_SOURCES})
|
add_executable(${PROJECT_NAME} ${framework_SOURCES} ${client_SOURCES} ${executable_SOURCES})
|
||||||
endif()
|
endif()
|
||||||
|
40
android/SDL_android_main.c
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
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"
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
Functions called by JNI
|
||||||
|
*******************************************************************************/
|
||||||
|
#include <jni.h>
|
||||||
|
|
||||||
|
/* Called before SDL_main() to initialize JNI bindings in SDL library */
|
||||||
|
extern void SDL_Android_Init(JNIEnv* env, jclass cls);
|
||||||
|
|
||||||
|
/* Start up the SDL app */
|
||||||
|
void 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();
|
||||||
|
|
||||||
|
/* Run the application code! */
|
||||||
|
int status;
|
||||||
|
char *argv[2];
|
||||||
|
argv[0] = SDL_strdup("SDL_app");
|
||||||
|
argv[1] = NULL;
|
||||||
|
status = SDL_main(1, argv);
|
||||||
|
|
||||||
|
/* Do not issue an exit or the whole application will terminate instead of just the SDL thread */
|
||||||
|
/* exit(status); */
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* __ANDROID__ */
|
||||||
|
|
||||||
|
/* vi: set ts=4 sw=4 expandtab: */
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 538 B |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 429 B |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 1.6 KiB |
BIN
android/project/res/drawable-xxxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
@ -33,7 +33,7 @@
|
|||||||
#include <framework/core/configmanager.h>
|
#include <framework/core/configmanager.h>
|
||||||
#include <framework/graphics/graphics.h>
|
#include <framework/graphics/graphics.h>
|
||||||
|
|
||||||
Client::Client(int argc, const char* argv[]) {
|
Client::Client(int argc, char* argv[]) {
|
||||||
std::vector<std::string> args(argv, argv + argc);
|
std::vector<std::string> args(argv, argv + argc);
|
||||||
initAppFrameworkAndOTClient(args);
|
initAppFrameworkAndOTClient(args);
|
||||||
}
|
}
|
||||||
@ -99,8 +99,8 @@ void Client::setupAppNameAndVersion() {
|
|||||||
void Client::findLuaInitScript() {
|
void Client::findLuaInitScript() {
|
||||||
if(!g_resources.discoverWorkDir("init.lua"))
|
if(!g_resources.discoverWorkDir("init.lua"))
|
||||||
g_logger.fatal("Unable to find work directory, the application cannot be initialized.");
|
g_logger.fatal("Unable to find work directory, the application cannot be initialized.");
|
||||||
else
|
|
||||||
runLuaInitScript();
|
runLuaInitScript();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::runLuaInitScript() {
|
void Client::runLuaInitScript() {
|
||||||
|
@ -33,7 +33,7 @@ class Client
|
|||||||
void runLuaInitScript();
|
void runLuaInitScript();
|
||||||
void registerLuaFunctions();
|
void registerLuaFunctions();
|
||||||
public:
|
public:
|
||||||
Client(int argc, const char* argv[]);
|
Client(int argc, char* argv[]);
|
||||||
void terminateAndFreeMemory();
|
void terminateAndFreeMemory();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -228,11 +228,11 @@ message(STATUS "LuaJIT: " ${LUAJIT})
|
|||||||
|
|
||||||
find_package(PhysFS REQUIRED)
|
find_package(PhysFS REQUIRED)
|
||||||
find_package(OpenSSL REQUIRED)
|
find_package(OpenSSL REQUIRED)
|
||||||
|
find_package(ZLIB REQUIRED)
|
||||||
|
|
||||||
if(NOT ANDROID)
|
if(ANDROID)
|
||||||
find_package(ZLIB REQUIRED)
|
set(framework_LIBRARIES ${framework_LIBRARIES} android log)
|
||||||
else()
|
find_package(SDL2 REQUIRED)
|
||||||
set(framework_LIBRARIES ${framework_LIBRARIES} z android log)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(framework_LIBRARIES ${framework_LIBRARIES}
|
set(framework_LIBRARIES ${framework_LIBRARIES}
|
||||||
@ -251,6 +251,11 @@ set(framework_INCLUDE_DIRS ${framework_INCLUDE_DIRS}
|
|||||||
${framework_INCLUDE_DIRS}
|
${framework_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(ANDROID)
|
||||||
|
set(framework_LIBRARIES ${framework_LIBRARIES} ${SDL2_LIBRARY})
|
||||||
|
set(framework_INCLUDE_DIRS ${framework_INCLUDE_DIRS} ${SDL2_INCLUDE_DIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
||||||
message(STATUS "Debug information: ON")
|
message(STATUS "Debug information: ON")
|
||||||
else()
|
else()
|
||||||
@ -306,25 +311,17 @@ endif()
|
|||||||
if(FRAMEWORK_GRAPHICS)
|
if(FRAMEWORK_GRAPHICS)
|
||||||
set(OPENGLES "OFF" CACHE "Use OpenGL ES 1.0 or 2.0 (for mobiles devices)" STRING)
|
set(OPENGLES "OFF" CACHE "Use OpenGL ES 1.0 or 2.0 (for mobiles devices)" STRING)
|
||||||
if(OPENGLES STREQUAL "2.0" OR (ANDROID_NATIVE_API_LEVEL AND ANDROID_NATIVE_API_LEVEL VERSION_GREATER 7))
|
if(OPENGLES STREQUAL "2.0" OR (ANDROID_NATIVE_API_LEVEL AND ANDROID_NATIVE_API_LEVEL VERSION_GREATER 7))
|
||||||
if(NOT ANDROID)
|
find_package(OpenGLES2 REQUIRED)
|
||||||
find_package(OpenGLES2 REQUIRED)
|
find_package(EGL REQUIRED)
|
||||||
find_package(EGL REQUIRED)
|
|
||||||
set(framework_INCLUDE_DIRS ${framework_INCLUDE_DIRS} ${EGL_INCLUDE_DIR} ${OPENGLES2_INCLUDE_DIR})
|
|
||||||
set(framework_LIBRARIES ${framework_LIBRARIES} ${EGL_LIBRARY} ${OPENGLES2_LIBRARY})
|
|
||||||
else()
|
|
||||||
set(framework_LIBRARIES ${framework_LIBRARIES} GLESv2)
|
|
||||||
endif()
|
|
||||||
set(framework_DEFINITIONS ${framework_DEFINITIONS} -DOPENGL_ES=2)
|
set(framework_DEFINITIONS ${framework_DEFINITIONS} -DOPENGL_ES=2)
|
||||||
|
set(framework_INCLUDE_DIRS ${framework_INCLUDE_DIRS} ${EGL_INCLUDE_DIR} ${OPENGLES2_INCLUDE_DIR})
|
||||||
|
set(framework_LIBRARIES ${framework_LIBRARIES} ${EGL_LIBRARY} ${OPENGLES2_LIBRARY})
|
||||||
ELSEif(OPENGLES STREQUAL "1.0" OR (ANDROID_NATIVE_API_LEVEL AND ANDROID_NATIVE_API_LEVEL VERSION_LESS 8))
|
ELSEif(OPENGLES STREQUAL "1.0" OR (ANDROID_NATIVE_API_LEVEL AND ANDROID_NATIVE_API_LEVEL VERSION_LESS 8))
|
||||||
if(NOT ANDROID)
|
find_package(OpenGLES1 REQUIRED)
|
||||||
find_package(OpenGLES1 REQUIRED)
|
find_package(EGL REQUIRED)
|
||||||
find_package(EGL REQUIRED)
|
|
||||||
set(framework_INCLUDE_DIRS ${framework_INCLUDE_DIRS} ${EGL_INCLUDE_DIR} ${OPENGLES1_INCLUDE_DIR})
|
|
||||||
set(framework_LIBRARIES ${framework_LIBRARIES} ${EGL_LIBRARY} ${OPENGLES1_LIBRARY})
|
|
||||||
else()
|
|
||||||
set(framework_LIBRARIES ${framework_LIBRARIES} GLESv1_CM)
|
|
||||||
endif()
|
|
||||||
set(framework_DEFINITIONS ${framework_DEFINITIONS} -DOPENGL_ES=1)
|
set(framework_DEFINITIONS ${framework_DEFINITIONS} -DOPENGL_ES=1)
|
||||||
|
set(framework_INCLUDE_DIRS ${framework_INCLUDE_DIRS} ${EGL_INCLUDE_DIR} ${OPENGLES1_INCLUDE_DIR})
|
||||||
|
set(framework_LIBRARIES ${framework_LIBRARIES} ${EGL_LIBRARY} ${OPENGLES1_LIBRARY})
|
||||||
else()
|
else()
|
||||||
## TODO: CMake Documentation says that this is not the right
|
## TODO: CMake Documentation says that this is not the right
|
||||||
# Thing for Mac OS X, but it works for now.
|
# Thing for Mac OS X, but it works for now.
|
||||||
@ -361,7 +358,7 @@ if(FRAMEWORK_GRAPHICS)
|
|||||||
${CMAKE_CURRENT_LIST_DIR}/graphics/dx/painterdx9.h
|
${CMAKE_CURRENT_LIST_DIR}/graphics/dx/painterdx9.h
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
elseif(NOT ANDROID)
|
elseif(NOT ANDROID)
|
||||||
set(framework_LIBRARIES ${framework_LIBRARIES} X11)
|
set(framework_LIBRARIES ${framework_LIBRARIES} X11)
|
||||||
endif()
|
endif()
|
||||||
|
12
src/framework/cmake/FindSDL2.cmake
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# Try to find the SDL2 library
|
||||||
|
# SDL2_FOUND - system has SDL2
|
||||||
|
# SDL2_INCLUDE_DIR - the SDL2 include directory
|
||||||
|
# SDL2_LIBRARY - the SDL2 library
|
||||||
|
|
||||||
|
FIND_PATH(SDL2_INCLUDE_DIR NAMES SDL.h PATH_SUFFIXES sdl2)
|
||||||
|
SET(_SDL2_STATIC_LIBS libSDL2.a)
|
||||||
|
SET(_SDL2_SHARED_LIBS libSDL2.so SDL2)
|
||||||
|
FIND_LIBRARY(SDL2_LIBRARY NAMES ${_SDL2_SHARED_LIBS} ${_SDL2_STATIC_LIBS})
|
||||||
|
INCLUDE(FindPackageHandleStandardArgs)
|
||||||
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 DEFAULT_MSG SDL2_LIBRARY SDL2_INCLUDE_DIR)
|
||||||
|
MARK_AS_ADVANCED(SDL2_LIBRARY SDL2_INCLUDE_DIR)
|
@ -177,6 +177,8 @@ std::string Application::getOs()
|
|||||||
return "mac";
|
return "mac";
|
||||||
#elif __linux
|
#elif __linux
|
||||||
return "linux";
|
return "linux";
|
||||||
|
#elif defined ANDROID
|
||||||
|
return "android";
|
||||||
#else
|
#else
|
||||||
return "unknown";
|
return "unknown";
|
||||||
#endif
|
#endif
|
||||||
|
@ -32,6 +32,10 @@
|
|||||||
#include <framework/luaengine/luainterface.h>
|
#include <framework/luaengine/luainterface.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
#include <android/log.h>
|
||||||
|
#endif // ANDROID
|
||||||
|
|
||||||
Logger g_logger;
|
Logger g_logger;
|
||||||
|
|
||||||
void Logger::log(Fw::LogLevel level, const std::string& message)
|
void Logger::log(Fw::LogLevel level, const std::string& message)
|
||||||
@ -66,6 +70,9 @@ void Logger::log(Fw::LogLevel level, const std::string& message)
|
|||||||
outmsg = tmp.str();
|
outmsg = tmp.str();
|
||||||
#endif
|
#endif
|
||||||
*/
|
*/
|
||||||
|
#ifdef ANDROID
|
||||||
|
__android_log_print(ANDROID_LOG_INFO, "OTClientMobile", outmsg.c_str());
|
||||||
|
#endif // ANDROID
|
||||||
|
|
||||||
std::cout << outmsg << std::endl;
|
std::cout << outmsg << std::endl;
|
||||||
|
|
||||||
|
@ -48,7 +48,8 @@ bool ResourceManager::discoverWorkDir(const std::string& existentFile)
|
|||||||
std::string possiblePaths[] = { g_platform.getCurrentDir(),
|
std::string possiblePaths[] = { g_platform.getCurrentDir(),
|
||||||
g_resources.getBaseDir(),
|
g_resources.getBaseDir(),
|
||||||
g_resources.getBaseDir() + "../",
|
g_resources.getBaseDir() + "../",
|
||||||
g_resources.getBaseDir() + "../share/" + g_app.getCompactName() + "/" };
|
g_resources.getBaseDir() + "../share/" + g_app.getCompactName() + "/",
|
||||||
|
"/sdcard/OTClient/" };
|
||||||
|
|
||||||
bool found = false;
|
bool found = false;
|
||||||
for(const std::string& dir : possiblePaths) {
|
for(const std::string& dir : possiblePaths) {
|
||||||
@ -71,12 +72,20 @@ bool ResourceManager::setupUserWriteDir(const std::string& appWriteDirName)
|
|||||||
{
|
{
|
||||||
std::string userDir = getUserDir();
|
std::string userDir = getUserDir();
|
||||||
std::string dirName;
|
std::string dirName;
|
||||||
|
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
dirName = stdext::format(".%s", appWriteDirName);
|
dirName = stdext::format(".%s", appWriteDirName);
|
||||||
#else
|
#else
|
||||||
dirName = appWriteDirName;
|
dirName = appWriteDirName;
|
||||||
#endif
|
#endif
|
||||||
std::string writeDir = userDir + dirName;
|
|
||||||
|
std::string writeDir;
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
writeDir = getWorkDir();
|
||||||
|
#else
|
||||||
|
writeDir = userDir + dirName;
|
||||||
|
#endif
|
||||||
|
|
||||||
if(!PHYSFS_setWriteDir(writeDir.c_str())) {
|
if(!PHYSFS_setWriteDir(writeDir.c_str())) {
|
||||||
if(!PHYSFS_setWriteDir(userDir.c_str()) || !PHYSFS_mkdir(dirName.c_str())) {
|
if(!PHYSFS_setWriteDir(userDir.c_str()) || !PHYSFS_mkdir(dirName.c_str())) {
|
||||||
|
@ -1,16 +1,120 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2010-2014 OTClient <https://github.com/edubart/otclient>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
|
||||||
#include "sdlwindow.h"
|
#include "sdlwindow.h"
|
||||||
|
|
||||||
SDLWindow::SDLWindow() {
|
SDLWindow::SDLWindow() {
|
||||||
m_window = 0;
|
|
||||||
m_cursor = 0;
|
|
||||||
m_minimumSize = Size(600,480);
|
m_minimumSize = Size(600,480);
|
||||||
m_size = Size(600,480);
|
m_size = Size(600,480);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDLWindow::init() {
|
void SDLWindow::init() {
|
||||||
|
window = 0;
|
||||||
|
gl = 0;
|
||||||
|
|
||||||
|
initializeSDL();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SDLWindow::initializeSDL() {
|
||||||
|
if(SDL_Init(SDL_INIT_VIDEO) != 0 ) {
|
||||||
|
g_logger.fatal( stdext::format("Unable to initialize SDL: %s", SDL_GetError()) );
|
||||||
|
terminate();
|
||||||
|
}
|
||||||
|
|
||||||
|
setSDLAttributes();
|
||||||
|
|
||||||
|
SDL_GetDisplayMode( 0, 0, &mode );
|
||||||
|
int width = mode.w;
|
||||||
|
int height = mode.h;
|
||||||
|
|
||||||
|
window = SDL_CreateWindow( NULL, 0, 0, width, height, SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN | SDL_WINDOW_RESIZABLE );
|
||||||
|
|
||||||
|
if( window == 0 ) {
|
||||||
|
g_logger.fatal("Failed to create window");
|
||||||
|
terminate();
|
||||||
|
}
|
||||||
|
|
||||||
|
gl = SDL_GL_CreateContext(window);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SDLWindow::setSDLAttributes() {
|
||||||
|
SDL_LogSetAllPriority(SDL_LOG_PRIORITY_VERBOSE);
|
||||||
|
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 4);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 4);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 4);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 4);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, OPENGL_ES);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);
|
||||||
|
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDLWindow::terminate() {
|
void SDLWindow::terminate() {
|
||||||
|
SDL_Quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SDLWindow::hide() {
|
||||||
|
// TODO?
|
||||||
|
}
|
||||||
|
|
||||||
|
void SDLWindow::poll() {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void SDLWindow::swapBuffers() {
|
||||||
|
SDL_GL_SwapWindow(window);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SDLWindow::setVerticalSync(bool enable) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string SDLWindow::getClipboardText() {
|
||||||
|
return SDL_GetClipboardText();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SDLWindow::setClipboardText(const std::string& text) {
|
||||||
|
SDL_SetClipboardText(text.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
Size SDLWindow::getDisplaySize() {
|
||||||
|
Size size(mode.w, mode.h);
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string SDLWindow::getPlatformType() {
|
||||||
|
return "Android";
|
||||||
|
}
|
||||||
|
|
||||||
|
void SDLWindow::show() {
|
||||||
|
// android doesn't need to show activity, it's open automatically
|
||||||
|
}
|
||||||
|
|
||||||
|
void SDLWindow::maximize() {
|
||||||
|
// android doesn't has window
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDLWindow::move(const Point& pos) {
|
void SDLWindow::move(const Point& pos) {
|
||||||
@ -21,25 +125,6 @@ void SDLWindow::resize(const Size& size) {
|
|||||||
// android doesn't resize window
|
// android doesn't resize window
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDLWindow::show() {
|
|
||||||
// android doesn't need to show activity, it's open automacally
|
|
||||||
}
|
|
||||||
|
|
||||||
void SDLWindow::hide() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void SDLWindow::maximize() {
|
|
||||||
// android doesn't has window
|
|
||||||
}
|
|
||||||
|
|
||||||
void SDLWindow::poll() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void SDLWindow::swapBuffers() {
|
|
||||||
}
|
|
||||||
|
|
||||||
void SDLWindow::showMouse() {
|
void SDLWindow::showMouse() {
|
||||||
// android doesn't has mouse
|
// android doesn't has mouse
|
||||||
}
|
}
|
||||||
@ -73,26 +158,8 @@ void SDLWindow::setFullscreen(bool fullscreen) {
|
|||||||
// android doesn't has window
|
// android doesn't has window
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDLWindow::setVerticalSync(bool enable) {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
void SDLWindow::setIcon(const std::string& iconFile) {
|
void SDLWindow::setIcon(const std::string& iconFile) {
|
||||||
// android doesn't has window
|
// android doesn't has window
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDLWindow::setClipboardText(const std::string& text) {
|
#endif // ANDROID
|
||||||
}
|
|
||||||
|
|
||||||
Size SDLWindow::getDisplaySize() {
|
|
||||||
Size TODO;
|
|
||||||
return TODO;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string SDLWindow::getClipboardText() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string SDLWindow::getPlatformType() {
|
|
||||||
return "Android";
|
|
||||||
}
|
|
||||||
|
@ -1,15 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2010-2014 OTClient <https://github.com/edubart/otclient>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef SDL_PLATFORM_H
|
#ifndef SDL_PLATFORM_H
|
||||||
#define SDL_PLATFORM_H
|
#define SDL_PLATFORM_H
|
||||||
|
|
||||||
#include "platformwindow.h"
|
#include "platformwindow.h"
|
||||||
|
|
||||||
#ifdef OPENGL_ES
|
|
||||||
#include <EGL/egl.h>
|
#include <EGL/egl.h>
|
||||||
#endif
|
#include <SDL.h>
|
||||||
|
|
||||||
class SDLWindow : public PlatformWindow
|
class SDLWindow : public PlatformWindow
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
SDLWindow();
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
void terminate();
|
void terminate();
|
||||||
|
|
||||||
@ -36,8 +58,15 @@ public:
|
|||||||
Size getDisplaySize();
|
Size getDisplaySize();
|
||||||
std::string getClipboardText();
|
std::string getClipboardText();
|
||||||
std::string getPlatformType();
|
std::string getPlatformType();
|
||||||
|
|
||||||
|
void initializeSDL();
|
||||||
|
void setSDLAttributes();
|
||||||
protected:
|
protected:
|
||||||
int internalLoadMouseCursor(const ImagePtr& image, const Point& hotSpot);
|
int internalLoadMouseCursor(const ImagePtr& image, const Point& hotSpot);
|
||||||
|
private:
|
||||||
|
SDL_Window* window;
|
||||||
|
SDL_GLContext gl;
|
||||||
|
SDL_DisplayMode mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -20,9 +20,14 @@
|
|||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// The only way that the android sdl library can link a main function it's including SDL.h
|
||||||
|
#ifdef ANDROID
|
||||||
|
#include <SDL.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <client/client.h>
|
#include <client/client.h>
|
||||||
|
|
||||||
int main(int argc, const char* argv[])
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
Client client(argc, argv);
|
Client client(argc, argv);
|
||||||
client.terminateAndFreeMemory();
|
client.terminateAndFreeMemory();
|
||||||
|