/* --------------------------------------------------------------------------- * exits crosshair routines, release GCs */ void DestroyCrosshair (void) { CrosshairOff (true); FreePolygonMemory (&Crosshair.AttachedPolygon); gui->destroy_gc (Crosshair.GC); }
/* --------------------------------------------------------------------------- * destroys a polygon from a layer */ static void * DestroyPolygon (LayerTypePtr Layer, PolygonTypePtr Polygon) { r_delete_entry (Layer->polygon_tree, (BoxTypePtr) Polygon); FreePolygonMemory (Polygon); Layer->Polygon = g_list_remove (Layer->Polygon, Polygon); Layer->PolygonN --; g_slice_free (PolygonType, Polygon); return NULL; }
/* --------------------------------------------------------------------------- * free memory used by data struct */ void FreeDataMemory (DataType *data) { LayerType *layer; int i; if (data == NULL) return; VIA_LOOP (data); { free (via->Name); } END_LOOP; g_list_free_full (data->Via, (GDestroyNotify)FreeVia); ELEMENT_LOOP (data); { FreeElementMemory (element); } END_LOOP; g_list_free_full (data->Element, (GDestroyNotify)FreeElement); g_list_free_full (data->Rat, (GDestroyNotify)FreeRat); for (layer = data->Layer, i = 0; i < MAX_LAYER + 2; layer++, i++) { FreeAttributeListMemory (&layer->Attributes); TEXT_LOOP (layer); { free (text->TextString); } END_LOOP; if (layer->Name) free (layer->Name); LINE_LOOP (layer); { if (line->Number) free (line->Number); } END_LOOP; g_list_free_full (layer->Line, (GDestroyNotify)FreeLine); g_list_free_full (layer->Arc, (GDestroyNotify)FreeArc); g_list_free_full (layer->Text, (GDestroyNotify)FreeText); POLYGON_LOOP (layer); { FreePolygonMemory (polygon); } END_LOOP; g_list_free_full (layer->Polygon, (GDestroyNotify)FreePolygon); if (layer->line_tree) r_destroy_tree (&layer->line_tree); if (layer->arc_tree) r_destroy_tree (&layer->arc_tree); if (layer->text_tree) r_destroy_tree (&layer->text_tree); if (layer->polygon_tree) r_destroy_tree (&layer->polygon_tree); } if (data->element_tree) r_destroy_tree (&data->element_tree); for (i = 0; i < MAX_ELEMENTNAMES; i++) if (data->name_tree[i]) r_destroy_tree (&data->name_tree[i]); if (data->via_tree) r_destroy_tree (&data->via_tree); if (data->pin_tree) r_destroy_tree (&data->pin_tree); if (data->pad_tree) r_destroy_tree (&data->pad_tree); if (data->rat_tree) r_destroy_tree (&data->rat_tree); /* clear struct */ memset (data, 0, sizeof (DataType)); }
/* --------------------------------------------------------------------------- * free memory used by data struct */ void FreeDataMemory (DataTypePtr Data) { LayerTypePtr layer; int i; if (Data) { VIA_LOOP (Data); { MYFREE (via->Name); } END_LOOP; ELEMENT_LOOP (Data); { FreeElementMemory (element); } END_LOOP; for (layer = Data->Layer, i = 0; i < MAX_LAYER + 2; layer++, i++) { FreeAttributeListMemory (&layer->Attributes); TEXT_LOOP (layer); { MYFREE (text->TextString); } END_LOOP; if (layer->Name) MYFREE (layer->Name); LINE_LOOP (layer); { if (line->Number) MYFREE (line->Number); } END_LOOP; MYFREE (layer->Line); MYFREE (layer->Arc); MYFREE (layer->Text); POLYGON_LOOP (layer); { FreePolygonMemory (polygon); } END_LOOP; MYFREE (layer->Polygon); if (layer->line_tree) r_destroy_tree (&layer->line_tree); if (layer->arc_tree) r_destroy_tree (&layer->arc_tree); if (layer->text_tree) r_destroy_tree (&layer->text_tree); if (layer->polygon_tree) r_destroy_tree (&layer->polygon_tree); } if (Data->element_tree) r_destroy_tree (&Data->element_tree); for (i = 0; i < MAX_ELEMENTNAMES; i++) if (Data->name_tree[i]) r_destroy_tree (&Data->name_tree[i]); if (Data->via_tree) r_destroy_tree (&Data->via_tree); if (Data->pin_tree) r_destroy_tree (&Data->pin_tree); if (Data->pad_tree) r_destroy_tree (&Data->pad_tree); if (Data->rat_tree) r_destroy_tree (&Data->rat_tree); /* clear struct */ memset (Data, 0, sizeof (DataType)); } else { fprintf (stderr, "Warning: Tried to FreeDataMemory(null)\n"); } }
/*! * \brief Exits crosshair routines, release GCs. */ void DestroyCrosshair (void) { FreePolygonMemory (&Crosshair.AttachedPolygon); }
/* --------------------------------------------------------------------------- * exits crosshair routines, release GCs */ void DestroyCrosshair (void) { FreePolygonMemory (&Crosshair.AttachedPolygon); gui->graphics->destroy_gc (Crosshair.GC); }