summaryrefslogtreecommitdiffstats
path: root/platform/ios/export/export_plugin.h
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/export/export_plugin.h')
-rw-r--r--platform/ios/export/export_plugin.h98
1 files changed, 38 insertions, 60 deletions
diff --git a/platform/ios/export/export_plugin.h b/platform/ios/export/export_plugin.h
index 6616bbd714..7de4c0b69d 100644
--- a/platform/ios/export/export_plugin.h
+++ b/platform/ios/export/export_plugin.h
@@ -45,6 +45,7 @@
#include "editor/editor_settings.h"
#include "editor/export/editor_export_platform.h"
#include "main/splash.gen.h"
+#include "scene/resources/image_texture.h"
#include <string.h>
#include <sys/stat.h>
@@ -58,15 +59,30 @@ class EditorExportPlatformIOS : public EditorExportPlatform {
GDCLASS(EditorExportPlatformIOS, EditorExportPlatform);
Ref<ImageTexture> logo;
+ Ref<ImageTexture> run_icon;
// Plugins
mutable SafeFlag plugins_changed;
-#ifndef ANDROID_ENABLED
+ SafeFlag devices_changed;
+
+ struct Device {
+ String id;
+ String name;
+ bool simulator = false;
+ bool wifi = false;
+ };
+
+ Vector<Device> devices;
+ Mutex device_lock;
+
+ Mutex plugins_lock;
+ mutable Vector<PluginConfigIOS> plugins;
+#ifdef MACOS_ENABLED
Thread check_for_changes_thread;
SafeFlag quit_request;
+
+ static void _check_for_changes_poll_thread(void *ud);
#endif
- Mutex plugins_lock;
- mutable Vector<PluginConfigIOS> plugins;
typedef Error (*FileHandler)(String p_file, void *p_userdata);
static Error _walk_dir_recursive(Ref<DirAccess> &p_da, FileHandler p_handler, void *p_userdata);
@@ -122,64 +138,9 @@ class EditorExportPlatformIOS : public EditorExportPlatform {
Error _export_additional_assets(const String &p_out_dir, const Vector<SharedObject> &p_libraries, Vector<IOSExportAsset> &r_exported_assets);
Error _export_ios_plugins(const Ref<EditorExportPreset> &p_preset, IOSConfigData &p_config_data, const String &dest_dir, Vector<IOSExportAsset> &r_exported_assets, bool p_debug);
- bool is_package_name_valid(const String &p_package, String *r_error = nullptr) const {
- String pname = p_package;
-
- if (pname.length() == 0) {
- if (r_error) {
- *r_error = TTR("Identifier is missing.");
- }
- return false;
- }
-
- for (int i = 0; i < pname.length(); i++) {
- char32_t c = pname[i];
- if (!(is_ascii_alphanumeric_char(c) || c == '-' || c == '.')) {
- if (r_error) {
- *r_error = vformat(TTR("The character '%s' is not allowed in Identifier."), String::chr(c));
- }
- return false;
- }
- }
-
- return true;
- }
+ Error _export_project_helper(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags, bool p_simulator, bool p_skip_ipa);
-#ifndef ANDROID_ENABLED
- static void _check_for_changes_poll_thread(void *ud) {
- EditorExportPlatformIOS *ea = static_cast<EditorExportPlatformIOS *>(ud);
-
- while (!ea->quit_request.is_set()) {
- // Nothing to do if we already know the plugins have changed.
- if (!ea->plugins_changed.is_set()) {
- MutexLock lock(ea->plugins_lock);
-
- Vector<PluginConfigIOS> loaded_plugins = get_plugins();
-
- if (ea->plugins.size() != loaded_plugins.size()) {
- ea->plugins_changed.set();
- } else {
- for (int i = 0; i < ea->plugins.size(); i++) {
- if (ea->plugins[i].name != loaded_plugins[i].name || ea->plugins[i].last_updated != loaded_plugins[i].last_updated) {
- ea->plugins_changed.set();
- break;
- }
- }
- }
- }
-
- uint64_t wait = 3000000;
- uint64_t time = OS::get_singleton()->get_ticks_usec();
- while (OS::get_singleton()->get_ticks_usec() - time < wait) {
- OS::get_singleton()->delay_usec(300000);
-
- if (ea->quit_request.is_set()) {
- break;
- }
- }
- }
- }
-#endif
+ bool is_package_name_valid(const String &p_package, String *r_error = nullptr) const;
protected:
virtual void get_preset_features(const Ref<EditorExportPreset> &p_preset, List<String> *r_features) const override;
@@ -191,6 +152,23 @@ public:
virtual String get_name() const override { return "iOS"; }
virtual String get_os_name() const override { return "iOS"; }
virtual Ref<Texture2D> get_logo() const override { return logo; }
+ virtual Ref<Texture2D> get_run_icon() const override { return run_icon; }
+
+ virtual int get_options_count() const override;
+ virtual String get_options_tooltip() const override;
+ virtual Ref<ImageTexture> get_option_icon(int p_index) const override;
+ virtual String get_option_label(int p_index) const override;
+ virtual String get_option_tooltip(int p_index) const override;
+ virtual Error run(const Ref<EditorExportPreset> &p_preset, int p_device, int p_debug_flags) override;
+
+ virtual bool poll_export() override {
+ bool dc = devices_changed.is_set();
+ if (dc) {
+ // don't clear unless we're reporting true, to avoid race
+ devices_changed.clear();
+ }
+ return dc;
+ }
virtual bool should_update_export_options() override {
bool export_options_changed = plugins_changed.is_set();