[Bf-blender-cvs] [5d6da57aa3a] soc-2019-openxr: Cleanup: Move OpenXRData struct out of wmXRContext
Julian Eisel
noreply at git.blender.org
Thu Jun 6 18:39:03 CEST 2019
Commit: 5d6da57aa3a86686e0e548165f2ce7bb9d5b93ef
Author: Julian Eisel
Date: Thu Jun 6 18:38:06 2019 +0200
Branches: soc-2019-openxr
https://developer.blender.org/rB5d6da57aa3a86686e0e548165f2ce7bb9d5b93ef
Cleanup: Move OpenXRData struct out of wmXRContext
Just to make access a bit more convenient.
===================================================================
M source/blender/windowmanager/intern/wm_xr.c
===================================================================
diff --git a/source/blender/windowmanager/intern/wm_xr.c b/source/blender/windowmanager/intern/wm_xr.c
index d7b44c833ec..edd40ad1a99 100644
--- a/source/blender/windowmanager/intern/wm_xr.c
+++ b/source/blender/windowmanager/intern/wm_xr.c
@@ -48,20 +48,22 @@
static_assert(false, "WITH_OPENXR not defined, but wm_xr.c is being compiled.");
#endif
-typedef struct wmXRContext {
- struct OpenXRData {
- XrInstance instance;
+typedef struct OpenXRData {
+ XrInstance instance;
+
+ XrExtensionProperties *extensions;
+ uint32_t extension_count;
- XrExtensionProperties *extensions;
- uint32_t extension_count;
+ XrApiLayerProperties *layers;
+ uint32_t layer_count;
- XrApiLayerProperties *layers;
- uint32_t layer_count;
+ XrSystemId system_id;
+ XrSession session;
+ XrSessionState session_state;
+} OpenXRData;
- XrSystemId system_id;
- XrSession session;
- XrSessionState session_state;
- } oxr;
+typedef struct wmXRContext {
+ OpenXRData oxr;
/** Names of enabled extensions */
const char **enabled_extensions;
@@ -70,11 +72,11 @@ typedef struct wmXRContext {
/**
* \param layer_name May be NULL for extensions not belonging to a specific layer.
*/
-static void openxr_gather_extensions_ex(wmXRContext *context, const char *layer_name)
+static void openxr_gather_extensions_ex(OpenXRData *oxr, const char *layer_name)
{
uint32_t extension_count = 0;
- context->oxr.extensions = NULL;
+ oxr->extensions = NULL;
/* Get count for array creation/init first. */
xrEnumerateInstanceExtensionProperties(layer_name, 0, &extension_count, NULL);
@@ -84,11 +86,11 @@ static void openxr_gather_extensions_ex(wmXRContext *context, const char *layer_
return;
}
- context->oxr.extensions = MEM_calloc_arrayN(
- extension_count, sizeof(*context->oxr.extensions), "xrExtensionProperties");
- context->oxr.extension_count = extension_count;
+ oxr->extensions = MEM_calloc_arrayN(
+ extension_count, sizeof(*oxr->extensions), "xrExtensionProperties");
+ oxr->extension_count = extension_count;
for (uint i = 0; i < extension_count; i++) {
- context->oxr.extensions[i].type = XR_TYPE_EXTENSION_PROPERTIES;
+ oxr->extensions[i].type = XR_TYPE_EXTENSION_PROPERTIES;
}
#ifdef USE_EXT_LAYER_PRINTS
@@ -98,19 +100,19 @@ static void openxr_gather_extensions_ex(wmXRContext *context, const char *layer_
#endif
/* Actually get the extensions. */
xrEnumerateInstanceExtensionProperties(
- layer_name, extension_count, &extension_count, context->oxr.extensions);
+ layer_name, extension_count, &extension_count, oxr->extensions);
#ifdef USE_EXT_LAYER_PRINTS
for (uint i = 0; i < extension_count; i++) {
- printf("Extension: %s\n", context->oxr.extensions[i].extensionName);
+ printf("Extension: %s\n", oxr->extensions[i].extensionName);
}
#endif
}
-static void openxr_gather_extensions(wmXRContext *context)
+static void openxr_gather_extensions(OpenXRData *oxr)
{
- openxr_gather_extensions_ex(context, NULL);
+ openxr_gather_extensions_ex(oxr, NULL);
}
-static void openxr_gather_api_layers(wmXRContext *context)
+static void openxr_gather_api_layers(OpenXRData *oxr)
{
uint32_t layer_count = 0;
@@ -122,30 +124,29 @@ static void openxr_gather_api_layers(wmXRContext *context)
return;
}
- context->oxr.layers = MEM_calloc_arrayN(
- layer_count, sizeof(*context->oxr.layers), "XrApiLayerProperties");
- context->oxr.layer_count = layer_count;
+ oxr->layers = MEM_calloc_arrayN(layer_count, sizeof(*oxr->layers), "XrApiLayerProperties");
+ oxr->layer_count = layer_count;
for (uint i = 0; i < layer_count; i++) {
- context->oxr.layers[i].type = XR_TYPE_API_LAYER_PROPERTIES;
+ oxr->layers[i].type = XR_TYPE_API_LAYER_PROPERTIES;
}
/* Actually get the layers. */
- xrEnumerateApiLayerProperties(layer_count, &layer_count, context->oxr.layers);
+ xrEnumerateApiLayerProperties(layer_count, &layer_count, oxr->layers);
for (uint i = 0; i < layer_count; i++) {
#ifdef USE_EXT_LAYER_PRINTS
- printf("Layer: %s\n", context->oxr.layers[i].layerName);
+ printf("Layer: %s\n", oxr->layers[i].layerName);
#endif
/* Each layer may have own extensions */
- openxr_gather_extensions_ex(context, context->oxr.layers[i].layerName);
+ openxr_gather_extensions_ex(oxr, oxr->layers[i].layerName);
}
}
ATTR_NONNULL()
ATTR_WARN_UNUSED_RESULT
-static bool openxr_extension_is_available(const wmXRContext *context, const char *extension_name)
+static bool openxr_extension_is_available(const OpenXRData *oxr, const char *extension_name)
{
- for (uint i = 0; i < context->oxr.extension_count; i++) {
- if (STREQ(context->oxr.extensions[i].extensionName, extension_name)) {
+ for (uint i = 0; i < oxr->extension_count; i++) {
+ if (STREQ(oxr->extensions[i].extensionName, extension_name)) {
return true;
}
}
@@ -156,7 +157,7 @@ static bool openxr_extension_is_available(const wmXRContext *context, const char
/**
* Gather an array of names for the extensions to enable.
*/
-static void openxr_extensions_to_enable_get(const wmXRContext *context,
+static void openxr_extensions_to_enable_get(const OpenXRData *oxr,
const char ***r_ext_names,
uint *r_ext_count)
{
@@ -174,7 +175,7 @@ static void openxr_extensions_to_enable_get(const wmXRContext *context,
*r_ext_names = MEM_malloc_arrayN(try_ext_count, sizeof(char *), __func__);
for (uint i = 0, j = 0; j < try_ext_count; j++) {
- if (openxr_extension_is_available(context, try_ext[j])) {
+ if (openxr_extension_is_available(oxr, try_ext[j])) {
*r_ext_names[i++] = try_ext[j];
}
}
@@ -184,12 +185,13 @@ ATTR_NONNULL()
static bool openxr_instance_setup(wmXRContext *context)
{
XrInstanceCreateInfo create_info = {.type = XR_TYPE_INSTANCE_CREATE_INFO};
+ OpenXRData *oxr = &context->oxr;
#ifdef USE_EXT_LAYER_PRINTS
puts("Available OpenXR layers/extensions:");
#endif
- openxr_gather_api_layers(context);
- openxr_gather_extensions(context);
+ openxr_gather_api_layers(oxr);
+ openxr_gather_extensions(oxr);
#ifdef USE_EXT_LAYER_PRINTS
puts("Done printing OpenXR layers/extensions.");
#endif
@@ -199,21 +201,21 @@ static bool openxr_instance_setup(wmXRContext *context)
create_info.applicationInfo.apiVersion = XR_CURRENT_API_VERSION;
openxr_extensions_to_enable_get(
- context, &context->enabled_extensions, &create_info.enabledExtensionCount);
+ oxr, &context->enabled_extensions, &create_info.enabledExtensionCount);
create_info.enabledExtensionNames = context->enabled_extensions;
- xrCreateInstance(&create_info, &context->oxr.instance);
+ xrCreateInstance(&create_info, &oxr->instance);
return true;
}
ATTR_NONNULL()
-static void openxr_instance_log_print(wmXRContext *context)
+static void openxr_instance_log_print(OpenXRData *oxr)
{
- BLI_assert(context->oxr.instance != XR_NULL_HANDLE);
+ BLI_assert(oxr->instance != XR_NULL_HANDLE);
XrInstanceProperties instanceProperties = {XR_TYPE_INSTANCE_PROPERTIES};
- xrGetInstanceProperties(context->oxr.instance, &instanceProperties);
+ xrGetInstanceProperties(oxr->instance, &instanceProperties);
printf("Connected to OpenXR runtime: %s\n", instanceProperties.runtimeName);
}
@@ -221,25 +223,28 @@ static void openxr_instance_log_print(wmXRContext *context)
wmXRContext *wm_xr_context_create(void)
{
wmXRContext *xr_context = MEM_callocN(sizeof(*xr_context), "wmXRContext");
+ OpenXRData *oxr = &xr_context->oxr;
- xr_context->oxr.session_state = XR_SESSION_STATE_UNKNOWN;
+ oxr->session_state = XR_SESSION_STATE_UNKNOWN;
BLI_assert(xr_context->oxr.instance == XR_NULL_HANDLE);
openxr_instance_setup(xr_context);
- openxr_instance_log_print(xr_context);
+ openxr_instance_log_print(oxr);
return xr_context;
}
void wm_xr_context_destroy(wmXRContext *xr_context)
{
- if (xr_context->oxr.session != XR_NULL_HANDLE) {
- xrDestroySession(xr_context->oxr.session);
+ OpenXRData *oxr = &xr_context->oxr;
+
+ if (oxr->session != XR_NULL_HANDLE) {
+ xrDestroySession(oxr->session);
}
- xrDestroyInstance(xr_context->oxr.instance);
+ xrDestroyInstance(oxr->instance);
- MEM_SAFE_FREE(xr_context->oxr.extensions);
- MEM_SAFE_FREE(xr_context->oxr.layers);
+ MEM_SAFE_FREE(oxr->extensions);
+ MEM_SAFE_FREE(oxr->layers);
MEM_SAFE_FREE(xr_context->enabled_extensions);
@@ -248,11 +253,13 @@ void wm_xr_context_destroy(wmXRContext *xr_context)
bool wm_xr_session_is_running(const wmXRContext *xr_context)
{
- if (xr_context->oxr.session == XR_NULL_HANDLE) {
+ const OpenXRData *oxr = &xr_context->oxr;
+
+ if (oxr->session == XR_NULL_HANDLE) {
return false;
}
- return ELEM(xr_context->oxr.session_state,
+ return ELEM(oxr->session_state,
XR_SESSION_STATE_RUNNING,
XR_SESSION_STATE_VISIBLE,
XR_SESSION_STATE_FOCUSED);
@@ -262,30 +269,32 @@ bool wm_xr_session_is_running(const wmXRContext *xr_context)
* A system in OpenXR the combination of some sort of HMD plus controllers and whatever other
* devices are managed through OpenXR. So this attempts to init the HMD and the other devices.
*/
-static void wm_xr_system_init(wmXRContext *xr_context)
+static void wm_xr_system_init(OpenXRData *oxr)
{
- BLI_assert(xr_context->oxr.instance != XR_NULL_HANDLE);
- BLI_assert(xr_context->oxr.system_id == XR_NULL_SYSTEM_ID);
+ BLI_assert(oxr->instance != XR_NULL_HANDLE);
+ BLI_assert(oxr->system_id == XR_NULL_SYSTEM_ID);
XrSystemGetInfo system_info = {.type = XR_TYPE_SYSTEM_GET_INFO};
system_info.formFactor = XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY;
- xrGetSystem(xr_context->oxr.instance, &system_info, &xr_context->oxr.system_id);
+ xrGetSystem(oxr->instance, &system_info, &oxr->system_id);
}
void wm_xr_session_start(wmXRContext *xr_context)
{
- BLI_assert(xr_context->oxr.instance != XR_NULL_HANDLE);
- BLI_assert(xr_context->oxr.session == XR_NULL_HANDLE);
+ OpenXRData *oxr = &xr_context->oxr;
+
+ BLI_assert(oxr->instance != XR_NULL_HANDLE);
+ BLI_assert(oxr->session == XR_NULL_HANDLE);
- wm_xr_syste
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list