Files
NXST/src/app/main.cpp
T
DragonSpirit ba53a464fe
CI / Build NRO (push) Failing after 39s
CI / Format check (push) Successful in 13s
CI / Layering check (push) Successful in 1s
finish refactor, add docs and CI
2026-04-27 03:19:42 +03:00

86 lines
2.2 KiB
C++

#include <unistd.h>
#include <nxst/app/main.hpp>
#include <nxst/app/main_application.hpp>
#include <nxst/domain/util.hpp>
namespace ui {
extern MainApplication* mainApp;
}
static int nxlink_sock = -1;
extern "C" void userAppInit() {
appletInitialize();
hidInitialize();
nsInitialize();
setsysInitialize();
setInitialize();
accountInitialize(AccountServiceType_Administrator);
pmshellInitialize();
socketInitializeDefault();
pdmqryInitialize();
nxlink_sock = nxlinkStdio();
printf("userAppInit\n");
}
extern "C" void userAppExit() {
if (ui::mainApp) {
ui::mainApp->transfer.cancelReceive();
ui::mainApp->transfer.cancelSend();
for (int i = 0; i < 150 && (!ui::mainApp->transfer.isReceiveWorkersIdle() ||
!ui::mainApp->transfer.isSendWorkersIdle());
i++) {
usleep(10000);
}
}
if (nxlink_sock != -1) {
close(nxlink_sock);
}
appletExit();
hidExit();
nsExit();
setsysExit();
setExit();
accountExit();
pmshellExit();
socketExit();
pdmqryExit();
}
// Main entrypoint
int main() {
Result res = servicesInit();
if (R_FAILED(res)) {
servicesExit();
exit(res);
}
printf("main");
// First create our renderer, where one can customize SDL or other stuff's
// initialization.
auto renderer_opts =
pu::ui::render::RendererInitOptions(SDL_INIT_EVERYTHING, pu::ui::render::RendererHardwareFlags);
renderer_opts.UseImage(pu::ui::render::IMGAllFlags);
renderer_opts.UseAudio(pu::ui::render::MixerAllFlags);
renderer_opts.UseTTF();
renderer_opts.SetExtraDefaultFontSize(theme::type::Caption);
renderer_opts.SetExtraDefaultFontSize(theme::type::Label);
renderer_opts.SetExtraDefaultFontSize(theme::type::Body);
renderer_opts.SetExtraDefaultFontSize(theme::type::Title);
renderer_opts.SetExtraDefaultFontSize(theme::type::Display);
auto renderer = pu::ui::render::Renderer::New(renderer_opts);
// Create our main application from the renderer
auto main = ui::MainApplication::New(renderer);
main->Prepare();
main->Show();
servicesExit();
return 0;
}