Revision: 76935
http://sourceforge.net/p/brlcad/code/76935
Author: starseeker
Date: 2020-08-25 02:29:42 +0000 (Tue, 25 Aug 2020)
Log Message:
-----------
Switch MGED's display set from using bu_list to using a bu_ptbl.
Modified Paths:
--------------
brlcad/trunk/src/mged/adc.c
brlcad/trunk/src/mged/attach.c
brlcad/trunk/src/mged/axes.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/edsol.c
brlcad/trunk/src/mged/fbserv.c
brlcad/trunk/src/mged/grid.c
brlcad/trunk/src/mged/menu.c
brlcad/trunk/src/mged/mged.c
brlcad/trunk/src/mged/mged_dm.h
brlcad/trunk/src/mged/rect.c
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-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/adc.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -76,11 +76,12 @@
void
adc_set_dirty_flag(void)
{
- struct mged_dm *m_dmp;
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l)
+ for (size_t i = 0; i < BU_PTBL_LEN(&active_dm_set); i++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
i);
if (m_dmp->dm_adc_state == adc_state)
m_dmp->dm_dirty = 1;
+ }
}
@@ -87,17 +88,17 @@
void
adc_set_scroll(void)
{
- struct mged_dm *m_dmp;
struct mged_dm *save_m_dmp;
-
save_m_dmp = mged_curr_dm;
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l)
+ for (size_t i = 0; i < BU_PTBL_LEN(&active_dm_set); i++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
i);
if (m_dmp->dm_adc_state == adc_state) {
set_curr_dm(m_dmp);
set_scroll();
DMP_dirty = 1;
}
+ }
set_curr_dm(save_m_dmp);
}
Modified: brlcad/trunk/src/mged/attach.c
===================================================================
--- brlcad/trunk/src/mged/attach.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/attach.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -53,8 +53,9 @@
#include "./mged_dm.h"
/* Geometry display instances used by MGED */
-struct mged_dm active_dm_set; /* set of active display managers */
+struct bu_ptbl active_dm_set = BU_PTBL_INIT_ZERO; /* set of active display
managers */
struct mged_dm *mged_curr_dm = NULL;
+struct mged_dm *mged_dm_init_state = NULL;
extern struct _color_scheme default_color_scheme;
@@ -67,7 +68,7 @@
void set_curr_dm(struct mged_dm *nc)
{
mged_curr_dm = nc;
- if (nc != DM_LIST_NULL) {
+ if (nc != MGED_DM_NULL) {
GEDP->ged_gvp = nc->dm_view_state->vs_gvp;
GEDP->ged_gvp->gv_grid = *nc->dm_grid_state; /* struct copy */
} else {
@@ -78,7 +79,7 @@
}
int
-mged_dm_init(struct mged_dm *o_dm_list,
+mged_dm_init(struct mged_dm *o_dm,
const char *dm_type,
int argc,
const char *argv[])
@@ -85,7 +86,7 @@
{
struct bu_vls vls = BU_VLS_INIT_ZERO;
- dm_var_init(o_dm_list);
+ dm_var_init(o_dm);
/* register application provided routines */
cmd_hook = dm_commands;
@@ -153,34 +154,36 @@
int
release(char *name, int need_close)
{
- struct mged_dm *save_dm_list = DM_LIST_NULL;
+ struct mged_dm *save_dm_list = MGED_DM_NULL;
struct bu_vls *cpathname = dm_get_pathname(DMP);
+ struct bu_vls *pathname = NULL;
if (name != NULL) {
- struct mged_dm *p;
+ struct mged_dm *p = MGED_DM_NULL;
if (BU_STR_EQUAL("nu", name))
return TCL_OK; /* Ignore */
- FOR_ALL_DISPLAYS(p, &active_dm_set.l) {
- struct bu_vls *pathname = dm_get_pathname(p->dm_dmp);
- if (pathname && bu_vls_strlen(pathname) && !BU_STR_EQUAL(name,
bu_vls_cstr(pathname)))
+ for (size_t i = 0; i < BU_PTBL_LEN(&active_dm_set); i++) {
+ struct mged_dm *m_dmp = (struct mged_dm
*)BU_PTBL_GET(&active_dm_set, i);
+ pathname = dm_get_pathname(m_dmp->dm_dmp);
+ if (!BU_STR_EQUAL(name, bu_vls_cstr(pathname)))
continue;
/* found it */
if (p != mged_curr_dm) {
save_dm_list = mged_curr_dm;
+ p = m_dmp;
set_curr_dm(p);
}
break;
}
- if (p == &active_dm_set) {
- Tcl_AppendResult(INTERP, "release: ", name,
- " not found\n", (char *)NULL);
+ if (p == MGED_DM_NULL) {
+ Tcl_AppendResult(INTERP, "release: ", name, " not found\n", (char
*)NULL);
return TCL_ERROR;
}
- } else if (cpathname && bu_vls_strlen(cpathname) && BU_STR_EQUAL("nu",
bu_vls_cstr(cpathname)))
+ } else if (BU_STR_EQUAL("nu", bu_vls_cstr(cpathname)))
return TCL_OK; /* Ignore */
if (fbp) {
@@ -199,10 +202,9 @@
* This saves the state of the resources to the "nu" display
* manager, which is beneficial only if closing the last display
* manager. So when another display manager is opened, it looks
- * like the last one the user had open. This depends on "nu"
- * always being last in the list.
+ * like the last one the user had open.
*/
- usurp_all_resources(BU_LIST_LAST(mged_dm, &active_dm_set.l), mged_curr_dm);
+ usurp_all_resources(mged_dm_init_state, mged_curr_dm);
/* If this display is being referenced by a command window, then
* remove the reference.
@@ -214,15 +216,19 @@
dm_close(DMP);
RT_FREE_VLIST(&mged_curr_dm->dm_p_vlist);
- BU_LIST_DEQUEUE(&mged_curr_dm->l);
+ bu_ptbl_rm(&active_dm_set, (long *)mged_curr_dm);
mged_slider_free_vls(mged_curr_dm);
bu_free((void *)mged_curr_dm, "release: mged_curr_dm");
- if (save_dm_list != DM_LIST_NULL)
+ if (save_dm_list != MGED_DM_NULL)
set_curr_dm(save_dm_list);
- else
- set_curr_dm((struct mged_dm *)active_dm_set.l.forw);
-
+ else {
+ if (BU_PTBL_LEN(&active_dm_set) > 0) {
+ set_curr_dm((struct mged_dm *)BU_PTBL_GET(&active_dm_set, 0));
+ } else {
+ set_curr_dm(MGED_DM_NULL);
+ }
+ }
return TCL_OK;
}
@@ -384,13 +390,13 @@
{
int opt_argc;
char **opt_argv;
- struct mged_dm *o_dm_list;
+ struct mged_dm *o_dm;
if (!wp_name) {
return TCL_ERROR;
}
- o_dm_list = mged_curr_dm;
+ o_dm = mged_curr_dm;
BU_ALLOC(mged_curr_dm, struct mged_dm);
/* initialize predictor stuff */
@@ -414,7 +420,7 @@
if (dname && bu_vls_strlen(dname)) {
if (gui_setup(bu_vls_cstr(dname)) == TCL_ERROR) {
bu_free((void *)mged_curr_dm, "f_attach: dm_list");
- set_curr_dm(o_dm_list);
+ set_curr_dm(o_dm);
bu_vls_free(&tmp_vls);
dm_put(tmp_dmp);
return TCL_ERROR;
@@ -421,7 +427,7 @@
}
} else if (gui_setup((char *)NULL) == TCL_ERROR) {
bu_free((void *)mged_curr_dm, "f_attach: dm_list");
- set_curr_dm(o_dm_list);
+ set_curr_dm(o_dm);
bu_vls_free(&tmp_vls);
dm_put(tmp_dmp);
return TCL_ERROR;
@@ -431,13 +437,13 @@
dm_put(tmp_dmp);
}
- BU_LIST_APPEND(&active_dm_set.l, &mged_curr_dm->l);
+ bu_ptbl_ins(&active_dm_set, (long *)mged_curr_dm);
if (!wp_name) {
return TCL_ERROR;
}
- if (mged_dm_init(o_dm_list, wp_name, argc, argv) == TCL_ERROR) {
+ if (mged_dm_init(o_dm, wp_name, argc, argv) == TCL_ERROR) {
goto Bad;
}
@@ -614,27 +620,27 @@
int
is_dm_null(void)
{
- return mged_curr_dm == &active_dm_set;
+ return mged_curr_dm == mged_dm_init_state;
}
void
-dm_var_init(struct mged_dm *initial_dm_list)
+dm_var_init(struct mged_dm *target_dm)
{
BU_ALLOC(adc_state, struct _adc_state);
- *adc_state = *initial_dm_list->dm_adc_state; /* struct copy
*/
+ *adc_state = *target_dm->dm_adc_state; /* struct copy */
adc_state->adc_rc = 1;
BU_ALLOC(menu_state, struct _menu_state);
- *menu_state = *initial_dm_list->dm_menu_state; /* struct copy
*/
+ *menu_state = *target_dm->dm_menu_state; /* struct copy */
menu_state->ms_rc = 1;
BU_ALLOC(rubber_band, struct _rubber_band);
- *rubber_band = *initial_dm_list->dm_rubber_band; /* struct copy
*/
+ *rubber_band = *target_dm->dm_rubber_band; /* struct copy */
rubber_band->rb_rc = 1;
BU_ALLOC(mged_variables, struct _mged_variables);
- *mged_variables = *initial_dm_list->dm_mged_variables; /* struct copy
*/
+ *mged_variables = *target_dm->dm_mged_variables; /* struct copy */
mged_variables->mv_rc = 1;
mged_variables->mv_dlist = mged_default_dlist;
mged_variables->mv_listen = 0;
@@ -644,16 +650,18 @@
BU_ALLOC(color_scheme, struct _color_scheme);
/* initialize using the nu display manager */
- *color_scheme = *BU_LIST_LAST(mged_dm, &active_dm_set.l)->dm_color_scheme;
+ if (mged_dm_init_state && mged_dm_init_state->dm_color_scheme) {
+ *color_scheme = *mged_dm_init_state->dm_color_scheme;
+ }
color_scheme->cs_rc = 1;
BU_ALLOC(grid_state, struct bview_grid_state);
- *grid_state = *initial_dm_list->dm_grid_state; /* struct copy
*/
+ *grid_state = *target_dm->dm_grid_state; /* struct copy */
grid_state->rc = 1;
BU_ALLOC(axes_state, struct _axes_state);
- *axes_state = *initial_dm_list->dm_axes_state; /* struct copy
*/
+ *axes_state = *target_dm->dm_axes_state; /* struct copy */
axes_state->ax_rc = 1;
BU_ALLOC(dlist_state, struct _dlist_state);
@@ -660,12 +668,12 @@
dlist_state->dl_rc = 1;
BU_ALLOC(view_state, struct _view_state);
- *view_state = *initial_dm_list->dm_view_state; /*
struct copy */
+ *view_state = *target_dm->dm_view_state; /* struct copy
*/
BU_ALLOC(view_state->vs_gvp, struct bview);
BU_GET(view_state->vs_gvp->callbacks, struct bu_ptbl);
bu_ptbl_init(view_state->vs_gvp->callbacks, 8, "bview callbacks");
- *view_state->vs_gvp = *initial_dm_list->dm_view_state->vs_gvp; /*
struct copy */
+ *view_state->vs_gvp = *target_dm->dm_view_state->vs_gvp; /* struct copy
*/
view_state->vs_gvp->gv_clientData = (void *)view_state;
view_state->vs_gvp->gv_adaptive_plot = 0;
view_state->vs_gvp->gv_redraw_on_zoom = 0;
@@ -703,8 +711,6 @@
int
f_get_dm_list(ClientData UNUSED(clientData), Tcl_Interp *interpreter, int
argc, const char *argv[])
{
- struct mged_dm *dlp;
-
if (argc != 1 || !argv) {
struct bu_vls vls = BU_VLS_INIT_ZERO;
@@ -715,7 +721,8 @@
return TCL_ERROR;
}
- FOR_ALL_DISPLAYS(dlp, &active_dm_set.l) {
+ for (size_t i = 0; i < BU_PTBL_LEN(&active_dm_set); i++) {
+ struct mged_dm *dlp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, i);
struct bu_vls *pn = dm_get_pathname(dlp->dm_dmp);
if (pn && bu_vls_strlen(pn))
Tcl_AppendElement(interpreter, bu_vls_cstr(pn));
Modified: brlcad/trunk/src/mged/axes.c
===================================================================
--- brlcad/trunk/src/mged/axes.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/axes.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -85,11 +85,11 @@
const char *UNUSED(value),
void *UNUSED(data))
{
- struct mged_dm *m_dmp;
-
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l)
+ for (size_t i = 0; i < BU_PTBL_LEN(&active_dm_set); i++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
i);
if (m_dmp->dm_axes_state == axes_state)
m_dmp->dm_dirty = 1;
+ }
}
Modified: brlcad/trunk/src/mged/buttons.c
===================================================================
--- brlcad/trunk/src/mged/buttons.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/buttons.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -704,8 +704,6 @@
int
be_accept()
{
- struct mged_dm *m_dmp;
-
if (STATE == ST_S_EDIT) {
/* Accept a solid edit */
edsol = 0;
@@ -740,9 +738,11 @@
return TCL_OK;
}
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l)
+ for (size_t i = 0; i < BU_PTBL_LEN(&active_dm_set); i++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
i);
if (m_dmp->dm_mged_variables->mv_transform == 'e')
m_dmp->dm_mged_variables->mv_transform = 'v';
+ }
{
struct bu_vls vls = BU_VLS_INIT_ZERO;
@@ -758,8 +758,6 @@
int
be_reject()
{
- struct mged_dm *m_dmp;
-
update_views = 1;
/* Reject edit */
@@ -804,9 +802,11 @@
mged_color_soltab();
(void)chg_state(STATE, ST_VIEW, "Edit Reject");
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l)
+ for (size_t i = 0; i < BU_PTBL_LEN(&active_dm_set); i++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
i);
if (m_dmp->dm_mged_variables->mv_transform == 'e')
m_dmp->dm_mged_variables->mv_transform = 'v';
+ }
{
struct bu_vls vls = BU_VLS_INIT_ZERO;
@@ -939,7 +939,6 @@
int
chg_state(int from, int to, char *str)
{
- struct mged_dm *p;
struct mged_dm *save_dm_list;
struct bu_vls vls = BU_VLS_INIT_ZERO;
@@ -953,7 +952,8 @@
stateChange(from, to);
save_dm_list = mged_curr_dm;
- FOR_ALL_DISPLAYS(p, &active_dm_set.l) {
+ for (size_t i = 0; i < BU_PTBL_LEN(&active_dm_set); i++) {
+ struct mged_dm *p = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, i);
set_curr_dm(p);
new_mats();
Modified: brlcad/trunk/src/mged/chgview.c
===================================================================
--- brlcad/trunk/src/mged/chgview.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/chgview.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -246,7 +246,6 @@
{
struct display_list *gdlp;
struct display_list *next_gdlp;
- struct mged_dm *m_dmp;
struct mged_dm *save_m_dmp;
struct cmd_list *save_cmd_list;
int ret;
@@ -444,7 +443,8 @@
save_m_dmp = mged_curr_dm;
save_cmd_list = curr_cmd_list;
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
int non_empty = 0; /* start out empty */
set_curr_dm(m_dmp);
@@ -570,7 +570,6 @@
int
cmd_autoview(ClientData UNUSED(clientData), Tcl_Interp *interp, int argc,
const char *argv[])
{
- struct mged_dm *m_dmp;
struct mged_dm *save_m_dmp;
struct cmd_list *save_cmd_list;
@@ -591,7 +590,8 @@
save_m_dmp = mged_curr_dm;
save_cmd_list = curr_cmd_list;
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
struct view_ring *vrp;
set_curr_dm(m_dmp);
@@ -2815,7 +2815,6 @@
f_svbase(ClientData UNUSED(clientData), Tcl_Interp *interp, int argc, const
char *argv[])
{
int status;
- struct mged_dm *m_dmp;
if (argc < 1 || 1 < argc) {
struct bu_vls vls = BU_VLS_INIT_ZERO;
@@ -2833,7 +2832,8 @@
status = mged_svbase();
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
/* if sharing view while faceplate and original gui (i.e. button menu,
sliders) are on */
if (m_dmp->dm_view_state == view_state &&
m_dmp->dm_mged_variables->mv_faceplate &&
Modified: brlcad/trunk/src/mged/cmd.c
===================================================================
--- brlcad/trunk/src/mged/cmd.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/cmd.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -1298,7 +1298,7 @@
{
int uflag = 0; /* untie flag */
struct cmd_list *clp;
- struct mged_dm *dlp;
+ struct mged_dm *dlp = MGED_DM_NULL;
struct bu_vls vls = BU_VLS_INIT_ZERO;
if (argc < 1 || 3 < argc) {
@@ -1393,13 +1393,16 @@
else
bu_vls_strcpy(&vls, argv[2]);
- FOR_ALL_DISPLAYS(dlp, &active_dm_set.l) {
- struct bu_vls *pn = dm_get_pathname(dlp->dm_dmp);
- if (pn && !bu_vls_strcmp(&vls, pn))
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
+ struct bu_vls *pn = dm_get_pathname(m_dmp->dm_dmp);
+ if (pn && !bu_vls_strcmp(&vls, pn)) {
+ dlp = m_dmp;
break;
+ }
}
- if (dlp == &active_dm_set) {
+ if (dlp == MGED_DM_NULL) {
Tcl_AppendResult(interpreter, "f_tie: unrecognized path name - ",
bu_vls_addr(&vls), "\n", (char *)NULL);
bu_vls_free(&vls);
@@ -1476,8 +1479,6 @@
int
f_winset(ClientData UNUSED(clientData), Tcl_Interp *interpreter, int argc,
const char *argv[])
{
- struct mged_dm *p;
-
if (argc < 1 || 2 < argc) {
struct bu_vls vls = BU_VLS_INIT_ZERO;
@@ -1497,7 +1498,8 @@
}
/* change primary focus to window argv[1] */
- FOR_ALL_DISPLAYS(p, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *p = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
struct bu_vls *pn = dm_get_pathname(p->dm_dmp);
if (pn && BU_STR_EQUAL(argv[1], bu_vls_cstr(pn))) {
set_curr_dm(p);
@@ -1830,10 +1832,10 @@
/* update and resize the views */
struct mged_dm *save_m_dmp = mged_curr_dm;
struct cmd_list *save_cmd_list = curr_cmd_list;
- struct mged_dm *m_dmp;
struct display_list *gdlp;
struct display_list *next_gdlp;
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
int non_empty = 0; /* start out empty */
set_curr_dm(m_dmp);
Modified: brlcad/trunk/src/mged/color_scheme.c
===================================================================
--- brlcad/trunk/src/mged/color_scheme.c 2020-08-25 01:51:25 UTC (rev
76934)
+++ brlcad/trunk/src/mged/color_scheme.c 2020-08-25 02:29:42 UTC (rev
76935)
@@ -243,11 +243,11 @@
const char *UNUSED(value),
void *UNUSED(data))
{
- struct mged_dm *m_dmp;
-
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l)
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
if (m_dmp->dm_color_scheme == color_scheme)
m_dmp->dm_dirty = 1;
+ }
}
@@ -286,7 +286,6 @@
const char *UNUSED(value),
void *UNUSED(data))
{
- struct mged_dm *m_dmp;
struct mged_dm *save_curr_m_dmp = mged_curr_dm;
struct bu_vls vls = BU_VLS_INIT_ZERO;
@@ -302,7 +301,8 @@
// where we act on all dm instances. set_curr_dm
// should probably be replaced with get_next_dm
struct bview *cbv = GEDP->ged_gvp;
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
if (m_dmp->dm_color_scheme == color_scheme) {
m_dmp->dm_dirty = 1;
set_curr_dm(m_dmp);
Modified: brlcad/trunk/src/mged/doevent.c
===================================================================
--- brlcad/trunk/src/mged/doevent.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/doevent.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -125,10 +125,10 @@
return TCL_OK;
save_dm_list = mged_curr_dm;
- GET_DM_LIST(mged_curr_dm, (unsigned long)eventPtr->xany.window);
+ GET_MGED_DM(mged_curr_dm, (unsigned long)eventPtr->xany.window);
/* it's an event for a window that I'm not handling */
- if (mged_curr_dm == DM_LIST_NULL) {
+ if (mged_curr_dm == MGED_DM_NULL) {
set_curr_dm(save_dm_list);
return TCL_OK;
}
Modified: brlcad/trunk/src/mged/dozoom.c
===================================================================
--- brlcad/trunk/src/mged/dozoom.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/dozoom.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -249,12 +249,12 @@
void
createDListSolid(struct solid *sp)
{
- struct mged_dm *dlp;
struct mged_dm *save_dlp;
save_dlp = mged_curr_dm;
- FOR_ALL_DISPLAYS(dlp, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *dlp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
if (dlp->dm_mapped &&
dm_get_displaylist(dlp->dm_dmp) &&
dlp->dm_mged_variables->mv_dlist) {
@@ -305,9 +305,8 @@
void
freeDListsAll(unsigned int dlist, int range)
{
- struct mged_dm *dlp;
-
- FOR_ALL_DISPLAYS(dlp, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *dlp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
if (dm_get_displaylist(dlp->dm_dmp) &&
dlp->dm_mged_variables->mv_dlist) {
(void)dm_make_current(DMP);
Modified: brlcad/trunk/src/mged/edsol.c
===================================================================
--- brlcad/trunk/src/mged/edsol.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/edsol.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -750,7 +750,6 @@
set e_axes_pos and curr_e_axes_pos */
{
int i;
- struct mged_dm *m_dmp;
const short earb8[12][18] = earb8_edit_array;
const short earb7[12][18] = earb7_edit_array;
const short earb6[10][18] = earb6_edit_array;
@@ -920,8 +919,10 @@
MAT_IDN(acc_rot_sol);
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l)
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm
*)BU_PTBL_GET(&active_dm_set, di);
m_dmp->dm_mged_variables->mv_transform = 'e';
+ }
}
}
Modified: brlcad/trunk/src/mged/fbserv.c
===================================================================
--- brlcad/trunk/src/mged/fbserv.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/fbserv.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -120,13 +120,16 @@
int i;
int fd = (int)((long)clientData & 0xFFFF); /* fd's will be small */
int npp; /* number of processed packages */
- struct mged_dm *dlp;
+ struct mged_dm *dlp = MGED_DM_NULL;
struct mged_dm *scdlp; /* save current dm_list pointer */
- FOR_ALL_DISPLAYS(dlp, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
for (i = MAX_CLIENTS-1; i >= 0; i--)
- if (fd == dlp->dm_clients[i].c_fd)
+ if (fd == m_dmp->dm_clients[i].c_fd) {
+ dlp = m_dmp;
goto found;
+ }
}
return;
@@ -388,9 +391,13 @@
struct mged_dm *dlp;
struct mged_dm *scdlp; /* save current dm_list pointer */
- FOR_ALL_DISPLAYS(dlp, &active_dm_set.l)
- if (fd == dlp->dm_netfd)
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
+ if (fd == m_dmp->dm_netfd) {
+ dlp = m_dmp;
goto found;
+ }
+ }
return;
Modified: brlcad/trunk/src/mged/grid.c
===================================================================
--- brlcad/trunk/src/mged/grid.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/grid.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -77,11 +77,12 @@
const char *UNUSED(value),
void *UNUSED(data))
{
- struct mged_dm *m_dmp;
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l)
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
if (m_dmp->dm_grid_state == grid_state)
m_dmp->dm_dirty = 1;
+ }
}
@@ -92,8 +93,6 @@
const char *value,
void *data)
{
- struct mged_dm *dlp;
-
if (DBIP == DBI_NULL) {
grid_state->draw = 0;
return;
@@ -107,9 +106,11 @@
grid_state->res_h = res;
grid_state->res_v = res;
- FOR_ALL_DISPLAYS(dlp, &active_dm_set.l)
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *dlp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
if (dlp->dm_grid_state == grid_state)
dlp->dm_grid_auto_size = 0;
+ }
}
}
@@ -121,14 +122,16 @@
const char *value,
void *data)
{
- struct mged_dm *dlp;
-
grid_set_dirty_flag(sdp, name, base, value, data);
- if (grid_auto_size)
- FOR_ALL_DISPLAYS(dlp, &active_dm_set.l)
+ if (!grid_auto_size)
+ return;
+
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *dlp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
if (dlp->dm_grid_state == grid_state)
dlp->dm_grid_auto_size = 0;
+ }
}
@@ -420,11 +423,11 @@
void
update_grids(fastf_t sf)
{
- struct mged_dm *dlp;
struct bu_vls save_result = BU_VLS_INIT_ZERO;
struct bu_vls cmd = BU_VLS_INIT_ZERO;
- FOR_ALL_DISPLAYS(dlp, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *dlp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
dlp->dm_grid_state->res_h *= sf;
dlp->dm_grid_state->res_v *= sf;
VSCALE(dlp->dm_grid_state->anchor, dlp->dm_grid_state->anchor, sf);
Modified: brlcad/trunk/src/mged/menu.c
===================================================================
--- brlcad/trunk/src/mged/menu.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/menu.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -103,8 +103,6 @@
void
mmenu_set(int index, struct menu_item *value)
{
- struct mged_dm *dlp;
-
Tcl_DString ds_menu;
struct bu_vls menu_string = BU_VLS_INIT_ZERO;
@@ -119,7 +117,8 @@
Tcl_DStringFree(&ds_menu);
bu_vls_free(&menu_string);
- FOR_ALL_DISPLAYS(dlp, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *dlp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
if (menu_state == dlp->dm_menu_state &&
dlp->dm_mged_variables->mv_faceplate &&
dlp->dm_mged_variables->mv_orig_gui)
@@ -131,13 +130,13 @@
void
mmenu_set_all(int index, struct menu_item *value)
{
- struct mged_dm *p;
struct cmd_list *save_cmd_list;
struct mged_dm *save_dm_list;
save_cmd_list = curr_cmd_list;
save_dm_list = mged_curr_dm;
- FOR_ALL_DISPLAYS(p, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *p = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
if (p->dm_tie)
curr_cmd_list = p->dm_tie;
Modified: brlcad/trunk/src/mged/mged.c
===================================================================
--- brlcad/trunk/src/mged/mged.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/mged.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -343,11 +343,11 @@
void
new_edit_mats(void)
{
- struct mged_dm *p;
struct mged_dm *save_dm_list;
save_dm_list = mged_curr_dm;
- FOR_ALL_DISPLAYS(p, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *p = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
if (!p->dm_owner)
continue;
@@ -1261,11 +1261,10 @@
bu_vls_strcpy(&head_cmd_list.cl_name, "mged");
curr_cmd_list = &head_cmd_list;
- memset((void *)&active_dm_set, 0, sizeof(struct mged_dm));
- BU_LIST_INIT(&active_dm_set.l);
-
BU_ALLOC(mged_curr_dm, struct mged_dm);
- BU_LIST_APPEND(&active_dm_set.l, &mged_curr_dm->l);
+ bu_ptbl_init(&active_dm_set, 8, "dm set");
+ bu_ptbl_ins(&active_dm_set, (long *)mged_curr_dm);
+ mged_dm_init_state = mged_curr_dm;
netfd = -1;
/* initialize predictor stuff */
@@ -1954,7 +1953,6 @@
int
event_check(int non_blocking)
{
- struct mged_dm *p;
struct mged_dm *save_dm_list;
int save_edflag;
int handled = 0;
@@ -2183,7 +2181,8 @@
edobj = save_edflag;
}
- FOR_ALL_DISPLAYS(p, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *p = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
if (!p->dm_owner)
continue;
@@ -2271,7 +2270,6 @@
void
refresh(void)
{
- struct mged_dm *p;
struct mged_dm *save_dm_list;
struct bu_vls overlay_vls = BU_VLS_INIT_ZERO;
struct bu_vls tmp_vls = BU_VLS_INIT_ZERO;
@@ -2279,7 +2277,8 @@
int64_t elapsed_time, start_time = bu_gettime();
int do_time = 0;
- FOR_ALL_DISPLAYS(p, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *p = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
if (!p->dm_view_state)
continue;
if (update_views || p->dm_view_state->vs_flag)
@@ -2290,7 +2289,8 @@
* This needs to be done separately because dm_view_state may be
* shared.
*/
- FOR_ALL_DISPLAYS(p, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *p = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
if (!p->dm_view_state)
continue;
p->dm_view_state->vs_flag = 0;
@@ -2299,7 +2299,8 @@
update_views = 0;
save_dm_list = mged_curr_dm;
- FOR_ALL_DISPLAYS(p, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *p = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
/*
* if something has changed, then go update the display.
* Otherwise, we are happy with the view we have
@@ -2454,7 +2455,6 @@
mged_finish(int exitcode)
{
char place[64];
- struct mged_dm *p;
struct cmd_list *c;
int ret;
@@ -2461,11 +2461,10 @@
(void)sprintf(place, "exit_status=%d", exitcode);
/* Release all displays */
- while (BU_LIST_WHILE(p, mged_dm, &(active_dm_set.l))) {
- if (!p)
- bu_bomb("dm list entry is null? aborting!\n");
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *p = (struct mged_dm *)BU_PTBL_GET(&active_dm_set, di);
- BU_LIST_DEQUEUE(&(p->l));
+ bu_ptbl_rm(&active_dm_set, (long *)p);
if (p && p->dm_dmp) {
dm_close(p->dm_dmp);
@@ -2474,8 +2473,9 @@
bu_free(p, "release: mged_curr_dm");
}
- set_curr_dm(DM_LIST_NULL);
+ set_curr_dm(MGED_DM_NULL);
}
+ bu_ptbl_free(&active_dm_set);
for (BU_LIST_FOR (c, cmd_list, &head_cmd_list.l)) {
bu_vls_free(&c->cl_name);
Modified: brlcad/trunk/src/mged/mged_dm.h
===================================================================
--- brlcad/trunk/src/mged/mged_dm.h 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/mged_dm.h 2020-08-25 02:29:42 UTC (rev 76935)
@@ -378,7 +378,6 @@
struct mged_dm {
- struct bu_list l;
struct dm *dm_dmp;
struct fb *dm_fbp;
int dm_netfd; /* socket used
to listen for connections */
@@ -441,7 +440,7 @@
* libged also gets the word. */
extern void set_curr_dm(struct mged_dm *nl);
-#define DM_LIST_NULL ((struct mged_dm *)NULL)
+#define MGED_DM_NULL ((struct mged_dm *)NULL)
#define DMP mged_curr_dm->dm_dmp
#define DMP_dirty mged_curr_dm->dm_dirty
#define fbp mged_curr_dm->dm_fbp
@@ -542,28 +541,25 @@
#define BV_MAXFUNC 64 /* largest code used */
-#define FOR_ALL_DISPLAYS(p, hp) \
- for (BU_LIST_FOR(p, mged_dm, hp))
+#define GET_MGED_DM(p, id) { \
+ \
+ (p) = MGED_DM_NULL; \
+ for (size_t dm_ind = 0; dm_ind < BU_PTBL_LEN(&active_dm_set); dm_ind++) { \
+ struct mged_dm *tp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
dm_ind); \
+ if ((id) == dm_get_id(tp->dm_dmp)) { \
+ (p) = tp; \
+ break; \
+ } \
+ } \
+ \
+}
-#define GET_DM_LIST(p, id) { \
- struct mged_dm *tp; \
-\
- FOR_ALL_DISPLAYS(tp, &active_dm_set.l) { \
- if ((id) == dm_get_id(tp->dm_dmp)) { \
- (p) = tp; \
- break; \
- } \
- } \
-\
- if (BU_LIST_IS_HEAD(tp, &active_dm_set.l)) \
- (p) = DM_LIST_NULL; \
- }
-
extern double frametime; /* defined in mged.c */
extern int dm_pipe[]; /* defined in mged.c */
extern int update_views; /* defined in mged.c */
-extern struct mged_dm active_dm_set; /* defined in attach.c */
+extern struct bu_ptbl active_dm_set; /* defined in attach.c */
extern struct mged_dm *mged_curr_dm; /* defined in attach.c */
+extern struct mged_dm *mged_dm_init_state;
/* defined in doevent.c */
#ifdef HAVE_X11_TYPES
@@ -573,7 +569,7 @@
#endif
/* defined in attach.c */
-extern void dm_var_init(struct mged_dm *initial_dm_list);
+extern void dm_var_init(struct mged_dm *target_dm);
/* defined in dm-generic.c */
extern int common_dm(int argc, const char *argv[]);
Modified: brlcad/trunk/src/mged/rect.c
===================================================================
--- brlcad/trunk/src/mged/rect.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/rect.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -71,11 +71,11 @@
const char *UNUSED(value),
void *UNUSED(data))
{
- struct mged_dm *m_dmp;
-
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l)
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
if (m_dmp->dm_rubber_band == rubber_band)
m_dmp->dm_dirty = 1;
+ }
}
Modified: brlcad/trunk/src/mged/set.c
===================================================================
--- brlcad/trunk/src/mged/set.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/set.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -138,11 +138,11 @@
const char *UNUSED(value),
void *UNUSED(data))
{
- struct mged_dm *m_dmp;
-
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l)
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
if (m_dmp->dm_mged_variables == mged_variables)
m_dmp->dm_dirty = 1;
+ }
}
@@ -306,12 +306,12 @@
const char *UNUSED(value),
void *UNUSED(data))
{
- struct mged_dm *m_dmp;
struct mged_dm *save_m_dmp;
save_m_dmp = mged_curr_dm;
- FOR_ALL_DISPLAYS(m_dmp, &active_dm_set.l)
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
if (m_dmp->dm_mged_variables == save_m_dmp->dm_mged_variables) {
set_curr_dm(m_dmp);
@@ -323,6 +323,7 @@
DMP_dirty = 1;
}
}
+ }
set_curr_dm(save_m_dmp);
}
@@ -371,8 +372,6 @@
const char *UNUSED(value),
void *UNUSED(data))
{
- struct mged_dm *dlp1;
- struct mged_dm *dlp2;
struct mged_dm *save_dlp;
/* save current display manager */
@@ -382,7 +381,10 @@
/* create display lists */
/* for each display manager dlp1 that shares its dm_mged_variables with
save_dlp */
- FOR_ALL_DISPLAYS(dlp1, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+
+ struct mged_dm *dlp1 = (struct mged_dm
*)BU_PTBL_GET(&active_dm_set, di);
+
if (dlp1->dm_mged_variables != save_dlp->dm_mged_variables) {
continue;
}
@@ -401,24 +403,32 @@
*/
/* for each display manager dlp1 that shares its dm_mged_variables with
save_dlp */
- FOR_ALL_DISPLAYS(dlp1, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+
+ struct mged_dm *dlp1 = (struct mged_dm
*)BU_PTBL_GET(&active_dm_set, di);
+
if (dlp1->dm_mged_variables != save_dlp->dm_mged_variables)
continue;
if (dlp1->dm_dlist_state->dl_active) {
/* for each display manager dlp2 that is sharing display lists
with dlp1 */
- FOR_ALL_DISPLAYS(dlp2, &active_dm_set.l) {
- if (dlp2->dm_dlist_state != dlp1->dm_dlist_state) {
+ struct mged_dm *dlp2 = MGED_DM_NULL;
+ for (size_t dj = 0; dj < BU_PTBL_LEN(&active_dm_set); dj++) {
+ struct mged_dm *m_dmp = (struct mged_dm
*)BU_PTBL_GET(&active_dm_set, di);
+
+ if (m_dmp->dm_dlist_state != dlp1->dm_dlist_state) {
continue;
}
/* found a dlp2 that is actively using dlp1's display lists
*/
- if (dlp2->dm_mged_variables->mv_dlist)
+ if (dlp2->dm_mged_variables->mv_dlist) {
+ dlp2 = m_dmp;
break;
+ }
}
/* these display lists are not being used, so free them */
- if (BU_LIST_IS_HEAD(dlp2, &active_dm_set.l)) {
+ if (dlp2 == MGED_DM_NULL) {
struct display_list *gdlp;
struct display_list *next_gdlp;
Modified: brlcad/trunk/src/mged/share.c
===================================================================
--- brlcad/trunk/src/mged/share.c 2020-08-25 01:51:25 UTC (rev 76934)
+++ brlcad/trunk/src/mged/share.c 2020-08-25 02:29:42 UTC (rev 76935)
@@ -95,8 +95,8 @@
f_share(ClientData UNUSED(clientData), Tcl_Interp *interpreter, int argc,
const char *argv[])
{
int uflag = 0; /* unshare flag */
- struct mged_dm *dlp1 = (struct mged_dm *)NULL;
- struct mged_dm *dlp2 = (struct mged_dm *)NULL;
+ struct mged_dm *dlp1 = MGED_DM_NULL;
+ struct mged_dm *dlp2 = MGED_DM_NULL;
struct bu_vls vls = BU_VLS_INIT_ZERO;
if (argc != 4) {
@@ -113,27 +113,33 @@
++argv;
}
- FOR_ALL_DISPLAYS(dlp1, &active_dm_set.l)
- if (dm_get_pathname(dlp1->dm_dmp) && BU_STR_EQUAL(argv[2],
bu_vls_addr(dm_get_pathname(dlp1->dm_dmp))))
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
+ struct bu_vls *pname = dm_get_pathname(m_dmp->dm_dmp);
+ if (BU_STR_EQUAL(argv[2], bu_vls_cstr(pname))) {
+ dlp1 = m_dmp;
break;
+ }
+ }
- if (dlp1 == &active_dm_set) {
- Tcl_AppendResult(interpreter, "share: unrecognized path name - ",
- argv[2], "\n", (char *)NULL);
-
+ if (dlp1 == MGED_DM_NULL) {
+ Tcl_AppendResult(interpreter, "share: unrecognized path name - ",
argv[2], "\n", (char *)NULL);
bu_vls_free(&vls);
return TCL_ERROR;
}
if (!uflag) {
- FOR_ALL_DISPLAYS(dlp2, &active_dm_set.l)
- if (dm_get_pathname(dlp2->dm_dmp) && BU_STR_EQUAL(argv[3],
bu_vls_addr(dm_get_pathname(dlp2->dm_dmp))))
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *m_dmp = (struct mged_dm
*)BU_PTBL_GET(&active_dm_set, di);
+ struct bu_vls *pname = dm_get_pathname(m_dmp->dm_dmp);
+ if (BU_STR_EQUAL(argv[3], bu_vls_cstr(pname))) {
+ dlp2 = m_dmp;
break;
+ }
+ }
- if (dlp2 == &active_dm_set) {
- Tcl_AppendResult(interpreter, "share: unrecognized path name - ",
- argv[3], "\n", (char *)NULL);
-
+ if (dlp2 == MGED_DM_NULL) {
+ Tcl_AppendResult(interpreter, "share: unrecognized path name - ",
argv[3], "\n", (char *)NULL);
bu_vls_free(&vls);
return TCL_ERROR;
}
@@ -429,12 +435,11 @@
void
share_dlist(struct mged_dm *dlp2)
{
- struct mged_dm *dlp1;
-
if (!dm_get_displaylist(dlp2->dm_dmp))
return;
- FOR_ALL_DISPLAYS(dlp1, &active_dm_set.l) {
+ for (size_t di = 0; di < BU_PTBL_LEN(&active_dm_set); di++) {
+ struct mged_dm *dlp1 = (struct mged_dm *)BU_PTBL_GET(&active_dm_set,
di);
if (dlp1 != dlp2 &&
dm_get_type(dlp1->dm_dmp) == dm_get_type(dlp2->dm_dmp) &&
dm_get_dname(dlp1->dm_dmp) && dm_get_dname(dlp2->dm_dmp) &&
!bu_vls_strcmp(dm_get_dname(dlp1->dm_dmp),
dm_get_dname(dlp2->dm_dmp))) {
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