mirror of https://github.com/bjornbytes/lovr.git
Expose runtime name in lovr.headset.getDriver;
This commit is contained in:
parent
dabbd449a8
commit
74325d81a1
|
@ -174,6 +174,10 @@ var webxr = {
|
|||
}
|
||||
},
|
||||
|
||||
webxr_getDriverName: function(name, size) {
|
||||
return false;
|
||||
}
|
||||
|
||||
webxr_getName: function(name, size) {
|
||||
return false;
|
||||
},
|
||||
|
|
|
@ -84,7 +84,13 @@ static int l_lovrHeadsetStart(lua_State* L) {
|
|||
|
||||
static int l_lovrHeadsetGetDriver(lua_State* L) {
|
||||
luax_pushenum(L, HeadsetDriver, lovrHeadsetInterface->driverType);
|
||||
return 1;
|
||||
char name[256];
|
||||
if (lovrHeadsetInterface->getDriverName(name, sizeof(name))) {
|
||||
lua_pushstring(L, name);
|
||||
} else {
|
||||
lua_pushnil(L);
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int l_lovrHeadsetGetName(lua_State* L) {
|
||||
|
|
|
@ -131,6 +131,7 @@ typedef struct HeadsetInterface {
|
|||
void (*start)(void);
|
||||
void (*stop)(void);
|
||||
void (*destroy)(void);
|
||||
bool (*getDriverName)(char* name, size_t length);
|
||||
bool (*getName)(char* name, size_t length);
|
||||
bool (*isSeated)(void);
|
||||
void (*getDisplayDimensions)(uint32_t* width, uint32_t* height);
|
||||
|
|
|
@ -51,6 +51,7 @@ uintptr_t gpu_vk_get_queue(uint32_t* queueFamilyIndex, uint32_t* queueIndex);
|
|||
|
||||
#define XR_FOREACH(X)\
|
||||
X(xrDestroyInstance)\
|
||||
X(xrGetInstanceProperties)\
|
||||
X(xrPollEvent)\
|
||||
X(xrResultToString)\
|
||||
X(xrGetSystem)\
|
||||
|
@ -1391,9 +1392,17 @@ static void openxr_destroy(void) {
|
|||
memset(&state, 0, sizeof(state));
|
||||
}
|
||||
|
||||
static bool openxr_getDriverName(char* name, size_t length) {
|
||||
XrInstanceProperties properties = { .type = XR_TYPE_INSTANCE_PROPERTIES };
|
||||
if (XR_FAILED(xrGetInstanceProperties(state.instance, &properties))) return false;
|
||||
strncpy(name, properties.runtimeName, length - 1);
|
||||
name[length - 1] = '\0';
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool openxr_getName(char* name, size_t length) {
|
||||
XrSystemProperties properties = { .type = XR_TYPE_SYSTEM_PROPERTIES };
|
||||
XR(xrGetSystemProperties(state.instance, state.system, &properties), "Failed to query system properties");
|
||||
if (XR_FAILED(xrGetSystemProperties(state.instance, state.system, &properties))) return false;
|
||||
strncpy(name, properties.systemName, length - 1);
|
||||
name[length - 1] = '\0';
|
||||
return true;
|
||||
|
@ -2589,6 +2598,7 @@ HeadsetInterface lovrHeadsetOpenXRDriver = {
|
|||
.start = openxr_start,
|
||||
.stop = openxr_stop,
|
||||
.destroy = openxr_destroy,
|
||||
.getDriverName = openxr_getDriverName,
|
||||
.getName = openxr_getName,
|
||||
.isSeated = openxr_isSeated,
|
||||
.getDisplayDimensions = openxr_getDisplayDimensions,
|
||||
|
|
|
@ -97,6 +97,12 @@ static void simulator_destroy(void) {
|
|||
simulator_stop();
|
||||
}
|
||||
|
||||
static bool simulator_getDriverName(char* name, size_t length) {
|
||||
strncpy(name, "LÖVR", length - 1);
|
||||
name[length - 1] = '\0';
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool simulator_getName(char* name, size_t length) {
|
||||
strncpy(name, "Simulator", length - 1);
|
||||
name[length - 1] = '\0';
|
||||
|
@ -389,6 +395,7 @@ HeadsetInterface lovrHeadsetSimulatorDriver = {
|
|||
.start = simulator_start,
|
||||
.stop = simulator_stop,
|
||||
.destroy = simulator_destroy,
|
||||
.getDriverName = simulator_getDriverName,
|
||||
.getName = simulator_getName,
|
||||
.isSeated = simulator_isSeated,
|
||||
.getDisplayDimensions = simulator_getDisplayDimensions,
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
extern bool webxr_init(HeadsetConfig* config);
|
||||
extern void webxr_start(void);
|
||||
extern void webxr_destroy(void);
|
||||
extern bool webxr_getDriverName(char* name, size_t length);
|
||||
extern bool webxr_getName(char* name, size_t length);
|
||||
extern bool webxr_isSeated(void);
|
||||
extern void webxr_getDisplayDimensions(uint32_t* width, uint32_t* height);
|
||||
|
@ -59,6 +60,7 @@ HeadsetInterface lovrHeadsetWebXRDriver = {
|
|||
.init = webxr_init,
|
||||
.start = webxr_start,
|
||||
.destroy = webxr_destroy,
|
||||
.getDriverName = webxr_getDriverName,
|
||||
.getName = webxr_getName,
|
||||
.isSeated = webxr_isSeated,
|
||||
.getDisplayTime = webxr_getDisplayTime,
|
||||
|
|
Loading…
Reference in New Issue