fix some lambda ref, use global android_app variable instead of passing as argument, fix clipboard utf issue by using byte array

This commit is contained in:
2019-07-25 08:11:48 +02:00
parent 14e0716696
commit 5fc27ebb14
4 changed files with 143 additions and 125 deletions

View File

@@ -12,9 +12,9 @@
#include "settings.h"
#ifdef __ANDROID__
void android_async_lock(struct engine* engine);
void android_async_swap(struct engine* engine);
void android_async_unlock(struct engine* engine);
void android_async_lock();
void android_async_swap();
void android_async_unlock();
void android_attach_jni();
void android_detach_jni();
#elif _WIN32
@@ -418,7 +418,7 @@ void App::async_start()
#elif __IOS__
[ios_view async_lock];
#elif __ANDROID__
android_async_lock(and_engine);
android_async_lock();
#elif _WIN32
async_lock();
glBindFramebuffer(GL_FRAMEBUFFER, 0);
@@ -438,7 +438,7 @@ void App::async_end()
#elif __IOS__
[ios_view async_unlock];
#elif __ANDROID__
android_async_unlock(and_engine);
android_async_unlock();
#elif _WIN32
async_unlock();
#endif
@@ -451,7 +451,7 @@ void App::async_swap()
#elif __IOS__
[ios_view async_swap];
#elif __ANDROID__
android_async_swap(and_engine);
android_async_swap();
#elif _WIN32
win32_async_swap();
#endif

View File

@@ -2,8 +2,10 @@
#include "app.h"
#ifdef __ANDROID__
void displayKeyboard(android_app* mApplication, bool pShow);
void android_pick_file(android_app* mApplication, std::function<void(std::string)> callback);
void displayKeyboard(bool pShow);
void android_pick_file(std::function<void(std::string)> callback);
std::string android_get_clipboard();
bool android_set_clipboard(const std::string& s);
#elif _WIN32
std::string win32_open_file(const char* filter);
std::string win32_open_dir();
@@ -21,6 +23,8 @@ std::string App::clipboard_get_text()
return [ios_view clipboard_get_string];
#elif __OSX__
return [osx_view clipboard_get_string];
#elif __ANDROID__
return android_get_clipboard();
#endif
}
@@ -32,6 +36,8 @@ bool App::clipboard_set_text(const std::string& s)
return [ios_view clipboard_set_string:s];
#elif __OSX__
return [osx_view clipboard_set_string:s];
#elif __ANDROID__
return android_set_clipboard(s);
#endif
}
@@ -93,7 +99,7 @@ void App::showKeyboard()
[ios_view becomeFirstResponder];
});
#elif __ANDROID__
displayKeyboard(and_app, true);
displayKeyboard(true);
#endif
}
@@ -107,7 +113,7 @@ void App::hideKeyboard()
// [ios_view unregisterForKeyboardNotifications];
});
#elif __ANDROID__
displayKeyboard(and_app, false);
displayKeyboard(false);
#endif
}
@@ -126,7 +132,7 @@ void App::pick_image(std::function<void(std::string path)> callback)
callback(path);
});
#elif __ANDROID__
android_pick_file(and_app, callback);
android_pick_file(callback);
#elif _WIN32
std::string path = win32_open_file("Image Files (*.jpg, *.png)\0*.jpg;*.png");
if (!path.empty())
@@ -154,7 +160,7 @@ void App::pick_file(std::vector<std::string> types, std::function<void (std::str
callback(path);
});
#elif __ANDROID__
android_pick_file(and_app, callback);
android_pick_file(callback);
#elif _WIN32
std::string filter = "Supported Files (";
bool first_type = true;