mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 12:32:40 +02:00
55 lines
1.5 KiB
C
55 lines
1.5 KiB
C
#include <string.h>
|
|
#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();
|
|
}
|