diff --git a/lang/en-gb.xml b/lang/en-gb.xml
index 375378628..f693c6246 100644
--- a/lang/en-gb.xml
+++ b/lang/en-gb.xml
@@ -203,14 +203,14 @@ depending on its size and your hardware.
- Unknown
- Nothing
- Bootable
- Intro
- Menu
- Ingame -
- Ingame +
- Playable
+ Unknown
+ Nothing
+ Bootable
+ Intro
+ Menu
+ Ingame -
+ Ingame +
+ Playable
diff --git a/lang/en.xml b/lang/en.xml
index 375378628..f693c6246 100644
--- a/lang/en.xml
+++ b/lang/en.xml
@@ -203,14 +203,14 @@ depending on its size and your hardware.
- Unknown
- Nothing
- Bootable
- Intro
- Menu
- Ingame -
- Ingame +
- Playable
+ Unknown
+ Nothing
+ Bootable
+ Intro
+ Menu
+ Ingame -
+ Ingame +
+ Playable
diff --git a/lang/fr.xml b/lang/fr.xml
index 08e71f492..7db12c98e 100644
--- a/lang/fr.xml
+++ b/lang/fr.xml
@@ -203,14 +203,14 @@ depending on its size and your hardware.
- Inconnue
- Rien
- Amorçable
- Intro
- Menu
- En jeu -
- En jeu +
- Jouable
+ Inconnue
+ Rien
+ Amorçable
+ Intro
+ Menu
+ En jeu -
+ En jeu +
+ Jouable
diff --git a/lang/it.xml b/lang/it.xml
index a1f96ebcc..022bf9b2a 100644
--- a/lang/it.xml
+++ b/lang/it.xml
@@ -203,14 +203,14 @@ depending on its size and your hardware.
- Unknown
- Niente
- Avviabile
- Intro
- Menu
- In Gioco -
- In Gioco +
- Giocabile
+ Unknown
+ Niente
+ Avviabile
+ Intro
+ Menu
+ In Gioco -
+ In Gioco +
+ Giocabile
diff --git a/lang/ja.xml b/lang/ja.xml
index b5539d190..d78a19efd 100644
--- a/lang/ja.xml
+++ b/lang/ja.xml
@@ -203,14 +203,14 @@
- Unknown
- プレイ不可能
- 起動可能
- イントロ
- メニュー
- プレイ開始 -
- プレイ開始 +
- プレイ可能
+ Unknown
+ プレイ不可能
+ 起動可能
+ イントロ
+ メニュー
+ プレイ開始 -
+ プレイ開始 +
+ プレイ可能
diff --git a/lang/ko.xml b/lang/ko.xml
index 79ab844fc..4511f403a 100644
--- a/lang/ko.xml
+++ b/lang/ko.xml
@@ -203,14 +203,14 @@ depending on its size and your hardware.
- Unknown
- Nothing
- Bootable
- Intro
- Menu
- Ingame -
- Ingame +
- Playable
+ Unknown
+ Nothing
+ Bootable
+ Intro
+ Menu
+ Ingame -
+ Ingame +
+ Playable
diff --git a/lang/nl.xml b/lang/nl.xml
index 72543e184..d1f4cec93 100644
--- a/lang/nl.xml
+++ b/lang/nl.xml
@@ -203,14 +203,14 @@ depending on its size and your hardware.
- Unknown
- Niente
- Avviabile
- Intro
- Menu
- In Gioco -
- In Gioco +
- Giocabile
+ Unknown
+ Niente
+ Avviabile
+ Intro
+ Menu
+ In Gioco -
+ In Gioco +
+ Giocabile
diff --git a/lang/pl.xml b/lang/pl.xml
index 76ab13e51..a4f29a1aa 100644
--- a/lang/pl.xml
+++ b/lang/pl.xml
@@ -191,14 +191,14 @@ depending on its size and your hardware.
- Unknown
- Nic
- Bootowalny
- Intro
- Menu
- W grze -
- W grze +
- Grywalne
+ Unknown
+ Nic
+ Bootowalny
+ Intro
+ Menu
+ W grze -
+ W grze +
+ Grywalne
diff --git a/lang/pt-br.xml b/lang/pt-br.xml
index 0518bac78..44cc31358 100644
--- a/lang/pt-br.xml
+++ b/lang/pt-br.xml
@@ -203,14 +203,14 @@ depending on its size and your hardware.
- Unknown
- Nada
- Inicializável
- Intro
- Menu
- No jogo -
- No jogo +
- Jogável
+ Unknown
+ Nada
+ Inicializável
+ Intro
+ Menu
+ No jogo -
+ No jogo +
+ Jogável
diff --git a/lang/ru.xml b/lang/ru.xml
index a3e3e32b7..e70aa79f2 100644
--- a/lang/ru.xml
+++ b/lang/ru.xml
@@ -203,14 +203,14 @@ depending on its size and your hardware.
- Unknown
- Бесполезно
- Загружается
- Интро
- Меню
- В игре -
- В игре +
- Играбельно
+ Unknown
+ Бесполезно
+ Загружается
+ Интро
+ Меню
+ В игре -
+ В игре +
+ Играбельно
diff --git a/lang/zh-s.xml b/lang/zh-s.xml
index acb7a97bc..ab3e77c54 100644
--- a/lang/zh-s.xml
+++ b/lang/zh-s.xml
@@ -203,14 +203,14 @@
- 未知
- 无法启动
- 可引导
- 有图像
- 可进入菜单
- 可进入游戏 -
- 可进入游戏 +
- 完全可玩
+ 未知
+ 无法启动
+ 可引导
+ 有图像
+ 可进入菜单
+ 可进入游戏 -
+ 可进入游戏 +
+ 完全可玩
diff --git a/lang/zh-t.xml b/lang/zh-t.xml
index 0460db921..77e25575a 100644
--- a/lang/zh-t.xml
+++ b/lang/zh-t.xml
@@ -203,14 +203,14 @@
- 未知
- 无法啓動
- 可引導
- 有圖像
- 可進入菜單
- 可進入遊戲 -
- 可進入遊戲 +
- 完全可玩
+ 未知
+ 无法啓動
+ 可引導
+ 有圖像
+ 可進入菜單
+ 可進入遊戲 -
+ 可進入遊戲 +
+ 完全可玩
diff --git a/vita3k/compat/src/compat.cpp b/vita3k/compat/src/compat.cpp
index 4a760d2e1..7d2ba038b 100644
--- a/vita3k/compat/src/compat.cpp
+++ b/vita3k/compat/src/compat.cpp
@@ -96,6 +96,10 @@ bool load_compat_app_db(GuiState &gui, EmuEnvState &emuenv) {
gui.compat.app_compat_db[title_id] = { issue_id, state, updated_at };
}
+ // Update compatibility status of all user apps
+ for (auto &app : gui.app_selector.user_apps)
+ app.compat = gui.compat.app_compat_db.contains(app.title_id) ? gui.compat.app_compat_db[app.title_id].state : Unknown;
+
return !gui.compat.app_compat_db.empty();
}
@@ -157,7 +161,7 @@ bool update_compat_app_db(GuiState &gui, EmuEnvState &emuenv) {
// Check if database is up to date
if (db_updated_at == updated_at) {
LOG_INFO("Applications compatibility database is up to date.");
- return true;
+ return false;
}
const auto compat_db_exist = fs::exists(compat_db_path);
diff --git a/vita3k/gui/include/gui/functions.h b/vita3k/gui/include/gui/functions.h
index 64c1abc0c..16ca72bd3 100644
--- a/vita3k/gui/include/gui/functions.h
+++ b/vita3k/gui/include/gui/functions.h
@@ -76,6 +76,7 @@ void init_user_app(GuiState &gui, EmuEnvState &emuenv, const std::string app_pat
void init_user_apps(GuiState &gui, EmuEnvState &emuenv);
bool init_user_background(GuiState &gui, EmuEnvState &emuenv, const std::string &user_id, const std::string &background_path);
bool init_user_start_background(GuiState &gui, const std::string &image_path);
+void load_and_update_compat_user_apps(GuiState &gui, EmuEnvState &emuenv);
void open_live_area(GuiState &gui, EmuEnvState &emuenv, const std::string app_path);
void open_manual(GuiState &gui, EmuEnvState &emuenv, const std::string app_path);
void open_path(const std::string &path);
diff --git a/vita3k/gui/src/app_context_menu.cpp b/vita3k/gui/src/app_context_menu.cpp
index b2b61ba75..452067b47 100644
--- a/vita3k/gui/src/app_context_menu.cpp
+++ b/vita3k/gui/src/app_context_menu.cpp
@@ -17,7 +17,6 @@
#include "private.h"
-#include
#include
#include
#include
@@ -191,20 +190,8 @@ void update_last_time_app_used(GuiState &gui, EmuEnvState &emuenv, const std::st
gui.time_apps[emuenv.io.user_id].push_back({ app, std::time(nullptr), 0 });
get_app_index(gui, app)->last_time = std::time(nullptr);
- if (gui.users[emuenv.io.user_id].sort_apps_type == LAST_TIME) {
- const auto sorted = gui.app_selector.app_list_sorted[LAST_TIME];
- std::sort(gui.app_selector.user_apps.begin(), gui.app_selector.user_apps.end(), [&sorted](const App &lhs, const App &rhs) {
- switch (sorted) {
- case ASCENDANT:
- return lhs.last_time > rhs.last_time;
- case DESCENDANT:
- return lhs.last_time < rhs.last_time;
- default: break;
- }
-
- return false;
- });
- }
+ if (gui.users[emuenv.io.user_id].sort_apps_type == LAST_TIME)
+ gui.app_selector.is_app_list_sorted = false;
save_time_apps(gui, emuenv);
}
@@ -382,7 +369,7 @@ void draw_app_context_menu(GuiState &gui, EmuEnvState &emuenv, const std::string
}
}
if (ImGui::MenuItem(lang["update_database"].c_str()))
- compat::update_compat_app_db(gui, emuenv);
+ load_and_update_compat_user_apps(gui, emuenv);
ImGui::EndMenu();
}
diff --git a/vita3k/gui/src/gui.cpp b/vita3k/gui/src/gui.cpp
index 6dfafd7ab..5a7c443a6 100644
--- a/vita3k/gui/src/gui.cpp
+++ b/vita3k/gui/src/gui.cpp
@@ -23,7 +23,6 @@
#include
#include
-#include
#include
#include
#include
@@ -437,6 +436,7 @@ static bool get_user_apps(GuiState &gui, EmuEnvState &emuenv) {
}
init_apps_icon(gui, emuenv, gui.app_selector.user_apps);
+ load_and_update_compat_user_apps(gui, emuenv);
}
return !gui.app_selector.user_apps.empty();
@@ -491,13 +491,8 @@ void init_home(GuiState &gui, EmuEnvState &emuenv) {
init_user_apps(gui, emuenv);
}
- // Init compatibilty in user apps list
- if (gui.compat.compat_db_loaded) {
- for (auto &app : gui.app_selector.user_apps)
- app.compat = gui.compat.app_compat_db.contains(app.title_id) ? gui.compat.app_compat_db[app.title_id].state : Unknown;
- }
-
init_app_background(gui, emuenv, "NPXS10015");
+
const auto is_cmd = emuenv.cfg.run_app_path || emuenv.cfg.content_path;
if (!gui.users.empty() && (gui.users.find(emuenv.cfg.user_id) != gui.users.end()) && (is_cmd || emuenv.cfg.auto_user_login)) {
init_user(gui, emuenv, emuenv.cfg.user_id);
@@ -691,12 +686,6 @@ void init(GuiState &gui, EmuEnvState &emuenv) {
update_vita3k_thread.detach();
#endif
- std::thread load_and_update_compat_db_thread([&gui, &emuenv]() {
- gui.compat.compat_db_loaded = compat::load_compat_app_db(gui, emuenv);
- compat::update_compat_app_db(gui, emuenv);
- });
- load_and_update_compat_db_thread.detach();
-
get_modules_list(gui, emuenv);
get_notice_list(emuenv);
get_users_list(gui, emuenv);
diff --git a/vita3k/gui/src/home_screen.cpp b/vita3k/gui/src/home_screen.cpp
index fd5bad991..5a0d828eb 100644
--- a/vita3k/gui/src/home_screen.cpp
+++ b/vita3k/gui/src/home_screen.cpp
@@ -19,6 +19,7 @@
#include
+#include
#include
#include
#include
@@ -55,6 +56,7 @@ void init_user_apps(GuiState &gui, EmuEnvState &emuenv) {
gui.app_selector.is_app_list_sorted = false;
init_last_time_apps(gui, emuenv);
+ load_and_update_compat_user_apps(gui, emuenv);
init_apps_icon(gui, emuenv, gui.app_selector.user_apps);
@@ -91,6 +93,16 @@ void init_last_time_apps(GuiState &gui, EmuEnvState &emuenv) {
gui.app_selector.is_app_list_sorted = false;
}
+void load_and_update_compat_user_apps(GuiState &gui, EmuEnvState &emuenv) {
+ std::thread load_and_update_compat_user_apps_thread([&gui, &emuenv]() {
+ if (!gui.compat.compat_db_loaded)
+ gui.compat.compat_db_loaded = compat::load_compat_app_db(gui, emuenv);
+ if (compat::update_compat_app_db(gui, emuenv) && gui.users[emuenv.io.user_id].sort_apps_type == COMPAT)
+ gui.app_selector.is_app_list_sorted = false;
+ });
+ load_and_update_compat_user_apps_thread.detach();
+}
+
std::vector::iterator get_app_open_list_index(GuiState &gui, const std::string app_path) {
return std::find(gui.apps_list_opened.begin(), gui.apps_list_opened.end(), app_path);
}
diff --git a/vita3k/lang/src/lang.cpp b/vita3k/lang/src/lang.cpp
index 7e9920ab3..8b04a85a3 100644
--- a/vita3k/lang/src/lang.cpp
+++ b/vita3k/lang/src/lang.cpp
@@ -157,7 +157,7 @@ void init_lang(LangState &lang, EmuEnvState &emuenv) {
const auto states = compatibility_child.child("states");
if (!states.empty()) {
for (const auto state : states) {
- const auto id = static_cast(state.attribute("id").as_uint());
+ const auto id = static_cast(state.attribute("id").as_int());
lang_compatibility.states[id] = state.text().as_string();
}
}
diff --git a/vita3k/modules/SceCommonDialog/SceCommonDialog.cpp b/vita3k/modules/SceCommonDialog/SceCommonDialog.cpp
index ef87cb50d..d6ddc25ec 100644
--- a/vita3k/modules/SceCommonDialog/SceCommonDialog.cpp
+++ b/vita3k/modules/SceCommonDialog/SceCommonDialog.cpp
@@ -1334,7 +1334,7 @@ EXPORT(int, sceSaveDataDialogInit, const Ptr param) {
handle_sys_message(sys_message, emuenv);
break;
case SCE_SAVEDATA_DIALOG_MODE_PROGRESS_BAR:
- // Stub using continue code
+ // Stub using continue code
emuenv.common_dialog.savedata.btn_num = 0;
progress_bar = p->progressBarParam.get(emuenv.mem);
emuenv.common_dialog.savedata.slot_id[emuenv.common_dialog.savedata.selected_save] = progress_bar->targetSlot.id;