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

Reply via email to