Skip to content

Commit f240f53

Browse files
committed
Use proper NS control data commands, no need for libnxtc
1 parent c49aed4 commit f240f53

File tree

14 files changed

+39
-178
lines changed

14 files changed

+39
-178
lines changed

.gitmodules

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,3 @@
2222
[submodule "libs/libnx-ext"]
2323
path = libs/libnx-ext
2424
url = https://github.com/XorTroll/libnx-ext
25-
[submodule "libs/libnxtc"]
26-
path = libs/libnxtc
27-
url = https://github.com/DarkMatterCore/libnxtc

libs/libnxtc

Lines changed: 0 additions & 1 deletion
This file was deleted.

libs/uCommon/source/ul/menu/menu_Entries.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -315,10 +315,10 @@ namespace ul::menu {
315315
return;
316316
}
317317

318-
std::vector<AccountUid> uids;
319-
UL_RC_ASSERT(acc::ListAccounts(uids));
318+
std::vector<AccountUid> user_ids;
319+
UL_RC_ASSERT(acc::ListAccounts(user_ids));
320320

321-
for(const auto &uid : uids) {
321+
for(const auto &uid : user_ids) {
322322
const auto menu_path = MakeMenuPath(is_emummc, uid);
323323
fs::DeleteDirectory(menu_path);
324324

projects/uMenu/Makefile

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ ASFLAGS := -g $(ARCH)
3939
LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
4040

4141
LIBUCOMMON := $(CURDIR)/../../libs/uCommon
42-
LIBNXTC := $(CURDIR)/../../libs/libnxtc
4342
LIBPU := $(CURDIR)/../../libs/Plutonium/Plutonium
4443
LIBNX_EXT := $(CURDIR)/../../libs/libnx-ext/libnx-ext
4544
LIBNX_IPCEXT := $(CURDIR)/../../libs/libnx-ext/libnx-ipcext
@@ -51,7 +50,7 @@ LIBS := -lpu -lfreetype -lSDL2_mixer -lopusfile -lopus -lmodplug -lmpg123 -lvorb
5150
# list of directories containing libraries, this must be the top level containing
5251
# include and lib
5352
#---------------------------------------------------------------------------------
54-
LIBDIRS := $(PORTLIBS) $(LIBNX) $(LIBUCOMMON) $(LIBNXTC) $(LIBPU) $(LIBNX_EXT) $(LIBNX_IPCEXT)
53+
LIBDIRS := $(PORTLIBS) $(LIBNX) $(LIBUCOMMON) $(LIBPU) $(LIBNX_EXT) $(LIBNX_IPCEXT)
5554

5655

5756
#---------------------------------------------------------------------------------
@@ -141,15 +140,13 @@ all: $(BUILD)
141140
$(BUILD):
142141
@[ -d $@ ] || mkdir -p $@
143142
@$(MAKE) -C $(LIBUCOMMON)
144-
@$(MAKE) -C $(LIBNXTC)
145143
@$(MAKE) -C $(LIBPU)
146144
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
147145

148146
#---------------------------------------------------------------------------------
149147
clean:
150148
@echo clean ...
151149
@$(MAKE) clean -C $(LIBUCOMMON)
152-
@$(MAKE) clean -C $(LIBNXTC)
153150
@$(MAKE) clean -C $(LIBPU)
154151
@rm -fr $(BUILD) $(TARGET).nsp $(TARGET).npdm $(TARGET).nso $(TARGET).elf
155152

projects/uMenu/include/ul/menu/smi/sf/sf_PrivateService.hpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ namespace ul::menu::smi::sf {
1313
Result InitializePrivateService();
1414
void FinalizePrivateService();
1515

16-
Result QueryApplicationNacpMetadata(const u64 app_id, NacpMetadata *out_nacp_metadata);
17-
Result QueryApplicationIcon(const u64 app_id, u8 *out_icon_buf, const size_t icon_size, size_t &out_icon_size);
18-
1916
void RegisterOnMessageDetect(OnMessageCallback callback, const MenuMessage desired_msg = MenuMessage::Invalid);
2017

2118
}

projects/uMenu/source/main.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,23 @@ ul::menu::ui::GlobalSettings g_GlobalSettings;
1414

1515
namespace {
1616

17+
NsApplicationControlData g_TemporaryControlData;
18+
1719
bool MenuControlEntryLoadFunction(const u64 app_id, std::string &out_name, std::string &out_author, std::string &out_version) {
18-
ul::smi::sf::NacpMetadata nacp_metadata;
19-
const auto rc = ul::menu::smi::sf::QueryApplicationNacpMetadata(app_id, &nacp_metadata);
20-
if(R_FAILED(rc)) {
21-
UL_LOG_WARN("Failed to query NACP for application %016lX: %s", app_id, ul::util::FormatResultDisplay(rc).c_str());
20+
if(R_FAILED(nsextGetApplicationControlData(NsApplicationControlSource_Storage, app_id, &g_TemporaryControlData, sizeof(NsApplicationControlData), nullptr))) {
21+
UL_LOG_WARN("Failed to get application control data for application %016lX", app_id);
22+
return false;
23+
}
24+
25+
NacpLanguageEntry *lang_entry = nullptr;
26+
if(R_FAILED(nacpGetLanguageEntry(&g_TemporaryControlData.nacp, &lang_entry))) {
27+
UL_LOG_WARN("Failed to get NACP language entry for application %016lX", app_id);
2228
return false;
2329
}
2430

25-
out_name = nacp_metadata.name;
26-
out_author = nacp_metadata.author;
27-
out_version = nacp_metadata.display_version;
31+
out_name = lang_entry->name;
32+
out_author = lang_entry->author;
33+
out_version = g_TemporaryControlData.nacp.display_version;
2834
return true;
2935
}
3036

projects/uMenu/source/ul/menu/smi/sf/sf_PrivateService.cpp

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,6 @@ namespace ul::menu::smi::sf {
2020
);
2121
}
2222

23-
inline Result psrvQueryApplicationNacp(Service *srv, NacpMetadata *out_nacp_metadata, const u64 app_id) {
24-
return serviceDispatchIn(srv, 2, app_id,
25-
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
26-
.buffers = { { out_nacp_metadata, sizeof(NacpMetadata) } },
27-
);
28-
}
29-
30-
inline Result psrvQueryApplicationIcon(Service *srv, u8 *out_icon_buf, const size_t icon_size, size_t &out_icon_size, const u64 app_id) {
31-
size_t got_icon_size;
32-
UL_RC_TRY(serviceDispatchInOut(srv, 3, app_id, got_icon_size,
33-
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
34-
.buffers = { { out_icon_buf, icon_size } }
35-
));
36-
out_icon_size = got_icon_size;
37-
return ResultSuccess;
38-
}
39-
4023
Service g_PrivateService;
4124

4225
Result InitializePrivateServiceImpl() {
@@ -123,14 +106,6 @@ namespace ul::menu::smi::sf {
123106
g_Initialized = false;
124107
}
125108

126-
Result QueryApplicationNacpMetadata(const u64 app_id, NacpMetadata *out_nacp_metadata) {
127-
return psrvQueryApplicationNacp(&g_PrivateService, out_nacp_metadata, app_id);
128-
}
129-
130-
Result QueryApplicationIcon(const u64 app_id, u8 *out_icon_buf, const size_t icon_size, size_t &out_icon_size) {
131-
return psrvQueryApplicationIcon(&g_PrivateService, out_icon_buf, icon_size, out_icon_size, app_id);
132-
}
133-
134109
void RegisterOnMessageDetect(OnMessageCallback callback, const MenuMessage desired_msg) {
135110
ScopedLock lk(g_CallbackTableLock);
136111

projects/uMenu/source/ul/menu/ui/ui_Common.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ namespace ul::menu::ui {
5757
util::JSON g_ActiveThemeBgmJson;
5858
util::JSON g_DefaultThemeBgmJson;
5959

60-
u8 g_TempIconBuffer[sizeof(NsApplicationControlData::icon)] = {};
60+
NsApplicationControlData g_TemporaryControlData;
6161

6262
}
6363

@@ -268,19 +268,19 @@ namespace ul::menu::ui {
268268
}
269269

270270
pu::sdl2::TextureHandle::Ref LoadApplicationIconTexture(const u64 app_id) {
271-
size_t icon_size;
271+
u64 icon_size;
272+
272273
const auto start_tick = armGetSystemTick();
273-
const auto rc = smi::sf::QueryApplicationIcon(app_id, g_TempIconBuffer, sizeof(g_TempIconBuffer), icon_size);
274+
const auto rc = nsextGetApplicationControlData(NsApplicationControlSource_Storage, app_id, &g_TemporaryControlData, sizeof(NsApplicationControlData), &icon_size);
275+
if(R_FAILED(rc)) {
276+
UL_LOG_WARN("Failed to get control data for application ID %016lX: %s", app_id, util::FormatResultDisplay(rc).c_str());
277+
return nullptr;
278+
}
274279
const auto end_tick = armGetSystemTick();
275280
const auto elapsed_time_ms = armTicksToNs(end_tick - start_tick) / 1'000'000;
276281
UL_LOG_INFO("Query application ID %016lX icon (elapsed time: %ld ms)", app_id, elapsed_time_ms);
277-
if(R_SUCCEEDED(rc)) {
278-
return pu::sdl2::TextureHandle::New(pu::ui::render::LoadImageFromBuffer(g_TempIconBuffer, icon_size));
279-
}
280-
else {
281-
UL_LOG_WARN("Failed to get icon for application ID %016lX: %s", app_id, util::FormatResultDisplay(rc).c_str());
282-
return nullptr;
283-
}
282+
283+
return pu::sdl2::TextureHandle::New(pu::ui::render::LoadImageFromBuffer(g_TemporaryControlData.icon, icon_size));
284284
}
285285

286286
void RebootSystem() {

projects/uSystem/include/ul/system/app/app_ControlCache.hpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
namespace ul::system::app {
77

8-
// NACP fields that nxtc does not cache but we still use (and thus cache ourselves independently)
8+
// NACP fields that we care about
99

1010
struct ApplicationNacpMisc {
1111
char display_version[0x10];
@@ -28,10 +28,7 @@ namespace ul::system::app {
2828
void RequestCacheApplication(const u64 app_id);
2929
void RequestRemoveApplicationCache(const u64 app_id);
3030

31-
bool QueryApplicationNacp(const u64 app_id, smi::sf::NacpMetadata &out_nacp);
32-
bool QueryApplicationIcon(const u64 app_id, u8 *out_icon_buf, const size_t icon_buf_size, size_t &out_actual_icon_size);
3331
bool QueryApplicationNacpMisc(const u64 app_id, ApplicationNacpMisc &out_nacp_misc);
34-
3532
bool LoopQueryApplicationNacpMisc(const u64 app_id, ApplicationNacpMisc &out_nacp_misc);
3633

3734
}

0 commit comments

Comments
 (0)