#include #include "types.h" #include "result.h" #include "services/vi.h" #include "runtime/diag.h" #include "display/binder.h" #include "display/buffer_producer.h" #include "display/native_window.h" #include "nvidia/graphic_buffer.h" static ViDisplay g_viDisplay; static ViLayer g_viLayer; static NWindow g_defaultWin; NWindow* nwindowGetDefault(void) { return &g_defaultWin; } void __attribute__((weak)) __nx_win_init(void) { Result rc; rc = viInitialize(ViServiceType_Default); if (R_SUCCEEDED(rc)) { rc = viOpenDefaultDisplay(&g_viDisplay); if (R_SUCCEEDED(rc)) { rc = viCreateLayer(&g_viDisplay, &g_viLayer); if (R_SUCCEEDED(rc)) { rc = viSetLayerScalingMode(&g_viLayer, ViScalingMode_FitToLayer); if (R_SUCCEEDED(rc)) { rc = nwindowCreateFromLayer(&g_defaultWin, &g_viLayer); if (R_SUCCEEDED(rc)) nwindowSetDimensions(&g_defaultWin, 1280, 720); } if (R_FAILED(rc)) viCloseLayer(&g_viLayer); } if (R_FAILED(rc)) viCloseDisplay(&g_viDisplay); } if (R_FAILED(rc)) viExit(); } if (R_FAILED(rc)) diagAbortWithResult(MAKERESULT(Module_Libnx, LibnxError_BadGfxInit)); } void __attribute__((weak)) __nx_win_exit(void) { nwindowClose(&g_defaultWin); viCloseLayer(&g_viLayer); viCloseDisplay(&g_viDisplay); viExit(); }