[Bf-blender-cvs] [fa9a841d436] soc-2019-openxr: Wrap WM XR data into own struct
Julian Eisel
noreply at git.blender.org
Tue Oct 15 17:34:21 CEST 2019
Commit: fa9a841d43615b85194575abce737d5c69dc39e1
Author: Julian Eisel
Date: Tue Oct 15 17:33:46 2019 +0200
Branches: soc-2019-openxr
https://developer.blender.org/rBfa9a841d43615b85194575abce737d5c69dc39e1
Wrap WM XR data into own struct
===================================================================
M source/blender/blenloader/intern/readfile.c
M source/blender/blenloader/intern/versioning_280.c
M source/blender/makesdna/DNA_windowmanager_types.h
M source/blender/makesrna/intern/rna_wm.c
M source/blender/windowmanager/intern/wm_operators.c
M source/blender/windowmanager/intern/wm_window.c
M source/blender/windowmanager/intern/wm_xr.c
===================================================================
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 391ebfbd02b..7232b22a979 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -7707,7 +7707,7 @@ static void direct_link_windowmanager(FileData *fd, wmWindowManager *wm)
wm->undo_stack = NULL;
wm->message_bus = NULL;
- wm->xr_context = NULL;
+ wm->xr.context = NULL;
BLI_listbase_clear(&wm->jobs);
BLI_listbase_clear(&wm->drags);
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index d91d3a2f877..9d2f7232949 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -3939,11 +3939,11 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
for (wmWindowManager *wm = bmain->wm.first; wm; wm = wm->id.next) {
const View3D *v3d_default = DNA_struct_default_get(View3D);
- wm->xr_session_settings.shading_type = OB_SOLID;
- wm->xr_session_settings.draw_flags = (V3D_OFSDRAW_SHOW_GRIDFLOOR |
+ wm->xr.session_settings.shading_type = OB_SOLID;
+ wm->xr.session_settings.draw_flags = (V3D_OFSDRAW_SHOW_GRIDFLOOR |
V3D_OFSDRAW_SHOW_ANNOTATION);
- wm->xr_session_settings.clip_start = v3d_default->clip_start;
- wm->xr_session_settings.clip_end = v3d_default->clip_end;
+ wm->xr.session_settings.clip_start = v3d_default->clip_start;
+ wm->xr.session_settings.clip_end = v3d_default->clip_end;
}
}
#endif
diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h
index 073c911c87e..1d5cfcabf9d 100644
--- a/source/blender/makesdna/DNA_windowmanager_types.h
+++ b/source/blender/makesdna/DNA_windowmanager_types.h
@@ -121,6 +121,14 @@ typedef struct ReportTimerInfo {
float widthfac;
} ReportTimerInfo;
+//#ifdef WITH_OPENXR
+typedef struct wmXrData {
+ void *context; /* GHOST_XrContextHandle */
+
+ bXrSessionSettings session_settings;
+} wmXrData;
+//#endif
+
/* reports need to be before wmWindowManager */
/* windowmanager is saved, tag WMAN */
@@ -183,8 +191,7 @@ typedef struct wmWindowManager {
struct wmMsgBus *message_bus;
//#ifdef WITH_OPENXR
- bXrSessionSettings xr_session_settings;
- void *xr_context; /* GHOST_XrContextHandle */
+ wmXrData xr;
//#endif
} wmWindowManager;
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index 46a6e4589cb..2ffa76a44a6 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -2466,6 +2466,7 @@ static void rna_def_windowmanager(BlenderRNA *brna)
# ifdef WITH_OPENXR
prop = RNA_def_property(srna, "xr_session_settings", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "xr.session_settings");
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_ui_text(prop, "XR Session Settings", "");
# endif
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 403454ac2c4..59789880bb7 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -3459,7 +3459,7 @@ static int wm_xr_session_toggle_exec(bContext *C, wmOperator *UNUSED(op))
return OPERATOR_CANCELLED;
}
- wm_xr_session_toggle(C, wm->xr_context);
+ wm_xr_session_toggle(C, wm->xr.context);
return OPERATOR_FINISHED;
}
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 111554868d4..ab2f321c25a 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -1614,7 +1614,7 @@ void wm_window_process_events(const bContext *C)
}
hasevent |= wm_window_timer(C);
#ifdef WITH_OPENXR
- hasevent |= GHOST_XrEventsHandle(CTX_wm_manager(C)->xr_context);
+ hasevent |= GHOST_XrEventsHandle(CTX_wm_manager(C)->xr.context);
#endif
/* no event, we sleep 5 milliseconds */
diff --git a/source/blender/windowmanager/intern/wm_xr.c b/source/blender/windowmanager/intern/wm_xr.c
index ad87e51823d..40276e8664f 100644
--- a/source/blender/windowmanager/intern/wm_xr.c
+++ b/source/blender/windowmanager/intern/wm_xr.c
@@ -100,16 +100,16 @@ static void wm_xr_error_handler(const GHOST_XrError *error)
WM_report_banner_show();
UI_popup_menu_reports(handler_data->evil_C, &wm->reports);
- if (wm->xr_context) {
+ if (wm->xr.context) {
/* Just play safe and destroy the entire context. */
- GHOST_XrContextDestroy(wm->xr_context);
- wm->xr_context = NULL;
+ GHOST_XrContextDestroy(wm->xr.context);
+ wm->xr.context = NULL;
}
}
bool wm_xr_context_ensure(bContext *C, wmWindowManager *wm)
{
- if (wm->xr_context) {
+ if (wm->xr.context) {
return true;
}
static wmXrErrorHandlerData error_customdata;
@@ -137,25 +137,25 @@ bool wm_xr_context_ensure(bContext *C, wmWindowManager *wm)
create_info.context_flag |= GHOST_kXrContextDebugTime;
}
- if (!(wm->xr_context = GHOST_XrContextCreate(&create_info))) {
+ if (!(wm->xr.context = GHOST_XrContextCreate(&create_info))) {
return false;
}
/* Set up context callbacks */
- GHOST_XrGraphicsContextBindFuncs(wm->xr_context,
+ GHOST_XrGraphicsContextBindFuncs(wm->xr.context,
wm_xr_session_gpu_binding_context_create,
wm_xr_session_gpu_binding_context_destroy);
- GHOST_XrDrawViewFunc(wm->xr_context, wm_xr_draw_view);
+ GHOST_XrDrawViewFunc(wm->xr.context, wm_xr_draw_view);
}
- BLI_assert(wm->xr_context != NULL);
+ BLI_assert(wm->xr.context != NULL);
return true;
}
void wm_xr_context_destroy(wmWindowManager *wm)
{
- if (wm->xr_context != NULL) {
- GHOST_XrContextDestroy(wm->xr_context);
+ if (wm->xr.context != NULL) {
+ GHOST_XrContextDestroy(wm->xr.context);
}
}
@@ -261,10 +261,10 @@ static void wm_xr_session_surface_draw(bContext *C)
wmWindowManager *wm = CTX_wm_manager(C);
wmXrSurfaceData *surface_data = g_xr_surface->customdata;
- if (!GHOST_XrSessionIsRunning(wm->xr_context)) {
+ if (!GHOST_XrSessionIsRunning(wm->xr.context)) {
return;
}
- GHOST_XrSessionDrawViews(wm->xr_context, C);
+ GHOST_XrSessionDrawViews(wm->xr.context, C);
if (surface_data->viewport) {
/* Still bound from view drawing. */
wm_xr_surface_viewport_unbind(surface_data);
@@ -450,7 +450,7 @@ void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
bContext *C = customdata;
wmWindowManager *wm = CTX_wm_manager(C);
wmXrSurfaceData *surface_data = g_xr_surface->customdata;
- bXrSessionSettings *settings = &wm->xr_session_settings;
+ bXrSessionSettings *settings = &wm->xr.session_settings;
const float display_flags = V3D_OFSDRAW_OVERRIDE_SCENE_SETTINGS | settings->draw_flags;
const rcti rect = {
.xmin = 0, .ymin = 0, .xmax = draw_view->width - 1, .ymax = draw_view->height - 1};
@@ -479,7 +479,7 @@ void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
ED_view3d_draw_offscreen_simple(CTX_data_ensure_evaluated_depsgraph(C),
CTX_data_scene(C),
&shading,
- wm->xr_session_settings.shading_type,
+ wm->xr.session_settings.shading_type,
draw_view->width,
draw_view->height,
display_flags,
More information about the Bf-blender-cvs
mailing list