more changes to work on ARM
This commit is contained in:
		
							parent
							
								
									a394033872
								
							
						
					
					
						commit
						e95973174c
					
				|  | @ -2,8 +2,13 @@ Client = { } | |||
| 
 | ||||
| -- TODO: load and save configurations | ||||
| function Client.init() | ||||
|   -- initialize in fullscreen mode on mobile devices | ||||
|   if g_window.getPlatformType() == "X11-EGL" then | ||||
|     g_window:setFullscreen() | ||||
|   else | ||||
|     g_window.move({ x=220, y=220 }) | ||||
|     g_window.resize({ width=800, height=480 }) | ||||
|   end | ||||
|   g_window.setTitle('OTClient') | ||||
|   g_window.setIcon('clienticon.png') | ||||
|   return true | ||||
|  |  | |||
|  | @ -32,25 +32,10 @@ function createEnvironment() | |||
|   return env | ||||
| end | ||||
| 
 | ||||
| function getCallingScriptSourcePath(depth) | ||||
|   depth = depth or 2 | ||||
|   local info = debug.getinfo(1+depth, "Sn") | ||||
|   local path | ||||
|   if info.short_src then | ||||
|     path = info.short_src:match("(.*)/.*") | ||||
|   end | ||||
|   if not path then | ||||
|     path = '/' | ||||
|   elseif path:sub(0, 1) ~= '/' then | ||||
|     path = '/' .. path | ||||
|   end | ||||
|   return path | ||||
| end | ||||
| 
 | ||||
| function resolveFileFullPath(filePath, depth) | ||||
|   depth = depth or 1 | ||||
|   if filePath:sub(0, 1) ~= '/' then | ||||
|     return getCallingScriptSourcePath(depth+1) .. '/' .. filePath | ||||
|     return getCurrentSourcePath(depth+1) .. '/' .. filePath | ||||
|   else | ||||
|     return filePath | ||||
|   end | ||||
|  |  | |||
|  | @ -164,7 +164,7 @@ std::string ResourceManager::resolvePath(const std::string& path) | |||
|     if(boost::starts_with(path, "/")) | ||||
|         fullPath = path; | ||||
|     else { | ||||
|         std::string scriptPath = "/" + g_lua.currentSourcePath(); | ||||
|         std::string scriptPath = "/" + g_lua.getCurrentSourcePath(); | ||||
|         if(!scriptPath.empty()) | ||||
|             fullPath += scriptPath + "/"; | ||||
|         fullPath += path; | ||||
|  |  | |||
|  | @ -201,10 +201,12 @@ void Application::registerLuaFunctions() | |||
|     g_lua.bindClassStaticFunction("g_window", "move", std::bind(&PlatformWindow::move, &g_window, _1)); | ||||
|     g_lua.bindClassStaticFunction("g_window", "resize", std::bind(&PlatformWindow::resize, &g_window, _1)); | ||||
|     g_lua.bindClassStaticFunction("g_window", "setVerticalSync", std::bind(&PlatformWindow::setVerticalSync, &g_window, _1)); | ||||
|     g_lua.bindClassStaticFunction("g_window", "setFullscreen", std::bind(&PlatformWindow::setFullscreen, &g_window, _1)); | ||||
|     g_lua.bindClassStaticFunction("g_window", "setTitle", std::bind(&PlatformWindow::setTitle, &g_window, _1)); | ||||
|     g_lua.bindClassStaticFunction("g_window", "setIcon", std::bind(&PlatformWindow::setIcon, &g_window, _1)); | ||||
|     g_lua.bindClassStaticFunction("g_window", "getMousePos", std::bind(&PlatformWindow::getMousePos, &g_window)); | ||||
|     g_lua.bindClassStaticFunction("g_window", "getSize", std::bind(&PlatformWindow::getSize, &g_window)); | ||||
|     g_lua.bindClassStaticFunction("g_window", "getPlatformType", std::bind(&PlatformWindow::getPlatformType, &g_window)); | ||||
| 
 | ||||
|     // Logger
 | ||||
|     g_lua.registerClass<Logger>(); | ||||
|  | @ -235,4 +237,5 @@ void Application::registerLuaFunctions() | |||
|     g_lua.bindGlobalFunction("setDefaultFont", std::bind(&FontManager::setDefaultFont, &g_fonts, _1)); | ||||
|     g_lua.bindGlobalFunction("loadUI", std::bind(&UIManager::loadUI, &g_ui, _1, _2)); | ||||
|     g_lua.bindGlobalFunction("getRootWidget", std::bind(&UIManager::getRootWidget, &g_ui)); | ||||
|     g_lua.bindGlobalFunction("getCurrentSourcePath", std::bind(&LuaInterface::getCurrentSourcePath, &g_lua, _1)); | ||||
| } | ||||
|  |  | |||
|  | @ -352,14 +352,13 @@ std::string LuaInterface::traceback(const std::string& errorMessage, int level) | |||
|     return popString(); | ||||
| } | ||||
| 
 | ||||
