Revision: 76165
http://sourceforge.net/p/brlcad/code/76165
Author: starseeker
Date: 2020-06-19 19:04:36 +0000 (Fri, 19 Jun 2020)
Log Message:
-----------
Wrap the curr_dm_list setting in order to also update relevant GEDP variables.
Modified Paths:
--------------
brlcad/trunk/src/mged/adc.c
brlcad/trunk/src/mged/attach.c
brlcad/trunk/src/mged/buttons.c
brlcad/trunk/src/mged/chgview.c
brlcad/trunk/src/mged/cmd.c
brlcad/trunk/src/mged/color_scheme.c
brlcad/trunk/src/mged/doevent.c
brlcad/trunk/src/mged/dozoom.c
brlcad/trunk/src/mged/fbserv.c
brlcad/trunk/src/mged/menu.c
brlcad/trunk/src/mged/mged.c
brlcad/trunk/src/mged/mged_dm.h
brlcad/trunk/src/mged/set.c
brlcad/trunk/src/mged/share.c
Modified: brlcad/trunk/src/mged/adc.c
===================================================================
--- brlcad/trunk/src/mged/adc.c 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/adc.c 2020-06-19 19:04:36 UTC (rev 76165)
@@ -94,12 +94,12 @@
FOR_ALL_DISPLAYS(dmlp, &head_dm_list.l)
if (dmlp->dml_adc_state == adc_state) {
- curr_dm_list = dmlp;
+ set_curr_dm(dmlp);
set_scroll();
dirty = 1;
}
- curr_dm_list = save_dmlp;
+ set_curr_dm(save_dmlp);
}
Modified: brlcad/trunk/src/mged/attach.c
===================================================================
--- brlcad/trunk/src/mged/attach.c 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/attach.c 2020-06-19 19:04:36 UTC (rev 76165)
@@ -125,6 +125,17 @@
struct dm_list *curr_dm_list = (struct dm_list *)NULL;
static fastf_t windowbounds[6] = { XMIN, XMAX, YMIN, YMAX, (int)GED_MIN,
(int)GED_MAX };
+/* If we changed the active dm, need to update GEDP as well.. */
+void set_curr_dm(struct dm_list *nl)
+{
+ curr_dm_list = nl;
+ if (nl != DM_LIST_NULL) {
+ GEDP->ged_gvp = nl->dml_view_state->vs_gvp;
+ GEDP->ged_gvp->gv_grid = *nl->dml_grid_state; /* struct copy */
+ } else {
+ GEDP->ged_gvp = NULL;
+ }
+}
#ifdef DM_OGL
static int
@@ -347,7 +358,7 @@
/* found it */
if (p != curr_dm_list) {
save_dm_list = curr_dm_list;
- curr_dm_list = p;
+ set_curr_dm(p);
}
break;
}
@@ -396,9 +407,9 @@
bu_free((void *)curr_dm_list, "release: curr_dm_list");
if (save_dm_list != DM_LIST_NULL)
- curr_dm_list = save_dm_list;
+ set_curr_dm(save_dm_list);
else
- curr_dm_list = (struct dm_list *)head_dm_list.l.forw;
+ set_curr_dm((struct dm_list *)head_dm_list.l.forw);
return TCL_OK;
}
@@ -629,7 +640,7 @@
if (dm_get_dname(tmp_dmp) &&
strlen(bu_vls_addr(dm_get_dname(tmp_dmp)))) {
if (gui_setup(bu_vls_addr(dm_get_dname(tmp_dmp))) == TCL_ERROR) {
bu_free((void *)curr_dm_list, "f_attach: dm_list");
- curr_dm_list = o_dm_list;
+ set_curr_dm(o_dm_list);
bu_vls_free(&tmp_vls);
dm_put(tmp_dmp);
return TCL_ERROR;
@@ -636,7 +647,7 @@
}
} else if (gui_setup((char *)NULL) == TCL_ERROR) {
bu_free((void *)curr_dm_list, "f_attach: dm_list");
- curr_dm_list = o_dm_list;
+ set_curr_dm(o_dm_list);
bu_vls_free(&tmp_vls);
dm_put(tmp_dmp);
return TCL_ERROR;
@@ -685,6 +696,9 @@
(void)dm_set_win_bounds(DMP, windowbounds);
mged_fb_open();
+ GEDP->ged_gvp = curr_dm_list->dml_view_state->vs_gvp;
+ GEDP->ged_gvp->gv_grid = *curr_dm_list->dml_grid_state; /* struct copy */
+
return TCL_OK;
Bad:
Modified: brlcad/trunk/src/mged/buttons.c
===================================================================
--- brlcad/trunk/src/mged/buttons.c 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/buttons.c 2020-06-19 19:04:36 UTC (rev 76165)
@@ -954,12 +954,12 @@
save_dm_list = curr_dm_list;
FOR_ALL_DISPLAYS(p, &head_dm_list.l) {
- curr_dm_list = p;
+ set_curr_dm(p);
new_mats();
}
- curr_dm_list = save_dm_list;
+ set_curr_dm(save_dm_list);
bu_vls_printf(&vls, "%s(state)", MGED_DISPLAY_VAR);
Tcl_SetVar(INTERP, bu_vls_addr(&vls), state_str[STATE], TCL_GLOBAL_ONLY);
Modified: brlcad/trunk/src/mged/chgview.c
===================================================================
--- brlcad/trunk/src/mged/chgview.c 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/chgview.c 2020-06-19 19:04:36 UTC (rev 76165)
@@ -447,7 +447,7 @@
FOR_ALL_DISPLAYS(dmlp, &head_dm_list.l) {
int non_empty = 0; /* start out empty */
- curr_dm_list = dmlp;
+ set_curr_dm(dmlp);
if (curr_dm_list->dml_tie) {
curr_cmd_list = curr_dm_list->dml_tie;
@@ -487,7 +487,7 @@
}
}
- curr_dm_list = save_dmlp;
+ set_curr_dm(save_dmlp);
curr_cmd_list = save_cmd_list;
GEDP->ged_gvp = view_state->vs_gvp;
@@ -594,7 +594,7 @@
FOR_ALL_DISPLAYS(dmlp, &head_dm_list.l) {
struct view_ring *vrp;
- curr_dm_list = dmlp;
+ set_curr_dm(dmlp);
if (curr_dm_list->dml_tie) {
curr_cmd_list = curr_dm_list->dml_tie;
@@ -626,7 +626,7 @@
vrp->vr_scale = view_state->vs_gvp->gv_scale;
}
}
- curr_dm_list = save_dmlp;
+ set_curr_dm(save_dmlp);
curr_cmd_list = save_cmd_list;
GEDP->ged_gvp = view_state->vs_gvp;
Modified: brlcad/trunk/src/mged/cmd.c
===================================================================
--- brlcad/trunk/src/mged/cmd.c 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/cmd.c 2020-06-19 19:04:36 UTC (rev 76165)
@@ -935,7 +935,7 @@
}
if (curr_cmd_list->cl_tie) {
- curr_dm_list = curr_cmd_list->cl_tie;
+ set_curr_dm(curr_cmd_list->cl_tie);
if (GEDP != GED_NULL)
GEDP->ged_gvp = view_state->vs_gvp;
@@ -1498,7 +1498,7 @@
av[0] = "release";
av[1] = NULL;
status = f_release(clientData, interpreter, 1, av);
- curr_dm_list = dml;
+ set_curr_dm(dml);
GEDP->ged_gvp = view_state->vs_gvp;
return status;
@@ -1530,7 +1530,7 @@
/* change primary focus to window argv[1] */
FOR_ALL_DISPLAYS(p, &head_dm_list.l) {
if (dm_get_pathname(p->dml_dmp) && BU_STR_EQUAL(argv[1],
bu_vls_addr(dm_get_pathname(p->dml_dmp)))) {
- curr_dm_list = p;
+ set_curr_dm(p);
if (curr_dm_list->dml_tie)
curr_cmd_list = curr_dm_list->dml_tie;
Modified: brlcad/trunk/src/mged/color_scheme.c
===================================================================
--- brlcad/trunk/src/mged/color_scheme.c 2020-06-19 18:30:58 UTC (rev
76164)
+++ brlcad/trunk/src/mged/color_scheme.c 2020-06-19 19:04:36 UTC (rev
76165)
@@ -298,13 +298,13 @@
FOR_ALL_DISPLAYS(dmlp, &head_dm_list.l) {
if (dmlp->dml_color_scheme == color_scheme) {
dmlp->dml_dirty = 1;
- curr_dm_list = dmlp;
+ set_curr_dm(dmlp);
Tcl_Eval(INTERP, bu_vls_addr(&vls));
}
}
bu_vls_free(&vls);
- curr_dm_list = save_curr_dmlp;
+ set_curr_dm(save_curr_dmlp);
}
Modified: brlcad/trunk/src/mged/doevent.c
===================================================================
--- brlcad/trunk/src/mged/doevent.c 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/doevent.c 2020-06-19 19:04:36 UTC (rev 76165)
@@ -126,7 +126,7 @@
/* it's an event for a window that I'm not handling */
if (curr_dm_list == DM_LIST_NULL) {
- curr_dm_list = save_dm_list;
+ set_curr_dm(save_dm_list);
return TCL_OK;
}
@@ -139,7 +139,7 @@
/* no further processing of this event */
if (status != TCL_OK) {
- curr_dm_list = save_dm_list;
+ set_curr_dm(save_dm_list);
return status;
}
@@ -195,7 +195,7 @@
}
#endif
- curr_dm_list = save_dm_list;
+ set_curr_dm(save_dm_list);
return status;
}
#else
Modified: brlcad/trunk/src/mged/dozoom.c
===================================================================
--- brlcad/trunk/src/mged/dozoom.c 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/dozoom.c 2020-06-19 19:04:36 UTC (rev 76165)
@@ -169,7 +169,7 @@
geometry_default_color, 1,
mged_variables->mv_dlist);
/* The vectorThreshold stuff in libdm may turn the Tcl-crank causing
curr_dm_list to change. */
- if (curr_dm_list != save_dm_list) curr_dm_list = save_dm_list;
+ if (curr_dm_list != save_dm_list) set_curr_dm(save_dm_list);
curr_dm_list->dml_ndrawn += ndrawn;
@@ -194,7 +194,7 @@
}
/* The vectorThreshold stuff in libdm may turn the Tcl-crank causing
curr_dm_list to change. */
- if (curr_dm_list != save_dm_list) curr_dm_list = save_dm_list;
+ if (curr_dm_list != save_dm_list) set_curr_dm(save_dm_list);
curr_dm_list->dml_ndrawn += ndrawn;
@@ -236,7 +236,7 @@
curr_dm_list->dml_ndrawn += ndrawn;
/* The vectorThreshold stuff in libdm may turn the Tcl-crank causing
curr_dm_list to change. */
- if (curr_dm_list != save_dm_list) curr_dm_list = save_dm_list;
+ if (curr_dm_list != save_dm_list) set_curr_dm(save_dm_list);
}
/*
@@ -297,7 +297,7 @@
dlp->dml_dirty = 1;
}
- curr_dm_list = save_dlp;
+ set_curr_dm(save_dlp);
}
/*
Modified: brlcad/trunk/src/mged/fbserv.c
===================================================================
--- brlcad/trunk/src/mged/fbserv.c 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/fbserv.c 2020-06-19 19:04:36 UTC (rev 76165)
@@ -136,7 +136,7 @@
/* save */
scdlp = curr_dm_list;
- curr_dm_list = dlp;
+ set_curr_dm(dlp);
for (i = MAX_CLIENTS-1; i >= 0; i--) {
if (clients[i].c_fd == 0)
continue;
@@ -165,7 +165,7 @@
}
/* restore */
- curr_dm_list = scdlp;
+ set_curr_dm(scdlp);
}
@@ -221,13 +221,13 @@
/* save */
scdlp = curr_dm_list;
- curr_dm_list = dlp;
+ set_curr_dm(dlp);
if (Tcl_GetChannelHandle(chan, TCL_READABLE, (ClientData *)&fd) == TCL_OK)
fbserv_new_client(fbserv_makeconn((int)fd, pkg_switch), chan);
/* restore */
- curr_dm_list = scdlp;
+ set_curr_dm(scdlp);
}
@@ -399,11 +399,11 @@
/* save */
scdlp = curr_dm_list;
- curr_dm_list = dlp;
+ set_curr_dm(dlp);
fbserv_new_client(pkg_getclient(fd, pkg_switch, communications_error, 0));
/* restore */
- curr_dm_list = scdlp;
+ set_curr_dm(scdlp);
}
Modified: brlcad/trunk/src/mged/menu.c
===================================================================
--- brlcad/trunk/src/mged/menu.c 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/menu.c 2020-06-19 19:04:36 UTC (rev 76165)
@@ -141,12 +141,12 @@
if (p->dml_tie)
curr_cmd_list = p->dml_tie;
- curr_dm_list = p;
+ set_curr_dm(p);
mmenu_set(index, value);
}
curr_cmd_list = save_cmd_list;
- curr_dm_list = save_dm_list;
+ set_curr_dm(save_dm_list);
}
Modified: brlcad/trunk/src/mged/mged.c
===================================================================
--- brlcad/trunk/src/mged/mged.c 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/mged.c 2020-06-19 19:04:36 UTC (rev 76165)
@@ -358,13 +358,13 @@
if (!p->dml_owner)
continue;
- curr_dm_list = p;
+ set_curr_dm(p);
bn_mat_mul(view_state->vs_model2objview,
view_state->vs_gvp->gv_model2view, modelchanges);
bn_mat_inv(view_state->vs_objview2model, view_state->vs_model2objview);
view_state->vs_flag = 1;
}
- curr_dm_list = save_dm_list;
+ set_curr_dm(save_dm_list);
}
@@ -639,7 +639,7 @@
if (Tcl_CommandComplete(bu_vls_addr(&input_str_prefix))) {
curr_cmd_list = &head_cmd_list;
if (curr_cmd_list->cl_tie)
- curr_dm_list = curr_cmd_list->cl_tie;
+ set_curr_dm(curr_cmd_list->cl_tie);
reset_Tty(fileno(stdin)); /* Backwards compatibility */
(void)signal(SIGINT, SIG_IGN);
@@ -1779,7 +1779,7 @@
if (Tcl_CommandComplete(bu_vls_addr(&input_str_prefix))) {
curr_cmd_list = &head_cmd_list;
if (curr_cmd_list->cl_tie)
- curr_dm_list = curr_cmd_list->cl_tie;
+ set_curr_dm(curr_cmd_list->cl_tie);
if (cmdline(&input_str_prefix, TRUE) == CMD_MORE) {
/* Remove newline */
@@ -1983,7 +1983,7 @@
struct bu_vls vls = BU_VLS_INIT_ZERO;
char save_coords;
- curr_dm_list = edit_rate_mr_dm_list;
+ set_curr_dm(edit_rate_mr_dm_list);
save_coords = mged_variables->mv_coords;
mged_variables->mv_coords = 'm';
@@ -2017,7 +2017,7 @@
struct bu_vls vls = BU_VLS_INIT_ZERO;
char save_coords;
- curr_dm_list = edit_rate_or_dm_list;
+ set_curr_dm(edit_rate_or_dm_list);
save_coords = mged_variables->mv_coords;
mged_variables->mv_coords = 'o';
@@ -2051,7 +2051,7 @@
struct bu_vls vls = BU_VLS_INIT_ZERO;
char save_coords;
- curr_dm_list = edit_rate_vr_dm_list;
+ set_curr_dm(edit_rate_vr_dm_list);
save_coords = mged_variables->mv_coords;
mged_variables->mv_coords = 'v';
@@ -2085,7 +2085,7 @@
char save_coords;
struct bu_vls vls = BU_VLS_INIT_ZERO;
- curr_dm_list = edit_rate_mt_dm_list;
+ set_curr_dm(edit_rate_mt_dm_list);
save_coords = mged_variables->mv_coords;
mged_variables->mv_coords = 'm';
@@ -2118,7 +2118,7 @@
char save_coords;
struct bu_vls vls = BU_VLS_INIT_ZERO;
- curr_dm_list = edit_rate_vt_dm_list;
+ set_curr_dm(edit_rate_vt_dm_list);
save_coords = mged_variables->mv_coords;
mged_variables->mv_coords = 'v';
@@ -2176,7 +2176,7 @@
if (!p->dml_owner)
continue;
- curr_dm_list = p;
+ set_curr_dm(p);
if (view_state->vs_rateflag_model_rotate) {
struct bu_vls vls = BU_VLS_INIT_ZERO;
@@ -2238,7 +2238,7 @@
bu_vls_free(&vls);
}
- curr_dm_list = save_dm_list;
+ set_curr_dm(save_dm_list);
}
return non_blocking;
@@ -2293,7 +2293,7 @@
* if something has changed, then go update the display.
* Otherwise, we are happy with the view we have
*/
- curr_dm_list = p;
+ set_curr_dm(p);
if (mapped && dirty) {
int restore_zbuffer = 0;
@@ -2427,7 +2427,7 @@
}
}
- curr_dm_list = save_dm_list;
+ set_curr_dm(save_dm_list);
bu_vls_free(&overlay_vls);
bu_vls_free(&tmp_vls);
@@ -2463,7 +2463,7 @@
bu_free(p, "release: curr_dm_list");
}
- curr_dm_list = DM_LIST_NULL;
+ set_curr_dm(DM_LIST_NULL);
}
for (BU_LIST_FOR (c, cmd_list, &head_cmd_list.l)) {
Modified: brlcad/trunk/src/mged/mged_dm.h
===================================================================
--- brlcad/trunk/src/mged/mged_dm.h 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/mged_dm.h 2020-06-19 19:04:36 UTC (rev 76165)
@@ -438,6 +438,9 @@
int (*dml_eventHandler)();
};
+/* If we're changing the active DM, use this function so
+ * libged also gets the word. */
+extern void set_curr_dm(struct dm_list *nl);
#define DM_LIST_NULL ((struct dm_list *)NULL)
#define DMP curr_dm_list->dml_dmp
Modified: brlcad/trunk/src/mged/set.c
===================================================================
--- brlcad/trunk/src/mged/set.c 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/set.c 2020-06-19 19:04:36 UTC (rev 76165)
@@ -313,7 +313,7 @@
FOR_ALL_DISPLAYS(dmlp, &head_dm_list.l)
if (dmlp->dml_mged_variables == save_dmlp->dml_mged_variables) {
- curr_dm_list = dmlp;
+ set_curr_dm(dmlp);
if (mged_variables->mv_faceplate && mged_variables->mv_orig_gui) {
if (mged_variables->mv_sliders) /* zero slider variables */
@@ -324,7 +324,7 @@
}
}
- curr_dm_list = save_dmlp;
+ set_curr_dm(save_dmlp);
}
@@ -389,7 +389,7 @@
if (dm_get_displaylist(dlp1->dml_dmp) &&
dlp1->dml_dlist_state->dl_active == 0) {
- curr_dm_list = dlp1;
+ set_curr_dm(dlp1);
createDLists(GEDP->ged_gdp->gd_headDisplay);
dlp1->dml_dlist_state->dl_active = 1;
dlp1->dml_dirty = 1;
@@ -442,7 +442,7 @@
}
/* restore current display manager */
- curr_dm_list = save_dlp;
+ set_curr_dm(save_dlp);
}
Modified: brlcad/trunk/src/mged/share.c
===================================================================
--- brlcad/trunk/src/mged/share.c 2020-06-19 18:30:58 UTC (rev 76164)
+++ brlcad/trunk/src/mged/share.c 2020-06-19 19:04:36 UTC (rev 76165)
@@ -184,11 +184,11 @@
save_dlp = curr_dm_list;
- curr_dm_list = dlp1;
+ set_curr_dm(dlp1);
createDLists(GEDP->ged_gdp->gd_headDisplay);
/* restore */
- curr_dm_list = save_dlp;
+ set_curr_dm(save_dlp);
}
dlp1->dml_dirty = 1;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits