86 lines
2.2 KiB
C++
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;
|
|
}
|