#include #include #include #include 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; }