[Bf-blender-cvs] [69bfe4b4c3a] vr_scene_inspection: Fix memory leak when closing Blender with running VR session
Julian Eisel
noreply at git.blender.org
Wed Dec 11 19:07:42 CET 2019
Commit: 69bfe4b4c3a2fe3f9d9df330f82d7f731f7022fb
Author: Julian Eisel
Date: Wed Dec 11 19:06:24 2019 +0100
Branches: vr_scene_inspection
https://developer.blender.org/rB69bfe4b4c3a2fe3f9d9df330f82d7f731f7022fb
Fix memory leak when closing Blender with running VR session
===================================================================
M source/blender/windowmanager/intern/wm.c
M source/blender/windowmanager/intern/wm_xr.c
M source/blender/windowmanager/wm.h
===================================================================
diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c
index 4e7d7eead6f..8cf08bf42bb 100644
--- a/source/blender/windowmanager/intern/wm.c
+++ b/source/blender/windowmanager/intern/wm.c
@@ -375,7 +375,7 @@ void wm_close_and_free(bContext *C, wmWindowManager *wm)
}
#ifdef WITH_OPENXR
- wm_xr_context_destroy(wm);
+ wm_xr_data_destroy(wm);
#endif
BLI_freelistN(&wm->paintcursors);
diff --git a/source/blender/windowmanager/intern/wm_xr.c b/source/blender/windowmanager/intern/wm_xr.c
index 8888863ccff..9b7d616b6f9 100644
--- a/source/blender/windowmanager/intern/wm_xr.c
+++ b/source/blender/windowmanager/intern/wm_xr.c
@@ -59,6 +59,7 @@
#include "wm_surface.h"
#include "wm_window.h"
+void wm_xr_runtime_session_state_free(struct bXrRuntimeSessionState *state);
void wm_xr_draw_view(const GHOST_XrDrawViewInfo *, void *);
void *wm_xr_session_gpu_binding_context_create(GHOST_TXrGraphicsBinding);
void wm_xr_session_gpu_binding_context_destroy(GHOST_TXrGraphicsBinding, void *);
@@ -169,11 +170,14 @@ bool wm_xr_context_ensure(bContext *C, wmWindowManager *wm)
return true;
}
-void wm_xr_context_destroy(wmWindowManager *wm)
+void wm_xr_data_destroy(wmWindowManager *wm)
{
if (wm->xr.context != NULL) {
GHOST_XrContextDestroy(wm->xr.context);
}
+ if (wm->xr.session_state != NULL) {
+ wm_xr_runtime_session_state_free(wm->xr.session_state);
+ }
}
/** \} */ /* XR-Context */
@@ -200,7 +204,7 @@ static bXrRuntimeSessionState *wm_xr_runtime_session_state_create(const Scene *s
return state;
}
-static void wm_xr_runtime_session_state_free(bXrRuntimeSessionState *state)
+void wm_xr_runtime_session_state_free(bXrRuntimeSessionState *state)
{
MEM_SAFE_FREE(state);
}
diff --git a/source/blender/windowmanager/wm.h b/source/blender/windowmanager/wm.h
index 931ac58d50e..bfcfda6fabe 100644
--- a/source/blender/windowmanager/wm.h
+++ b/source/blender/windowmanager/wm.h
@@ -105,7 +105,7 @@ void wm_draw_offscreen_texture_parameters(struct GPUOffScreen *offscreen);
#ifdef WITH_OPENXR
/* wm_xr.c */
bool wm_xr_context_ensure(bContext *C, wmWindowManager *wm);
-void wm_xr_context_destroy(wmWindowManager *wm);
+void wm_xr_data_destroy(wmWindowManager *wm);
void wm_xr_session_toggle(bContext *C, void *xr_context);
#endif
More information about the Bf-blender-cvs
mailing list