| std::string LuaInterface::currentSourcePath() | ||||
| std::string LuaInterface::getCurrentSourcePath(int level) | ||||
| { | ||||
|     std::string path; | ||||
|     if(!L) | ||||
|         return path; | ||||
| 
 | ||||
|     // check all stack functions for script source path
 | ||||
|     int level = 0; | ||||
|     while(true) { | ||||
|         getStackFunction(level); // pushes stack function
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -154,7 +154,7 @@ public: | |||
|     std::string traceback(const std::string& errorMessage = "", int level = 0); | ||||
| 
 | ||||
|     /// Searches for the source of the current running function
 | ||||
|     std::string currentSourcePath(); | ||||
|     std::string getCurrentSourcePath(int level = 0); | ||||
| 
 | ||||
|     /// @brief Calls a function
 | ||||
|     /// The function and arguments must be on top of the stack in order,
 | ||||
|  |  | |||
|  | @ -54,6 +54,7 @@ public: | |||
| 
 | ||||
|     virtual Size getDisplaySize() = 0; | ||||
|     virtual std::string getClipboardText() = 0; | ||||
|     virtual std::string getPlatformType() = 0; | ||||
| 
 | ||||
|     int getDisplayWidth() { return getDisplaySize().width(); } | ||||
|     int getDisplayHeight() { return getDisplaySize().width(); } | ||||
|  |  | |||
|  | @ -53,6 +53,7 @@ void crashHandler(int signum, siginfo_t* info, void* secret) | |||
|     ss << "     ebp = " << context.uc_mcontext.gregs[REG_EBP] << std::endl; | ||||
|     ss << "     esp = " << context.uc_mcontext.gregs[REG_ESP] << std::endl; | ||||
|     ss << "     efl = " << context.uc_mcontext.gregs[REG_EFL] << std::endl; | ||||
|     ss << std::endl; | ||||
| #elif __WORDSIZE == 64 | ||||
|     ss << "  at rip = " << context.uc_mcontext.gregs[REG_RIP] << std::endl; | ||||
|     ss << "     rax = " << context.uc_mcontext.gregs[REG_RAX] << std::endl; | ||||
|  | @ -64,8 +65,8 @@ void crashHandler(int signum, siginfo_t* info, void* secret) | |||
|     ss << "     rbp = " << context.uc_mcontext.gregs[REG_RBP] << std::endl; | ||||
|     ss << "     rsp = " << context.uc_mcontext.gregs[REG_RSP] << std::endl; | ||||
|     ss << "     efl = " << context.uc_mcontext.gregs[REG_EFL] << std::endl; | ||||
| #endif | ||||
|     ss << std::endl; | ||||
| #endif | ||||
|     ss.flags(std::ios::dec); | ||||
|     ss << "  backtrace:" << std::endl; | ||||
| 
 | ||||
|  |  | |||
|  | @ -610,3 +610,8 @@ std::string WIN32Window::getClipboardText() | |||
|     return text; | ||||
| } | ||||
| 
 | ||||
| std::string WIN32Window::getPlatformType() | ||||
| { | ||||
|     return "WIN32-WGL"; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -68,6 +68,7 @@ public: | |||
| 
 | ||||
|     Size getDisplaySize(); | ||||
|     std::string getClipboardText(); | ||||
|     std::string getPlatformType(); | ||||
| 
 | ||||
|     bool isMaximized() { return m_maximized; } | ||||
| 
 | ||||
|  |  | |||
|  | @ -904,6 +904,15 @@ std::string X11Window::getClipboardText() | |||
|     return clipboardText; | ||||
| } | ||||
| 
 | ||||
| std::string X11Window::getPlatformType() | ||||
| { | ||||
| #ifndef OPENGL_ES2 | ||||
|     return "X11-GLX"; | ||||
| #else | ||||
|     return "X11-EGL"; | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| bool X11Window::isMaximized() | ||||
| { | ||||
|     Atom wmState = XInternAtom(m_display, "_NET_WM_STATE", False); | ||||
|  |  | |||
|  | @ -75,6 +75,7 @@ public: | |||
| 
 | ||||
|     Size getDisplaySize(); | ||||
|     std::string getClipboardText(); | ||||
|     std::string getPlatformType(); | ||||
| 
 | ||||
|     bool isMaximized(); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Eduardo Bart
						Eduardo Bart