summaryrefslogtreecommitdiffstats
path: root/platform
diff options
context:
space:
mode:
authorA Thousand Ships <96648715+AThousandShips@users.noreply.github.com>2024-04-15 15:18:34 +0200
committerA Thousand Ships <96648715+AThousandShips@users.noreply.github.com>2024-05-04 16:08:55 +0200
commit955d5affa857ec1f358c56da8fb1ff4ab6590704 (patch)
treeb667ac9f6f62bff17ce032683c0eb09727660555 /platform
parent7ebc866418b075df58cbe4e31fcf8b0c3acd70a1 (diff)
downloadredot-engine-955d5affa857ec1f358c56da8fb1ff4ab6590704.tar.gz
Reduce and prevent unnecessary random-access to `List`
Random-access access to `List` when iterating is `O(n^2)` (`O(n)` when accessing a single element) * Removed subscript operator, in favor of a more explicit `get` * Added conversion from `Iterator` to `ConstIterator` * Remade existing operations into other solutions when applicable
Diffstat (limited to 'platform')
-rw-r--r--platform/android/export/export_plugin.cpp6
-rw-r--r--platform/android/java_godot_wrapper.cpp5
-rw-r--r--platform/ios/export/godot_plugin_config.cpp14
-rw-r--r--platform/linuxbsd/wayland/wayland_thread.cpp2
-rw-r--r--platform/web/os_web.cpp4
-rw-r--r--platform/windows/display_server_windows.cpp4
-rw-r--r--platform/windows/joypad_windows.cpp2
-rw-r--r--platform/windows/joypad_windows.h2
8 files changed, 20 insertions, 19 deletions
diff --git a/platform/android/export/export_plugin.cpp b/platform/android/export/export_plugin.cpp
index 3b1a534daf..30d57cade5 100644
--- a/platform/android/export/export_plugin.cpp
+++ b/platform/android/export/export_plugin.cpp
@@ -2974,11 +2974,11 @@ void EditorExportPlatformAndroid::_remove_copied_libs(String p_gdextension_libs_
String EditorExportPlatformAndroid::join_list(const List<String> &p_parts, const String &p_separator) {
String ret;
- for (int i = 0; i < p_parts.size(); ++i) {
- if (i > 0) {
+ for (List<String>::ConstIterator itr = p_parts.begin(); itr != p_parts.end(); ++itr) {
+ if (itr != p_parts.begin()) {
ret += p_separator;
}
- ret += p_parts[i];
+ ret += *itr;
}
return ret;
}
diff --git a/platform/android/java_godot_wrapper.cpp b/platform/android/java_godot_wrapper.cpp
index 0e766e7d56..6e7f5ef5a1 100644
--- a/platform/android/java_godot_wrapper.cpp
+++ b/platform/android/java_godot_wrapper.cpp
@@ -351,8 +351,9 @@ int GodotJavaWrapper::create_new_godot_instance(const List<String> &args) {
JNIEnv *env = get_jni_env();
ERR_FAIL_NULL_V(env, 0);
jobjectArray jargs = env->NewObjectArray(args.size(), env->FindClass("java/lang/String"), env->NewStringUTF(""));
- for (int i = 0; i < args.size(); i++) {
- jstring j_arg = env->NewStringUTF(args[i].utf8().get_data());
+ int i = 0;
+ for (List<String>::ConstIterator itr = args.begin(); itr != args.end(); ++itr, ++i) {
+ jstring j_arg = env->NewStringUTF(itr->utf8().get_data());
env->SetObjectArrayElement(jargs, i, j_arg);
env->DeleteLocalRef(j_arg);
}
diff --git a/platform/ios/export/godot_plugin_config.cpp b/platform/ios/export/godot_plugin_config.cpp
index 86d5c7ef5b..90e40b7c42 100644
--- a/platform/ios/export/godot_plugin_config.cpp
+++ b/platform/ios/export/godot_plugin_config.cpp
@@ -212,8 +212,8 @@ PluginConfigIOS PluginConfigIOS::load_plugin_config(Ref<ConfigFile> config_file,
List<String> keys;
config_file->get_section_keys(PluginConfigIOS::PLIST_SECTION, &keys);
- for (int i = 0; i < keys.size(); i++) {
- Vector<String> key_components = keys[i].split(":");
+ for (const String &key : keys) {
+ Vector<String> key_components = key.split(":");
String key_value = "";
PluginConfigIOS::PlistItemType key_type = PluginConfigIOS::PlistItemType::UNKNOWN;
@@ -245,29 +245,29 @@ PluginConfigIOS PluginConfigIOS::load_plugin_config(Ref<ConfigFile> config_file,
switch (key_type) {
case PluginConfigIOS::PlistItemType::STRING: {
- String raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, keys[i], String());
+ String raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, key, String());
value = "<string>" + raw_value + "</string>";
} break;
case PluginConfigIOS::PlistItemType::INTEGER: {
- int raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, keys[i], 0);
+ int raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, key, 0);
Dictionary value_dictionary;
String value_format = "<integer>$value</integer>";
value_dictionary["value"] = raw_value;
value = value_format.format(value_dictionary, "$_");
} break;
case PluginConfigIOS::PlistItemType::BOOLEAN:
- if (config_file->get_value(PluginConfigIOS::PLIST_SECTION, keys[i], false)) {
+ if (config_file->get_value(PluginConfigIOS::PLIST_SECTION, key, false)) {
value = "<true/>";
} else {
value = "<false/>";
}
break;
case PluginConfigIOS::PlistItemType::RAW: {
- String raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, keys[i], String());
+ String raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, key, String());
value = raw_value;
} break;
case PluginConfigIOS::PlistItemType::STRING_INPUT: {
- String raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, keys[i], String());
+ String raw_value = config_file->get_value(PluginConfigIOS::PLIST_SECTION, key, String());
value = raw_value;
} break;
default:
diff --git a/platform/linuxbsd/wayland/wayland_thread.cpp b/platform/linuxbsd/wayland/wayland_thread.cpp
index 1701aa650d..aabf1abdda 100644
--- a/platform/linuxbsd/wayland/wayland_thread.cpp
+++ b/platform/linuxbsd/wayland/wayland_thread.cpp
@@ -3427,7 +3427,7 @@ bool WaylandThread::window_get_idle_inhibition(DisplayServer::WindowID p_window_
WaylandThread::ScreenData WaylandThread::screen_get_data(int p_screen) const {
ERR_FAIL_INDEX_V(p_screen, registry.wl_outputs.size(), ScreenData());
- return wl_output_get_screen_state(registry.wl_outputs[p_screen])->data;
+ return wl_output_get_screen_state(registry.wl_outputs.get(p_screen))->data;
}
int WaylandThread::get_screen_count() const {
diff --git a/platform/web/os_web.cpp b/platform/web/os_web.cpp
index 6b6c9ddd63..ef8f90421b 100644
--- a/platform/web/os_web.cpp
+++ b/platform/web/os_web.cpp
@@ -276,8 +276,8 @@ OS_Web::OS_Web() {
if (AudioDriverWeb::is_available()) {
audio_drivers.push_back(memnew(AudioDriverWorklet));
}
- for (int i = 0; i < audio_drivers.size(); i++) {
- AudioDriverManager::add_driver(audio_drivers[i]);
+ for (AudioDriverWeb *audio_driver : audio_drivers) {
+ AudioDriverManager::add_driver(audio_driver);
}
idb_available = godot_js_os_fs_is_persistent();
diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp
index f101d85d58..90c3b8f9ef 100644
--- a/platform/windows/display_server_windows.cpp
+++ b/platform/windows/display_server_windows.cpp
@@ -2525,7 +2525,7 @@ Error DisplayServerWindows::dialog_show(String p_title, String p_description, Ve
Char16String title = p_title.utf16();
Char16String message = p_description.utf16();
- List<Char16String> buttons;
+ LocalVector<Char16String> buttons;
for (String s : p_buttons) {
buttons.push_back(s.utf16());
}
@@ -2533,7 +2533,7 @@ Error DisplayServerWindows::dialog_show(String p_title, String p_description, Ve
config.pszWindowTitle = (LPCWSTR)(title.get_data());
config.pszContent = (LPCWSTR)(message.get_data());
- const int button_count = MIN(buttons.size(), 8);
+ const int button_count = MIN((int)buttons.size(), 8);
config.cButtons = button_count;
// No dynamic stack array size :(
diff --git a/platform/windows/joypad_windows.cpp b/platform/windows/joypad_windows.cpp
index 60edb00dd2..a5f1629cf0 100644
--- a/platform/windows/joypad_windows.cpp
+++ b/platform/windows/joypad_windows.cpp
@@ -427,7 +427,7 @@ void JoypadWindows::process_joypads() {
const LONG axes[] = { DIJOFS_X, DIJOFS_Y, DIJOFS_Z, DIJOFS_RX, DIJOFS_RY, DIJOFS_RZ, (LONG)DIJOFS_SLIDER(0), (LONG)DIJOFS_SLIDER(1) };
int values[] = { js.lX, js.lY, js.lZ, js.lRx, js.lRy, js.lRz, js.rglSlider[0], js.rglSlider[1] };
- for (int j = 0; j < joy->joy_axis.size(); j++) {
+ for (uint32_t j = 0; j < joy->joy_axis.size(); j++) {
for (int k = 0; k < count; k++) {
if (joy->joy_axis[j] == axes[k]) {
input->joy_axis(joy->id, (JoyAxis)j, axis_correct(values[k]));
diff --git a/platform/windows/joypad_windows.h b/platform/windows/joypad_windows.h
index cfddbcc8dc..87c7af7657 100644
--- a/platform/windows/joypad_windows.h
+++ b/platform/windows/joypad_windows.h
@@ -77,7 +77,7 @@ private:
DWORD last_pad;
LPDIRECTINPUTDEVICE8 di_joy;
- List<LONG> joy_axis;
+ LocalVector<LONG> joy_axis;
GUID guid;
dinput_gamepad() {