mirror of https://github.com/KLayout/klayout.git
Bufix: LVS browser crashed on 'unload' and 'unload all'
This commit is contained in:
parent
7bd9e8dc1b
commit
19741c9fb2
|
|
@ -772,10 +772,7 @@ NetlistBrowserDialog::update_content ()
|
|||
m_reload_action->setEnabled (l2ndb != 0);
|
||||
|
||||
browser_page->enable_updates (false); // Avoid building the internal lists several times ...
|
||||
if (browser_page->db () != l2ndb) {
|
||||
db_changed = true;
|
||||
browser_page->set_db (l2ndb);
|
||||
}
|
||||
db_changed = browser_page->set_db (l2ndb);
|
||||
browser_page->set_max_shape_count (m_max_shape_count);
|
||||
browser_page->set_highlight_style (m_marker_color, m_marker_line_width, m_marker_vertex_size, m_marker_halo, m_marker_dither_pattern, m_marker_intensity, m_use_original_colors, m_auto_color_enabled ? &m_auto_colors : 0);
|
||||
browser_page->set_window (m_window, m_window_dim);
|
||||
|
|
|
|||
|
|
@ -118,6 +118,7 @@ NetlistBrowserPage::NetlistBrowserPage (QWidget * /*parent*/)
|
|||
mp_view (0),
|
||||
m_cv_index (0),
|
||||
mp_plugin_root (0),
|
||||
mp_last_db (0),
|
||||
m_history_ptr (0),
|
||||
m_signals_enabled (true),
|
||||
m_enable_updates (true),
|
||||
|
|
@ -606,7 +607,7 @@ NetlistBrowserPage::rerun_macro ()
|
|||
{
|
||||
BEGIN_PROTECTED
|
||||
|
||||
if (! mp_database->generator ().empty ()) {
|
||||
if (mp_database.get () && ! mp_database->generator ().empty ()) {
|
||||
|
||||
std::map<std::string, tl::Variant> add_pars;
|
||||
|
||||
|
|
@ -764,12 +765,14 @@ NetlistBrowserPage::show_all (bool f)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
bool
|
||||
NetlistBrowserPage::set_db (db::LayoutToNetlist *l2ndb)
|
||||
{
|
||||
if (l2ndb == mp_database.get ()) {
|
||||
// NOTE: mp_last_db mirrors mp_database, but does not automatically fall back to 0 when the DB is deleted. This way we can call
|
||||
// set_db(0) with the correct behavior after the DB has been destroyed.
|
||||
if (l2ndb == mp_last_db) {
|
||||
// not change
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mp_info_dialog) {
|
||||
|
|
@ -779,6 +782,7 @@ NetlistBrowserPage::set_db (db::LayoutToNetlist *l2ndb)
|
|||
|
||||
db::LayoutVsSchematic *lvsdb = dynamic_cast<db::LayoutVsSchematic *> (l2ndb);
|
||||
mp_database.reset (l2ndb);
|
||||
mp_last_db = l2ndb;
|
||||
|
||||
rerun_button->setEnabled (mp_database.get () && ! mp_database->generator ().empty ());
|
||||
if (rerun_button->isEnabled ()) {
|
||||
|
|
@ -807,6 +811,8 @@ NetlistBrowserPage::set_db (db::LayoutToNetlist *l2ndb)
|
|||
setup_trees ();
|
||||
|
||||
selection_changed_event ();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ public:
|
|||
/**
|
||||
* @brief Attaches the page to a L2N DB
|
||||
*/
|
||||
void set_db (db::LayoutToNetlist *database);
|
||||
bool set_db(db::LayoutToNetlist *database);
|
||||
|
||||
/**
|
||||
* @brief Gets the database the page is connected to
|
||||
|
|
@ -228,6 +228,7 @@ private:
|
|||
unsigned int m_cv_index;
|
||||
lay::Dispatcher *mp_plugin_root;
|
||||
tl::weak_ptr<db::LayoutToNetlist> mp_database;
|
||||
db::LayoutToNetlist *mp_last_db;
|
||||
std::vector<QModelIndex> m_history;
|
||||
size_t m_history_ptr;
|
||||
bool m_signals_enabled;
|
||||
|
|
|
|||
Loading…
Reference in New Issue