MCPcopy Create free account
hub / github.com/KLayout/klayout / shutdown

Method shutdown

src/laybasic/laybasic/layLayoutViewBase.cc:439–499  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

437}
438
439void
440LayoutViewBase::shutdown ()
441{
442 // detach all observers
443 // This is to prevent signals to partially destroyed observers that own a LayoutViewBase
444 layer_list_changed_event.clear ();
445 layer_list_deleted_event.clear ();
446 layer_list_inserted_event.clear ();
447 current_layer_list_changed_event.clear ();
448 cell_visibility_changed_event.clear ();
449 cellviews_about_to_change_event.clear ();
450 cellview_about_to_change_event.clear ();
451 cellviews_changed_event.clear ();
452 cellview_changed_event.clear ();
453 rdb_list_changed_event.clear ();
454 l2ndb_list_changed_event.clear ();
455 file_open_event.clear ();
456 hier_changed_event.clear ();
457 geom_changed_event.clear ();
458 annotations_changed_event.clear ();
459
460 // detach ourselves from any observed objects to prevent signals while destroying
461 tl::Object::detach_from_all_events ();
462
463 // remove all rdb's
464 while (num_rdbs () > 0) {
465 remove_rdb (0);
466 }
467
468 // remove all L2N DB's
469 while (num_l2ndbs () > 0) {
470 remove_l2ndb (0);
471 }
472
473 // delete layer lists
474 std::vector<LayerPropertiesList *> layer_properties_lists;
475 layer_properties_lists.swap (m_layer_properties_lists);
476 for (std::vector<LayerPropertiesList *>::iterator l = layer_properties_lists.begin (); l != layer_properties_lists.end (); ++l) {
477 if (*l) {
478 delete *l;
479 }
480 }
481
482 // NOTE: this must happen before the services are deleted
483 mp_move_service = 0;
484 mp_selection_service = 0;
485 mp_tracker = 0;
486 mp_zoom_service = 0;
487
488 // delete all plugins
489 std::vector<lay::Plugin *> plugins;
490 plugins.swap (mp_plugins);
491 for (std::vector<lay::Plugin *>::iterator p = plugins.begin (); p != plugins.end (); ++p) {
492 delete *p;
493 }
494
495 // detach from the manager, so we can safely delete the manager
496 manager (0);

Callers

nothing calls this directly

Calls 8

num_rdbsFunction · 0.85
num_l2ndbsFunction · 0.85
managerFunction · 0.70
stopFunction · 0.50
clearMethod · 0.45
swapMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected