[Bf-blender-cvs] [f816380af54] soc-2019-openxr: Silence warning, fix mem-leak, don't destroy NULL session

Julian Eisel noreply at git.blender.org
Wed Jun 5 18:05:24 CEST 2019


Commit: f816380af5410a04c4cb2df8d9037d522a155208
Author: Julian Eisel
Date:   Wed Jun 5 18:03:59 2019 +0200
Branches: soc-2019-openxr
https://developer.blender.org/rBf816380af5410a04c4cb2df8d9037d522a155208

Silence warning, fix mem-leak, don't destroy NULL session

===================================================================

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 aad27fb3be0..ef5ba83449b 100644
--- a/source/blender/windowmanager/intern/wm_xr.c
+++ b/source/blender/windowmanager/intern/wm_xr.c
@@ -62,6 +62,9 @@ typedef struct wmXRContext {
     XrSession session;
     XrSessionState session_state;
   } oxr;
+
+  /** Names of enabled extensions */
+  const char **enabled_extensions;
 } wmXRContext;
 
 /**
@@ -154,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,
-                                            char ***r_ext_names,
+                                            const char ***r_ext_names,
                                             uint *r_ext_count)
 {
   const static char *try_ext[] = {
@@ -196,7 +199,8 @@ static bool openxr_instance_setup(wmXRContext *context)
   create_info.applicationInfo.apiVersion = XR_CURRENT_API_VERSION;
 
   openxr_extensions_to_enable_get(
-      context, &create_info.enabledExtensionNames, &create_info.enabledExtensionCount);
+      context, &context->enabled_extensions, &create_info.enabledExtensionCount);
+  create_info.enabledExtensionNames = context->enabled_extensions;
 
   xrCreateInstance(&create_info, &context->oxr.instance);
 
@@ -229,12 +233,16 @@ wmXRContext *wm_xr_context_create(void)
 
 void wm_xr_context_destroy(wmXRContext *xr_context)
 {
-  xrDestroySession(xr_context->oxr.session);
+  if (xr_context->oxr.session != XR_NULL_HANDLE) {
+    xrDestroySession(xr_context->oxr.session);
+  }
   xrDestroyInstance(xr_context->oxr.instance);
 
   MEM_SAFE_FREE(xr_context->oxr.extensions);
   MEM_SAFE_FREE(xr_context->oxr.layers);
 
+  MEM_SAFE_FREE(xr_context->enabled_extensions);
+
   MEM_SAFE_FREE(xr_context);
 }
 
@@ -283,7 +291,6 @@ void wm_xr_session_start(wmXRContext *xr_context)
 void wm_xr_session_end(wmXRContext *xr_context)
 {
   xrEndSession(xr_context->oxr.session);
-  xrDestroySession(xr_context->oxr.session);
 }
 
 static void wm_xr_session_state_change(wmXRContext *xr_context,



More information about the Bf-blender-cvs mailing list