Revision: 35243 http://brlcad.svn.sourceforge.net/brlcad/?rev=35243&view=rev Author: bob1961 Date: 2009-07-21 20:33:06 +0000 (Tue, 21 Jul 2009)
Log Message: ----------- Modified ged_drawtrees to not add objects to the display list more than once. Modified Paths: -------------- brlcad/trunk/src/libged/draw.c Modified: brlcad/trunk/src/libged/draw.c =================================================================== --- brlcad/trunk/src/libged/draw.c 2009-07-21 18:05:50 UTC (rev 35242) +++ brlcad/trunk/src/libged/draw.c 2009-07-21 20:33:06 UTC (rev 35243) @@ -45,7 +45,9 @@ struct rt_db_internal *ip, genptr_t client_data); +static int ged_drawtrees_depth = 0; + /** * Compute the min, max, and center points of the solid. Also finds * s_vlen. @@ -554,6 +556,7 @@ if (argc <= 0) return(-1); /* FAIL */ + ++ged_drawtrees_depth; av[1] = (char *)0; /* options are already parsed into _dgcdp */ @@ -680,6 +683,7 @@ { bu_vls_printf(&gedp->ged_result_str, "unrecognized option - %c\n", c); bu_free((genptr_t)dgcdp, "ged_drawtrees: dgcdp"); + --ged_drawtrees_depth; return GED_ERROR; } } @@ -709,6 +713,7 @@ default: bu_vls_printf(&gedp->ged_result_str, "ERROR, bad kind\n"); bu_free((genptr_t)dgcdp, "ged_drawtrees: dgcdp"); + --ged_drawtrees_depth; return(-1); case 1: /* Wireframes */ { @@ -735,7 +740,8 @@ } for (i = 0; i < argc; ++i) { - dgcdp->gdlp = ged_addToDisplay(gedp, argv[i]); + if (ged_drawtrees_depth == 1) + dgcdp->gdlp = ged_addToDisplay(gedp, argv[i]); if (dgcdp->gdlp == GED_DISPLAY_LIST_NULL) continue; @@ -756,6 +762,7 @@ case 2: /* Big-E */ bu_vls_printf(&gedp->ged_result_str, "drawtrees: can't do big-E here\n"); bu_free((genptr_t)dgcdp, "ged_drawtrees: dgcdp"); + --ged_drawtrees_depth; return (-1); case 3: { @@ -768,7 +775,8 @@ } for (i = 0; i < argc; ++i) { - dgcdp->gdlp = ged_addToDisplay(gedp, argv[i]); + if (ged_drawtrees_depth == 1) + dgcdp->gdlp = ged_addToDisplay(gedp, argv[i]); if (dgcdp->gdlp == GED_DISPLAY_LIST_NULL) continue; @@ -796,6 +804,9 @@ break; } } + + --ged_drawtrees_depth; + if (dgcdp->fastpath_count) { bu_log("%d region%s rendered through polygon fastpath\n", dgcdp->fastpath_count, dgcdp->fastpath_count==1?"":"s"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ _______________________________________________ BRL-CAD Source Commits mailing list brlcad-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/brlcad-commits