diff --git a/configuration.c b/configuration.c index 4d28c288d8aa..01c27df78cb6 100644 --- a/configuration.c +++ b/configuration.c @@ -1784,6 +1784,8 @@ static struct config_bool_setting *populate_settings_bool( SETTING_BOOL("cloud_sync_destructive", &settings->bools.cloud_sync_destructive, true, false, false); SETTING_BOOL("cloud_sync_sync_saves", &settings->bools.cloud_sync_sync_saves, true, true, false); SETTING_BOOL("cloud_sync_sync_configs", &settings->bools.cloud_sync_sync_configs, true, true, false); + SETTING_BOOL("cloud_sync_sync_thumbs", &settings->bools.cloud_sync_sync_thumbs, true, false, false); + SETTING_BOOL("cloud_sync_sync_system", &settings->bools.cloud_sync_sync_system, true, false, false); SETTING_BOOL("discord_allow", &settings->bools.discord_enable, true, false, false); #ifdef HAVE_MIST SETTING_BOOL("steam_rich_presence_enable", &settings->bools.steam_rich_presence_enable, true, false, false); diff --git a/configuration.h b/configuration.h index 32a84d4a0b3f..74cfff11485a 100644 --- a/configuration.h +++ b/configuration.h @@ -964,6 +964,8 @@ typedef struct settings bool cloud_sync_destructive; bool cloud_sync_sync_saves; bool cloud_sync_sync_configs; + bool cloud_sync_sync_thumbs; + bool cloud_sync_sync_system; /* Misc. */ bool discord_enable; diff --git a/frontend/drivers/platform_unix.c b/frontend/drivers/platform_unix.c index 3a9df2c65a98..b19a60a78301 100644 --- a/frontend/drivers/platform_unix.c +++ b/frontend/drivers/platform_unix.c @@ -136,7 +136,7 @@ static char unix_cpu_model_name[64] = {0}; #define PROC_MEMINFO_CACHED_TAG "Cached:" #define PROC_MEMINFO_SHMEM_TAG "Shmem:" -#if (defined(__linux__) || defined(__unix__)) && !defined(ANDROID) +#if (defined(__linux__) || defined(__HAIKU__) || defined(__unix__)) && !defined(ANDROID) static int speak_pid = 0; #endif @@ -2793,7 +2793,7 @@ enum retro_language frontend_unix_get_user_language(void) return lang; } -#if (defined(__linux__) || defined(__unix__)) && !defined(ANDROID) +#if (defined(__linux__) || defined(__HAIKU__) || defined(__unix__)) && !defined(ANDROID) static bool is_narrator_running_unix(void) { return (kill(speak_pid, 0) == 0); @@ -3057,7 +3057,7 @@ frontend_ctx_driver_t frontend_ctx_unix = { frontend_unix_set_sustained_performance_mode, frontend_unix_get_cpu_model_name, frontend_unix_get_user_language, -#if (defined(__linux__) || defined(__unix__)) && !defined(ANDROID) +#if (defined(__linux__) || defined(__HAIKU__) || defined(__unix__)) && !defined(ANDROID) is_narrator_running_unix, /* is_narrator_running */ accessibility_speak_unix, /* accessibility_speak */ #else diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 8f9a3ea22d88..a7dc5c0f2885 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -157,7 +157,7 @@ static const gfx_ctx_driver_t *gfx_ctx_gl_drivers[] = { &gfx_ctx_cocoagl, #endif #endif -#if (defined(HAVE_SDL) || defined(HAVE_SDL2)) && (defined(HAVE_OPENGL) || defined(HAVE_OPENGL1) || defined(HAVE_OPENGL_CORE)) +#if (defined(HAVE_SDL) || defined(HAVE_SDL2)) && (defined(HAVE_OPENGL) || defined(HAVE_OPENGL1) || defined(HAVE_OPENGL_CORE)) && !defined(HAVE_COCOA) &gfx_ctx_sdl_gl, #endif #ifdef HAVE_OSMESA @@ -406,7 +406,7 @@ const video_driver_t *video_drivers[] = { #if defined(HAVE_SDL) && !defined(HAVE_SDL_DINGUX) &video_sdl, #endif -#ifdef HAVE_SDL2 +#if defined(HAVE_SDL2) && !(defined(HAVE_COCOA) || defined(HAVE_COCOA_METAL)) &video_sdl2, #endif #ifdef HAVE_SDL_DINGUX diff --git a/griffin/griffin.c b/griffin/griffin.c index e94db43fa44b..bc0af3700630 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -1639,6 +1639,16 @@ ANDROID PLAY FEATURE DELIVERY #include "../play_feature_delivery/play_feature_delivery.c" #endif + +/*============================================================ +FFMPEG +============================================================ */ +#ifdef HAVE_FFMPEG +#include "../cores/libretro-ffmpeg/packet_buffer.c" +#include "../cores/libretro-ffmpeg/video_buffer.c" +#include "../libretro-common/rthreads/tpool.c" +#endif + /*============================================================ STEAM INTEGRATION USING MIST ============================================================ */ diff --git a/input/drivers_hid/iohidmanager_hid.c b/input/drivers_hid/iohidmanager_hid.c index 4494f3cb6752..3de1c01d809d 100644 --- a/input/drivers_hid/iohidmanager_hid.c +++ b/input/drivers_hid/iohidmanager_hid.c @@ -495,7 +495,7 @@ static void iohidmanager_hid_device_remove(IOHIDDeviceRef device, iohidmanager_h for (i=0; islots[i].data; - if (!a) + if (!a || !hid->slots[i].connected) continue; if (a->handle == device) { @@ -517,6 +517,7 @@ static void iohidmanager_hid_device_remove(IOHIDDeviceRef device, iohidmanager_h hid->buttons[adapter->slot] = 0; memset(hid->axes[adapter->slot], 0, sizeof(hid->axes)); + hid->slots[adapter->slot].data = NULL; pad_connection_pad_deinit(&hid->slots[adapter->slot], adapter->slot); } diff --git a/input/input_driver.c b/input/input_driver.c index b2e8d216da66..d877e2329065 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -334,7 +334,7 @@ input_driver_t *input_drivers[] = { #ifdef HAVE_DINPUT &input_dinput, #endif -#if defined(HAVE_SDL) || defined(HAVE_SDL2) +#if (defined(HAVE_SDL) || defined(HAVE_SDL2)) && !(defined(HAVE_COCOA) || defined(HAVE_COCOA_METAL)) &input_sdl, #endif #if defined(DINGUX) && defined(HAVE_SDL_DINGUX) diff --git a/intl/msg_hash_ar.h b/intl/msg_hash_ar.h index c629eb42ad50..a31ae172b96b 100644 --- a/intl/msg_hash_ar.h +++ b/intl/msg_hash_ar.h @@ -1148,14 +1148,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVING_SETTINGS, "تغيير اعدادات النواة." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME, "اسم المستخدم" diff --git a/intl/msg_hash_ast.h b/intl/msg_hash_ast.h index 1c6c838b9023..c49291f84da7 100644 --- a/intl/msg_hash_ast.h +++ b/intl/msg_hash_ast.h @@ -868,14 +868,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE, "Activar la sincronización na nube" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME, "Nome d'usuariu" diff --git a/intl/msg_hash_be.h b/intl/msg_hash_be.h index ccf48d6283d1..23ac918081c2 100644 --- a/intl/msg_hash_be.h +++ b/intl/msg_hash_be.h @@ -1228,14 +1228,42 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE, "Дэструктыўная воблачная сінхранізацыя" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SAVES, + "Сінхранізацыя: захаванні/станы" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) + "Сінхранізацыя: файлы канфігурацыі" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_THUMBS, + "Сінхранізацыя: эскізы мініяцюр" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SYSTEM, + "Сінхранізацыя: сістэмныя файлы" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, + "Калі ўключана, захаванні/станы будуць сінхранізавацца з воблакам." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS, + "Калі ўключана, файлы канфігурацыі будуць сінхранізавацца з воблакам." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_THUMBS, + "Калі ўключана, эскізы мініяцюр будуць сінхранізавацца з воблакам. У большасці выпадкаў не рэкамендуецца, апрача багатых калекцый уласных эскізаў мініяцюр; інакш спампоўванне мініяцюр - лепшы выбар." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SYSTEM, + "Калі ўключана, сістэмныя файлы будуць сінхранізавацца з воблакам. Гэта можа значна павялічыць час, неабходны для сінхранізацыі; выкарыстоўвайце ўсвядомлена." + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Калі адключана, файлы будуць перасунутыя ў тэчку рэзервовай копіі перад іх перазапісам ці выдаленнем." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Бэкенд воблачнай сінхранізацыі" @@ -5039,6 +5067,14 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_USER, "Паказ 'Карыстальнік'" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_ICON_THUMBNAILS, + "Значкі плэй-ліста" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_ICON_THUMBNAILS, + "Тып мініяцюры для адлюстравання значкоў плэй-ліста." + ) MSG_HASH( MENU_ENUM_SUBLABEL_SETTINGS_SHOW_USER, "Паказваць налады 'Карыстальнік'." @@ -7081,6 +7117,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS, "Здымак экрана" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_LOGOS, + "Лагатып змесціва" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_ON, "УКЛ" diff --git a/intl/msg_hash_bg.h b/intl/msg_hash_bg.h index 3172be3fe3b0..59ddcc079f0e 100644 --- a/intl/msg_hash_bg.h +++ b/intl/msg_hash_bg.h @@ -336,14 +336,6 @@ MSG_HASH( /* Settings */ -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS, "Плейлисти" diff --git a/intl/msg_hash_ca.h b/intl/msg_hash_ca.h index cb4392bac375..f2828fc38296 100644 --- a/intl/msg_hash_ca.h +++ b/intl/msg_hash_ca.h @@ -1132,14 +1132,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVING_SETTINGS, "Canvia les configuracions de desament." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME, "Nom d’usuari" diff --git a/intl/msg_hash_chs.h b/intl/msg_hash_chs.h index 9e252ab3640e..e8cfcbe81839 100644 --- a/intl/msg_hash_chs.h +++ b/intl/msg_hash_chs.h @@ -1232,14 +1232,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE, "破坏性云同步" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "禁用后,文件会在被覆盖或删除之前移至备份文件夹。" - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "云同步后端" diff --git a/intl/msg_hash_cht.h b/intl/msg_hash_cht.h index 72cabf0d069d..aaec958fd441 100644 --- a/intl/msg_hash_cht.h +++ b/intl/msg_hash_cht.h @@ -1188,14 +1188,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_ENABLE, "嘗試將雲端設定檔、記憶存檔與狀態同步到雲端儲存供應商。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "若未啟用,覆蓋或刪除前檔案將會移動到備份資料夾。" - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "雲端同步後端" diff --git a/intl/msg_hash_cs.h b/intl/msg_hash_cs.h index 9ee32073a229..23524d8e47e4 100644 --- a/intl/msg_hash_cs.h +++ b/intl/msg_hash_cs.h @@ -1200,14 +1200,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE, "Destruktivní cloudová synchronizace" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Pokud je tato funkce vypnuta, jsou soubory před přepsáním nebo odstraněním přesunuty do záložní složky." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Backend cloudové synchronizace" diff --git a/intl/msg_hash_cy.h b/intl/msg_hash_cy.h index 20190aa47931..6b2ba1f5a86a 100644 --- a/intl/msg_hash_cy.h +++ b/intl/msg_hash_cy.h @@ -880,14 +880,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVING_SETTINGS, "Newid gosodiadau arbed." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS, "Logio" diff --git a/intl/msg_hash_da.h b/intl/msg_hash_da.h index f0d53ad7f982..ad12213e786a 100644 --- a/intl/msg_hash_da.h +++ b/intl/msg_hash_da.h @@ -752,14 +752,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVING_SETTINGS, "Skift gemmeindstillinger." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS, "Logning" diff --git a/intl/msg_hash_de.h b/intl/msg_hash_de.h index 1f5c99945d70..fc74fcc06250 100644 --- a/intl/msg_hash_de.h +++ b/intl/msg_hash_de.h @@ -1167,7 +1167,15 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Synchronisieren: Konfigurationsdateien" - ) + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_THUMBS, + "Sync: Vorschaubilder" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SYSTEM, + "Sync: Systemdateien" + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "Wenn aktiviert, werden Speicherdaten/Savestates mit der Cloud synchronisiert." @@ -1176,10 +1184,18 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS, "Wenn aktiviert, werden Konfigurationsdateien mit der Cloud synchronisiert." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_THUMBS, + "Wenn aktiviert, werden Miniaturbilder mit der Cloud synchronisiert. Allgemein nicht empfohlen, außer für große Sammlungen benutzerdefinierter Miniaturbilder. Andernfalls ist der Downloader eine bessere Wahl." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SYSTEM, + "Wenn aktiviert, werden die Systemdateien mit der Cloud synchronisiert. Dadurch kann sich die Zeit zum Synchronisieren erheblich verlängern; daher mit Vorsicht verwenden." + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Wenn deaktiviert, werden die Dateien in einen Sicherungsordner verschoben, bevor sie überschrieben oder gelöscht werden." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Cloud-Sync-Backend" diff --git a/intl/msg_hash_el.h b/intl/msg_hash_el.h index b1e48f2e38e1..57406fec01c6 100644 --- a/intl/msg_hash_el.h +++ b/intl/msg_hash_el.h @@ -1148,14 +1148,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVING_SETTINGS, "Αλλαγή ρυθμίσεων αποθήκευσης." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME, "Όνομα Χρήστη" diff --git a/intl/msg_hash_en.h b/intl/msg_hash_en.h index 98146212fa32..edeb34f6b7be 100644 --- a/intl/msg_hash_en.h +++ b/intl/msg_hash_en.h @@ -128,14 +128,6 @@ MSG_HASH( /* Settings */ -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) /* Core option category placeholders for icons */ diff --git a/intl/msg_hash_eo.h b/intl/msg_hash_eo.h index acf62f676194..196b2423541a 100644 --- a/intl/msg_hash_eo.h +++ b/intl/msg_hash_eo.h @@ -264,14 +264,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVING_SETTINGS, "Change settings for the saving." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_SUBLABEL_LOGGING_SETTINGS, "Change settings for the logging." diff --git a/intl/msg_hash_es.h b/intl/msg_hash_es.h index 07a73323c403..43cefa2849fc 100644 --- a/intl/msg_hash_es.h +++ b/intl/msg_hash_es.h @@ -1227,7 +1227,15 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Sincronizar: archivos de configuración" - ) + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_THUMBS, + "Sincronizar: imágenes de miniaturas" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SYSTEM, + "Sincronizar: archivos del sistema" + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "Al activar esta opción se sincronizarán los datos guardados y los guardados rápidos a la nube." @@ -1236,10 +1244,18 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS, "Al activar esta opción se sincronizarán los archivos de configuración a la nube." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_THUMBS, + "Al activar esta opción se sincronizarán las imágenes de las miniaturas a la nube. No se recomienda usar esta opción salvo que tengas una gran colección de miniaturas, en caso contrario, el descargador de miniaturas es una alternativa mejor." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SYSTEM, + "Al activar esta opción se sincronizarán los archivos del sistema a la nube. Puede aumentar significativamente el tiempo que se tarda en sincronizar. Utilizar con precaución." + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Al desactivar esta opción, los archivos serán trasladados a una carpeta de copia de seguridad antes de ser sobrescritos o eliminados." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Motor de sincronización en la nube" diff --git a/intl/msg_hash_fa.h b/intl/msg_hash_fa.h index adc4afbe14f9..caf145cc4688 100644 --- a/intl/msg_hash_fa.h +++ b/intl/msg_hash_fa.h @@ -1192,14 +1192,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE, "همگام‌سازی ابری تخریبی" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DRIVER, "شیوه‌نامهٔ شبکهٔ فضای ابری که باید استفاده شود." diff --git a/intl/msg_hash_fi.h b/intl/msg_hash_fi.h index dfa79baba919..0573880d0902 100644 --- a/intl/msg_hash_fi.h +++ b/intl/msg_hash_fi.h @@ -1223,7 +1223,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Synkronointi: asetustiedostot" - ) + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "Kun käytössä, peli- ja tilatallennukset synkronoidaan pilveen." @@ -1235,7 +1235,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Kun pois käytöstä, tiedostot siirretään varmuuskopio-kansioon, ennen kuin niitä korvataan tai poistetaan." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Pilvisynkronoinnin taustaosa" diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index 79884d37df65..09a55251c277 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -1203,7 +1203,15 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Synchronisation : Fichiers de configuration" - ) + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_THUMBS, + "Synchronisation : Images miniatures" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SYSTEM, + "Synchronisation : Fichiers système" + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "Lorsque cette option est activée, les sauvegardes/sauvegardes instantanées seront synchronisés avec le cloud." @@ -1212,10 +1220,18 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS, "Lorsque cette option est activée, les fichiers de configuration seront synchronisés avec le cloud." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_THUMBS, + "Lorsque cette option est activée, les images miniatures seront synchronisées sur le cloud. Non recommandé généralement à l'exception des grandes collections d'images miniatures personnalisées, sinon l'outil de téléchargement de miniatures est un meilleur choix." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SYSTEM, + "Lorsque cette option est activée, les fichiers système seront synchronisés sur le cloud. Cela peut augmenter considérablement le temps de synchronisation ; utiliser avec prudence." + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Lorsque cette option est désactivée, les fichiers sont déplacés vers un dossier de sauvegarde avant d'être remplacés ou supprimés." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Plateforme de synchronisation avec le Cloud" diff --git a/intl/msg_hash_gl.h b/intl/msg_hash_gl.h index 09ddefd12b48..a8bddc39eda1 100644 --- a/intl/msg_hash_gl.h +++ b/intl/msg_hash_gl.h @@ -1227,7 +1227,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Sincronización: Ficheiros de Configuración" - ) + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "Cando está activado, os gardados/estados sincronizaranse coa nube." @@ -1239,7 +1239,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Cando está desactivado, os ficheiros móvense a un cartafol de copia de seguranza antes de sobrescribilos ou eliminalos." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Backend de sincronización na nube" diff --git a/intl/msg_hash_he.h b/intl/msg_hash_he.h index 9ea4e1b183e1..fefebbe799fc 100644 --- a/intl/msg_hash_he.h +++ b/intl/msg_hash_he.h @@ -252,14 +252,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS, "קלט" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS, "סייר קבצים" diff --git a/intl/msg_hash_hr.h b/intl/msg_hash_hr.h index 8231b4cad002..ea9d91651625 100644 --- a/intl/msg_hash_hr.h +++ b/intl/msg_hash_hr.h @@ -784,14 +784,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS, "Spremanje" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME, "Korisničko ime" diff --git a/intl/msg_hash_hu.h b/intl/msg_hash_hu.h index e003e07e9e1a..706d76e8f68f 100644 --- a/intl/msg_hash_hu.h +++ b/intl/msg_hash_hu.h @@ -1211,7 +1211,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Szinkronizálás: konfigurációs fájlok" - ) + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "Bekapcsolva a mentések és játékállapotok szinkronizálódnak a felhőbe." @@ -1223,7 +1223,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Kikapcsolt állapotban a fájlok egy tartalék könyvtárba kerülnek felülírás vagy törlés előtt." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "A felhőszinkronizálás háttértára" diff --git a/intl/msg_hash_id.h b/intl/msg_hash_id.h index 4549d852a40e..839127723ed5 100644 --- a/intl/msg_hash_id.h +++ b/intl/msg_hash_id.h @@ -1096,14 +1096,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVING_SETTINGS, "Ubah pengaturan penyimpanan." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS, "Pencatatan Log" diff --git a/intl/msg_hash_it.h b/intl/msg_hash_it.h index a52329a3a0fe..a6b3edec9869 100644 --- a/intl/msg_hash_it.h +++ b/intl/msg_hash_it.h @@ -1195,7 +1195,15 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Sincronizza: File Di Configurazione" - ) + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_THUMBS, + "Sincronizza: Immagini Miniatura" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SYSTEM, + "Sincronizza: File Di Sistema" + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "Se abilitata, i salvataggi/stati verranno sincronizzati su cloud." @@ -1204,10 +1212,18 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS, "Se abilitata, i file di configurazione verranno sincronizzati su cloud." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_THUMBS, + "Se abilitata, le immagini delle miniature saranno sincronizzate su cloud. Non generalmente raccomandato, tranne che per grandi collezioni di immagini di miniature personalizzate; altrimenti il download di miniature è una scelta migliore." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SYSTEM, + "Se abilitata, i file di sistema saranno sincronizzati su cloud. Questo può aumentare significativamente il tempo necessario per sincronizzarli; usare con cautela." + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Quando disabilitato, i file vengono spostati in una cartella di backup prima di essere sovrascritti o cancellati." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Backend Sincronizzazione Cloud" diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index 9e73ef596d0e..05d4a716503a 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -1235,7 +1235,15 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "同期: 設定ファイル" - ) + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_THUMBS, + "同期: サムネイル画像" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SYSTEM, + "同期: システムファイル" + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "有効にすると、セーブ/ステートがクラウドに同期されます。" @@ -1244,10 +1252,18 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS, "有効にすると、設定ファイルがクラウドに同期されます。" ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_THUMBS, + "有効にすると、サムネイル画像がクラウドに同期されます。カスタムサムネイル画像の大規模なコレクションを除いて、一般的にはサムネイルダウンローダーを使用することが推奨されます。" + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SYSTEM, + "有効にすると、システムファイルがクラウドに同期されます。同期にかかる時間が大幅に増加する可能性があります。注意して使用してください。" + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "無効にすると、ファイルは上書きまたは削除される前にバックアップフォルダに移動されます。" - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "クラウド同期のバックエンド" @@ -2004,7 +2020,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_SHADER_SUBFRAMES, - "シェーダー間に追加のシェーダーフレームを挿入します。シェーダーで実際のコンテンツフレームレートよりも高い FPS で動作するエフェクトを実行できるようになります。現在のディスプレイ Hz に対応するオプションを設定する必要があります。1 以上のスワップ間隔、黒フレーム挿入、正確なフレームレートに同期と組み合わせないでください。" + "フレーム間に追加のシェーダーフレームを挿入します。シェーダーで実際のコンテンツフレームレートよりも高い FPS で動作するエフェクトを実行できるようになります。現在のディスプレイ Hz に対応するオプションを設定する必要があります。1 以上のスワップ間隔、黒フレーム挿入、正確なフレームレートに同期と組み合わせないでください。" ) MSG_HASH( MENU_ENUM_LABEL_HELP_VIDEO_SHADER_SUBFRAMES, diff --git a/intl/msg_hash_ko.h b/intl/msg_hash_ko.h index d70ab8f4aad7..e1c21b1a020f 100644 --- a/intl/msg_hash_ko.h +++ b/intl/msg_hash_ko.h @@ -1239,7 +1239,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "동기화: 구성 파일" - ) + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "사용할 경우, 저장/상태저장이 클라우드에 동기화됩니다." @@ -1251,7 +1251,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "비활성화할 경우, 동기화 대상 파일들을 덮어씌우거나 삭제하지 않고 백업 폴더에 저장합니다." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "클라우드 동기화 백엔드" diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 7ac19d207fbd..4510d9f6fd7d 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -3643,7 +3643,15 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS, "cloud_sync_sync_configs" - ) + ) +MSG_HASH( + MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_THUMBS, + "cloud_sync_sync_thumbs" + ) +MSG_HASH( + MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SYSTEM, + "cloud_sync_sync_system" + ) MSG_HASH( MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER, "cloud_sync_driver" diff --git a/intl/msg_hash_mt.h b/intl/msg_hash_mt.h index 3d57cec09b8a..82ca5a81436c 100644 --- a/intl/msg_hash_mt.h +++ b/intl/msg_hash_mt.h @@ -52,14 +52,6 @@ /* Settings */ -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) /* Core option category placeholders for icons */ diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index 8f6bc5b50160..7a600b638355 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -1088,14 +1088,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVING_SETTINGS, "Instellingen voor opslaan wijzigen." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME, "Gebruikersnaam" diff --git a/intl/msg_hash_no.h b/intl/msg_hash_no.h index 905f2c41ca35..54f9b5af6e24 100644 --- a/intl/msg_hash_no.h +++ b/intl/msg_hash_no.h @@ -1160,14 +1160,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE, "Aktiver Sky-Synkronisering" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Når deaktivert, flyttes filer til en sikkerhetskopimappe før de overskrives eller slettes." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_URL, "URL for sky-lagring" diff --git a/intl/msg_hash_oc.h b/intl/msg_hash_oc.h index 9f61a484e2ae..d36648c4e447 100644 --- a/intl/msg_hash_oc.h +++ b/intl/msg_hash_oc.h @@ -204,14 +204,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS, "Vidèo" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS, "Listas de lectura" diff --git a/intl/msg_hash_or.h b/intl/msg_hash_or.h index 373896993efd..caaf107a8c4e 100644 --- a/intl/msg_hash_or.h +++ b/intl/msg_hash_or.h @@ -324,14 +324,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS, "ଅଡ଼ିଓ" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS, "ଚାଳନତାଲିକା" diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 1fa56ad06695..39dd352652fc 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -1219,7 +1219,11 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Synchronizacja: Pliki konfiguracyjne" - ) + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SYSTEM, + "Synchronizacja: Pliki systemowe" + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "Po włączeniu zapisy/stany zostaną zsynchronizowane z chmurą." @@ -1231,7 +1235,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Gdy wyłączone, pliki są przenoszone do folderu kopii zapasowej przed nadpisaniem lub usunięciem." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Back-end synchronizacji w chmurze" diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index 6ac5e3a19617..868524f8cb77 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -1215,7 +1215,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Sincronização: Arquivos de Configuração" - ) + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "Quando ativado, salvar/estados serão sincronizados para a nuvem." @@ -1227,7 +1227,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Quando desativado, os arquivos são movidos para uma pasta de backup antes de serem substituídos ou excluídos." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Sincronização da nuvem Backend" diff --git a/intl/msg_hash_pt_pt.h b/intl/msg_hash_pt_pt.h index 1156826fff3d..594ce3bbe6e1 100644 --- a/intl/msg_hash_pt_pt.h +++ b/intl/msg_hash_pt_pt.h @@ -1108,14 +1108,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVING_SETTINGS, "Modificar as definições de gravação." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME, "Utilizador" diff --git a/intl/msg_hash_ro.h b/intl/msg_hash_ro.h index 3d57cec09b8a..82ca5a81436c 100644 --- a/intl/msg_hash_ro.h +++ b/intl/msg_hash_ro.h @@ -52,14 +52,6 @@ /* Settings */ -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) /* Core option category placeholders for icons */ diff --git a/intl/msg_hash_ru.h b/intl/msg_hash_ru.h index 9c7634d7a8b7..534e1897c4f2 100644 --- a/intl/msg_hash_ru.h +++ b/intl/msg_hash_ru.h @@ -1235,7 +1235,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Синхронизация: файлы конфигураций" - ) + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "Если включено, карты памяти/сохранения будут синхронизироваться с облаком." @@ -1247,7 +1247,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Если отключено, перед удалением или перезаписью файлы помещаются в каталог резервирования." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Бэкенд облачной синхронизации" diff --git a/intl/msg_hash_si.h b/intl/msg_hash_si.h index 75914d81e73c..8b492c7930e4 100644 --- a/intl/msg_hash_si.h +++ b/intl/msg_hash_si.h @@ -116,14 +116,6 @@ MSG_HASH( /* Settings */ -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) /* Core option category placeholders for icons */ diff --git a/intl/msg_hash_sk.h b/intl/msg_hash_sk.h index b9de061442de..f421fbd57138 100644 --- a/intl/msg_hash_sk.h +++ b/intl/msg_hash_sk.h @@ -1144,14 +1144,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE, "Povoliť cloud synchronizáciu" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME, "Meno používateľa" diff --git a/intl/msg_hash_sr.h b/intl/msg_hash_sr.h index 1b482b1c5172..0e5cc7f59867 100644 --- a/intl/msg_hash_sr.h +++ b/intl/msg_hash_sr.h @@ -1108,14 +1108,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVING_SETTINGS, "Izmeni podešavanja za usnimavanje." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS, "Beleženje" diff --git a/intl/msg_hash_sv.h b/intl/msg_hash_sv.h index 36300eb9e375..106c13bca0c8 100644 --- a/intl/msg_hash_sv.h +++ b/intl/msg_hash_sv.h @@ -1144,14 +1144,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE, "Destruktiv molnsynkning" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Inaktiverat flyttas filer till en säkerhetskopia innan de skrivs över eller raderas." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Backend för molnsynk" diff --git a/intl/msg_hash_tr.h b/intl/msg_hash_tr.h index 02c839106dcd..dc8b80b0f04b 100644 --- a/intl/msg_hash_tr.h +++ b/intl/msg_hash_tr.h @@ -1223,7 +1223,15 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Eşitleyici: Yapılandırma Dosyaları" - ) + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_THUMBS, + "Eşitle: Küçük Resimler" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SYSTEM, + "Eşitle: Sistem Dosyaları" + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "Etkinleştirildiğinde, kayıtlar/durumlar bulut ile eşitlenecektir." @@ -1232,10 +1240,18 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS, "Etkinleştirildiğinde yapılandırma dosyaları bulut ile eşitlenecektir." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_THUMBS, + "Etkinleştirildiğinde küçük resim görüntüleri bulutla eşitlenecektir. Özel küçük resim resimlerinden oluşan geniş koleksiyonlar dışında genellikle önerilmez; diğer türlü küçük resim indirici daha iyi bir seçimdir." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SYSTEM, + "Etkinleştirildiğinde sistem dosyaları buluta eşitlenecektir. Bu, eşitleme için gereken süreyi önemli ölçüde artırabilir; dikkatli kullanın." + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "Devre dışı bırakıldığında, dosyalar üzerine yazılmadan veya silinmeden önce yedek klasörüne taşınır." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Bulut Eşitleyici Arka Uç" diff --git a/intl/msg_hash_tt.h b/intl/msg_hash_tt.h index 3d57cec09b8a..82ca5a81436c 100644 --- a/intl/msg_hash_tt.h +++ b/intl/msg_hash_tt.h @@ -52,14 +52,6 @@ /* Settings */ -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) /* Core option category placeholders for icons */ diff --git a/intl/msg_hash_uk.h b/intl/msg_hash_uk.h index f79eb1012b3e..a6a7d204b090 100644 --- a/intl/msg_hash_uk.h +++ b/intl/msg_hash_uk.h @@ -1235,7 +1235,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Синхронізація: Файли конфігурації" - ) + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "Коли увімкнено, збереження чи стани будуть синхронізуватись до хмари." @@ -1247,7 +1247,7 @@ MSG_HASH( MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "У вимкненому стані, файли переміщуються до резервного каталогу перед перезаписом чи видаленням." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Бекенд хмарної синхронізації" diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 13db94302064..e6979b89f01f 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -1251,7 +1251,15 @@ MSG_HASH( MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, "Sync: Configuration Files" - ) + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_THUMBS, + "Sync: Thumbnail Images" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SYSTEM, + "Sync: System Files" + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES, "When enabled, saves/states will be synced to cloud." @@ -1260,10 +1268,18 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS, "When enabled, configuration files will be synced to cloud." ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_THUMBS, + "When enabled, thumbnail images will be synced to cloud. Not generally recommended except for large collections of custom thumbnail images; otherwise the thumbnail downloader is a better choice." + ) +MSG_HASH( + MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SYSTEM, + "When enabled, system files will be synced to cloud. This can significantly increase the time it takes to sync; use with caution." + ) MSG_HASH( MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER, "Cloud Sync Backend" diff --git a/intl/msg_hash_val.h b/intl/msg_hash_val.h index 74a270db19b7..ba3423f69d9f 100644 --- a/intl/msg_hash_val.h +++ b/intl/msg_hash_val.h @@ -1124,14 +1124,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_SAVING_SETTINGS, "Canvia els ajustos de guardat." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS, "Registres" diff --git a/intl/msg_hash_vn.h b/intl/msg_hash_vn.h index 59ed9fd8f628..46367661be2b 100644 --- a/intl/msg_hash_vn.h +++ b/intl/msg_hash_vn.h @@ -71,6 +71,10 @@ MSG_HASH( MENU_ENUM_SUBLABEL_CORE_LIST, "Chọn nhân nào sẽ dùng." ) +MSG_HASH( + MENU_ENUM_LABEL_HELP_CORE_LIST, + "Duyệt qua các lõi libretro. Khi trình quản lý tập tin bắt đầu dựa vào đường dẫn thư mục lõi. Nếu nó trống, nó sẽ được bắt đầu ở thư mục gốc.\nNếu thư mục lõi của bạn là một thư mục, menu sẽ sử dụng thư mục đó là thư mục trên cùng. Nếu thư mục lõi của bạn là đường dẫn đầy đủ, nó sẽ bắt đầu ở thư mục nơi tệp nằm ở đó." + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST, "Tải Content" @@ -1064,14 +1068,6 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE, "Bật đồng bộ hóa đám mây" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS, - "Sync: Configuration Files" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE, - "When disabled, files are moved to a backup folder before being overwritten or deleted." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME, "Tên truy nhập" diff --git a/intl/progress.h b/intl/progress.h index c6e163910679..19d5cd79a4b8 100644 --- a/intl/progress.h +++ b/intl/progress.h @@ -15,7 +15,7 @@ #define LANGUAGE_PROGRESS_BULGARIAN_APPROVED 0 /* Catalan */ -#define LANGUAGE_PROGRESS_CATALAN_TRANSLATED 41 +#define LANGUAGE_PROGRESS_CATALAN_TRANSLATED 40 #define LANGUAGE_PROGRESS_CATALAN_APPROVED 0 /* Czech */ @@ -91,7 +91,7 @@ #define LANGUAGE_PROGRESS_JAPANESE_APPROVED 0 /* Korean */ -#define LANGUAGE_PROGRESS_KOREAN_TRANSLATED 100 +#define LANGUAGE_PROGRESS_KOREAN_TRANSLATED 99 #define LANGUAGE_PROGRESS_KOREAN_APPROVED 0 /* Dutch */ @@ -115,7 +115,7 @@ #define LANGUAGE_PROGRESS_PORTUGUESE_BRAZILIAN_APPROVED 7 /* Portuguese */ -#define LANGUAGE_PROGRESS_PORTUGUESE_TRANSLATED 27 +#define LANGUAGE_PROGRESS_PORTUGUESE_TRANSLATED 26 #define LANGUAGE_PROGRESS_PORTUGUESE_APPROVED 0 /* Russian */ @@ -132,7 +132,7 @@ /* Swedish */ #define LANGUAGE_PROGRESS_SWEDISH_TRANSLATED 50 -#define LANGUAGE_PROGRESS_SWEDISH_APPROVED 48 +#define LANGUAGE_PROGRESS_SWEDISH_APPROVED 47 /* Turkish */ #define LANGUAGE_PROGRESS_TURKISH_TRANSLATED 100 @@ -155,10 +155,10 @@ #define LANGUAGE_PROGRESS_VIETNAMESE_APPROVED 0 /* Chinese Simplified */ -#define LANGUAGE_PROGRESS_CHINESE_SIMPLIFIED_TRANSLATED 99 +#define LANGUAGE_PROGRESS_CHINESE_SIMPLIFIED_TRANSLATED 98 #define LANGUAGE_PROGRESS_CHINESE_SIMPLIFIED_APPROVED 44 /* Chinese Traditional */ #define LANGUAGE_PROGRESS_CHINESE_TRADITIONAL_TRANSLATED 88 -#define LANGUAGE_PROGRESS_CHINESE_TRADITIONAL_APPROVED 76 +#define LANGUAGE_PROGRESS_CHINESE_TRADITIONAL_APPROVED 75 diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index ce6324827256..5b4b5df43ed0 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -259,8 +259,10 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_saving_settings_list, MENU_ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_settings_list, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SETTINGS) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_enable, MENU_ENUM_SUBLABEL_CLOUD_SYNC_ENABLE) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_destructive, MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE) -DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_saves, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES) -DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_configs, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_saves, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_configs, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_thumbs, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_THUMBS) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_system, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SYSTEM) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_driver, MENU_ENUM_SUBLABEL_CLOUD_SYNC_DRIVER) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_url, MENU_ENUM_SUBLABEL_CLOUD_SYNC_URL) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_username, MENU_ENUM_SUBLABEL_CLOUD_SYNC_USERNAME) @@ -5064,6 +5066,12 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_sync_configs); break; + case MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_THUMBS: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_sync_thumbs); + break; + case MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SYSTEM: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_sync_system); + break; case MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_driver); break; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 1a9bad889a0c..9f5dae3358cc 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -10710,6 +10710,8 @@ unsigned menu_displaylist_build_list( {MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SAVES, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS, PARSE_ONLY_BOOL, true}, + {MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_THUMBS, PARSE_ONLY_BOOL, true}, + {MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SYSTEM, PARSE_ONLY_BOOL, true}, {MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER, PARSE_ONLY_STRING_OPTIONS, true}, {MENU_ENUM_LABEL_CLOUD_SYNC_URL, PARSE_ONLY_STRING, false}, {MENU_ENUM_LABEL_CLOUD_SYNC_USERNAME, PARSE_ONLY_STRING, false}, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index bc71c1000e99..b291e1ff6293 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -11891,6 +11891,36 @@ static bool setting_append_list( general_read_handler, SD_FLAG_NONE); + CONFIG_BOOL( + list, list_info, + &settings->bools.cloud_sync_sync_thumbs, + MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_THUMBS, + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_THUMBS, + false, + MENU_ENUM_LABEL_VALUE_OFF, + MENU_ENUM_LABEL_VALUE_ON, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler, + SD_FLAG_NONE); + + CONFIG_BOOL( + list, list_info, + &settings->bools.cloud_sync_sync_system, + MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SYSTEM, + MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SYSTEM, + false, + MENU_ENUM_LABEL_VALUE_OFF, + MENU_ENUM_LABEL_VALUE_ON, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler, + SD_FLAG_NONE); + CONFIG_STRING_OPTIONS( list, list_info, settings->arrays.cloud_sync_driver, diff --git a/msg_hash.h b/msg_hash.h index 1eac9a1d2f8f..7f1823ffe45e 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -3236,6 +3236,8 @@ enum msg_hash_enums MENU_LABEL(CLOUD_SYNC_DESTRUCTIVE), MENU_LABEL(CLOUD_SYNC_SYNC_SAVES), MENU_LABEL(CLOUD_SYNC_SYNC_CONFIGS), + MENU_LABEL(CLOUD_SYNC_SYNC_THUMBS), + MENU_LABEL(CLOUD_SYNC_SYNC_SYSTEM), MENU_LABEL(CLOUD_SYNC_DRIVER), MENU_LABEL(CLOUD_SYNC_URL), MENU_LABEL(CLOUD_SYNC_USERNAME), diff --git a/pkg/apple/update-cores.sh b/pkg/apple/update-cores.sh index a898e26e4f0e..eefb74b15261 100755 --- a/pkg/apple/update-cores.sh +++ b/pkg/apple/update-cores.sh @@ -172,6 +172,7 @@ else np2kai numero nxengine + opera pcsx_rearmed picodrive #play diff --git a/tasks/task_cloudsync.c b/tasks/task_cloudsync.c index 144f4317b9b1..4950f09def1a 100644 --- a/tasks/task_cloudsync.c +++ b/tasks/task_cloudsync.c @@ -54,7 +54,7 @@ enum task_cloud_sync_phase typedef struct { enum task_cloud_sync_phase phase; - bool waiting; + uint32_t waiting; file_list_t *server_manifest; size_t server_idx; file_list_t *local_manifest; @@ -67,6 +67,9 @@ typedef struct bool need_manifest_uploaded; bool failures; bool conflicts; + uint32_t uploads; + uint32_t downloads; + retro_time_t start_time; } task_cloud_sync_state_t; static slock_t *tcs_running_lock = NULL; @@ -94,7 +97,7 @@ static void task_cloud_sync_begin_handler(void *user_data, const char *path, boo task_set_finished(task, true); } slock_lock(tcs_running_lock); - sync_state->waiting = false; + sync_state->waiting = 0; slock_unlock(tcs_running_lock); } @@ -195,7 +198,7 @@ static void task_cloud_sync_manifest_handler(void *user_data, const char *path, sync_state->failures = true; sync_state->phase = CLOUD_SYNC_PHASE_END; slock_lock(tcs_running_lock); - sync_state->waiting = false; + sync_state->waiting = 0; slock_unlock(tcs_running_lock); return; } @@ -209,7 +212,7 @@ static void task_cloud_sync_manifest_handler(void *user_data, const char *path, } sync_state->phase = CLOUD_SYNC_PHASE_READ_LOCAL_MANIFEST; slock_lock(tcs_running_lock); - sync_state->waiting = false; + sync_state->waiting = 0; slock_unlock(tcs_running_lock); } @@ -219,11 +222,11 @@ static void task_cloud_sync_fetch_server_manifest(task_cloud_sync_state_t *sync_ task_cloud_sync_manifest_filename(manifest_path, sizeof(manifest_path), true); - sync_state->waiting = true; + sync_state->waiting = 1; if (!cloud_sync_read(MANIFEST_FILENAME_SERVER, manifest_path, task_cloud_sync_manifest_handler, sync_state)) { RARCH_WARN(CSPFX "could not read server manifest\n"); - sync_state->waiting = false; + sync_state->waiting = 0; sync_state->phase = CLOUD_SYNC_PHASE_END; } } @@ -336,6 +339,20 @@ static struct string_list *task_cloud_sync_directory_map(void) string_list_append(list, "states", attr); list->elems[list->size - 1].userdata = strdup(dir_get_ptr(RARCH_DIR_SAVESTATE)); } + + if (settings->bools.cloud_sync_sync_thumbs) + { + string_list_append(list, "thumbnails", attr); + strlcpy(dir, settings->paths.directory_thumbnails, sizeof(dir)); + list->elems[list->size - 1].userdata = strdup(dir); + } + + if (settings->bools.cloud_sync_sync_system) + { + string_list_append(list, "system", attr); + strlcpy(dir, settings->paths.directory_system, sizeof(dir)); + list->elems[list->size - 1].userdata = strdup(dir); + } } return list; @@ -385,12 +402,10 @@ static void task_cloud_sync_update_progress(retro_task_t *task) if (!(sync_state = (task_cloud_sync_state_t *)task->state)) return; - val = sync_state->server_idx + sync_state->local_idx + sync_state->current_idx; + val = sync_state->server_idx + sync_state->current_idx; if (sync_state->server_manifest) count += sync_state->server_manifest->size; - if (sync_state->local_manifest) - count += sync_state->local_manifest->size; if (sync_state->current_manifest) count += sync_state->current_manifest->size; @@ -402,11 +417,15 @@ static void task_cloud_sync_update_progress(retro_task_t *task) static void task_cloud_sync_add_to_updated_manifest(task_cloud_sync_state_t *sync_state, const char *key, char *hash, bool server) { - file_list_t *list = server ? sync_state->updated_server_manifest : sync_state->updated_local_manifest; - size_t idx = list->size; + file_list_t *list; + size_t idx; + slock_lock(tcs_running_lock); + list = server ? sync_state->updated_server_manifest : sync_state->updated_local_manifest; + idx = list->size; file_list_append(list, NULL, NULL, 0, 0, 0); file_list_set_alt_at_offset(list, idx, key); list->list[idx].userdata = hash; + slock_unlock(tcs_running_lock); } static INLINE int task_cloud_sync_key_cmp(struct item_file *left, struct item_file *right) @@ -495,6 +514,7 @@ static void task_cloud_sync_fetch_cb(void *user_data, const char *path, bool suc filestream_close(file); RARCH_LOG(CSPFX "successfully fetched %s\n", path); task_cloud_sync_add_to_updated_manifest(sync_state, path, hash, false); + sync_state->downloads++; } else { @@ -507,7 +527,7 @@ static void task_cloud_sync_fetch_cb(void *user_data, const char *path, bool suc } slock_lock(tcs_running_lock); - sync_state->waiting = false; + sync_state->waiting--; slock_unlock(tcs_running_lock); } @@ -559,7 +579,7 @@ static void task_cloud_sync_fetch_server_file(task_cloud_sync_state_t *sync_stat fill_pathname_basedir(directory, filename, sizeof(directory)); path_mkdir(directory); if (cloud_sync_read(key, filename, task_cloud_sync_fetch_cb, sync_state)) - sync_state->waiting = true; + sync_state->waiting++; else { RARCH_WARN(CSPFX "wanted to fetch %s but failed\n", key); @@ -606,6 +626,7 @@ static void task_cloud_sync_upload_cb(void *user_data, const char *path, bool su sync_state->need_manifest_uploaded = true; } RARCH_LOG(CSPFX "uploading %s succeeded\n", path); + sync_state->uploads++; } else { @@ -620,7 +641,7 @@ static void task_cloud_sync_upload_cb(void *user_data, const char *path, bool su } slock_lock(tcs_running_lock); - sync_state->waiting = false; + sync_state->waiting++; slock_unlock(tcs_running_lock); } @@ -647,7 +668,7 @@ static void task_cloud_sync_upload_current_file(task_cloud_sync_state_t *sync_st item->userdata = task_cloud_sync_md5_rfile(file); filestream_seek(file, 0, SEEK_SET); - sync_state->waiting = true; + sync_state->waiting++; if (!cloud_sync_update(path, file, task_cloud_sync_upload_cb, sync_state)) { /* if the upload fails, try to resurrect the hash from the last sync */ @@ -658,7 +679,7 @@ static void task_cloud_sync_upload_current_file(task_cloud_sync_state_t *sync_st task_cloud_sync_add_to_updated_manifest(sync_state, path, CS_FILE_HASH(local_file), false); } filestream_close(file); - sync_state->waiting = false; + sync_state->waiting--; sync_state->failures = true; RARCH_WARN(CSPFX "uploading %s failed\n", path); } @@ -747,7 +768,7 @@ static void task_cloud_sync_delete_cb(void *user_data, const char *path, bool su RARCH_WARN(CSPFX "deleting %s failed\n", path); sync_state->failures = true; slock_lock(tcs_running_lock); - sync_state->waiting = false; + sync_state->waiting--; slock_unlock(tcs_running_lock); return; } @@ -760,7 +781,7 @@ static void task_cloud_sync_delete_cb(void *user_data, const char *path, bool su task_cloud_sync_add_to_updated_manifest(sync_state, path, NULL, false); sync_state->need_manifest_uploaded = true; slock_lock(tcs_running_lock); - sync_state->waiting = false; + sync_state->waiting--; slock_unlock(tcs_running_lock); } @@ -777,7 +798,7 @@ static void task_cloud_sync_delete_server_file(task_cloud_sync_state_t *sync_sta RARCH_LOG(CSPFX "deleting %s\n", key); - sync_state->waiting = true; + sync_state->waiting++; if (!cloud_sync_free(key, task_cloud_sync_delete_cb, sync_state)) { /* if the delete fails, resurrect the hash from the last sync */ @@ -789,7 +810,7 @@ static void task_cloud_sync_delete_server_file(task_cloud_sync_state_t *sync_sta } task_cloud_sync_add_to_updated_manifest(sync_state, key, CS_FILE_HASH(server_file), true); /* we don't mark need_manifest_uploaded here, nothing has changed */ - sync_state->waiting = false; + sync_state->waiting--; } } @@ -929,7 +950,7 @@ static void task_cloud_sync_update_manifest_cb(void *user_data, const char *path RARCH_LOG(CSPFX "uploading updated manifest succeeded\n"); sync_state->phase = CLOUD_SYNC_PHASE_END; slock_lock(tcs_running_lock); - sync_state->waiting = false; + sync_state->waiting = 0; slock_unlock(tcs_running_lock); } @@ -948,6 +969,10 @@ static RFILE *task_cloud_sync_write_updated_manifest(file_list_t *manifest, char return NULL; } + /* since we may be transfering files at the same time, + * the newly created manifest might be out of order */ + file_list_sort_on_alt(manifest); + rjsonwriter_raw(writer, "[\n", 2); for (; idx < manifest->size; idx++) @@ -1000,12 +1025,12 @@ static void task_cloud_sync_update_manifests(task_cloud_sync_state_t *sync_state task_cloud_sync_manifest_filename(manifest_path, sizeof(manifest_path), true); file = task_cloud_sync_write_updated_manifest(sync_state->updated_server_manifest, manifest_path); filestream_seek(file, 0, SEEK_SET); - sync_state->waiting = true; + sync_state->waiting = 1; if (!cloud_sync_update(MANIFEST_FILENAME_SERVER, file, task_cloud_sync_update_manifest_cb, sync_state)) { RARCH_LOG(CSPFX "uploading updated manifest failed\n"); filestream_close(file); - sync_state->waiting = false; + sync_state->waiting = 0; sync_state->failures = true; sync_state->phase = CLOUD_SYNC_PHASE_END; } @@ -1019,6 +1044,7 @@ static void task_cloud_sync_end_handler(void *user_data, const char *path, bool { retro_task_t *task = (retro_task_t *)user_data; task_cloud_sync_state_t *sync_state = NULL; + retro_time_t end_time = cpu_features_get_time_usec(); if (!task) return; @@ -1038,7 +1064,11 @@ static void task_cloud_sync_end_handler(void *user_data, const char *path, bool task_set_title(task, strdup(title)); } - RARCH_LOG(CSPFX "all done!\n"); + + RARCH_LOG(CSPFX "finished after %lld.%06lld seconds, %d files uploaded, %d files downloaded\n", + (end_time - sync_state->start_time) / 1000 / 1000, + (end_time - sync_state->start_time) % (1000 * 1000), + sync_state->uploads, sync_state->downloads); task_set_finished(task, true); } @@ -1054,9 +1084,10 @@ static void task_cloud_sync_task_handler(retro_task_t *task) goto task_finished; slock_lock(tcs_running_lock); - if (sync_state->waiting) + /* we can transfer more than one file at a time */ + if (sync_state->waiting > ((sync_state->phase == CLOUD_SYNC_PHASE_DIFF) ? 4 : 0)) { - task->when = cpu_features_get_time_usec() + 500 * 1000; /* 500ms */ + task->when = cpu_features_get_time_usec() + 17 * 1000; /* 17ms */ slock_unlock(tcs_running_lock); return; } @@ -1065,7 +1096,7 @@ static void task_cloud_sync_task_handler(retro_task_t *task) switch (sync_state->phase) { case CLOUD_SYNC_PHASE_BEGIN: - sync_state->waiting = true; + sync_state->waiting = 1; if (!cloud_sync_begin(task_cloud_sync_begin_handler, task)) { RARCH_WARN(CSPFX "could not begin\n"); @@ -1090,7 +1121,7 @@ static void task_cloud_sync_task_handler(retro_task_t *task) task_cloud_sync_update_manifests(sync_state); break; case CLOUD_SYNC_PHASE_END: - sync_state->waiting = true; + sync_state->waiting = 1; if (!cloud_sync_end(task_cloud_sync_end_handler, task)) { RARCH_WARN(CSPFX "could not end?!\n"); @@ -1169,6 +1200,7 @@ void task_push_cloud_sync(void) } sync_state->phase = CLOUD_SYNC_PHASE_BEGIN; + sync_state->start_time = cpu_features_get_time_usec(); strlcpy(task_title, "Cloud Sync in progress", sizeof(task_title));