Skip to content

Commit

Permalink
Fix desktop reference counting
Browse files Browse the repository at this point in the history
Increment the desktop instance's "application reference count" in
Design.__enter__ instead of Design.__init__ to avoid increasing the
reference count incorrectly when, for example, Hfss.set_active_design is
called.

Fixes #4092
  • Loading branch information
isaacwaldron committed Jan 17, 2024
1 parent 81b5f72 commit 2bb23c6
Show file tree
Hide file tree
Showing 13 changed files with 5 additions and 40 deletions.
9 changes: 4 additions & 5 deletions pyaedt/application/Design.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,13 +137,14 @@ def __str__(self):
def __exit__(self, ex_type, ex_value, ex_traceback):
if ex_type:
exception_to_desktop(ex_value, ex_traceback)
if self._desktop_class._connected_designs > 1:
self._desktop_class._connected_designs -= 1
if self._desktop_class._connected_app_instances > 1:
self._desktop_class._connected_app_instances -= 1
elif self._desktop_class._initialized_from_design:
self.release_desktop(self.close_on_exit, self.close_on_exit)

def __enter__(self):
pass
self._desktop_class._connected_app_instances += 1
return self

@pyaedt_function_handler()
def __getitem__(self, variable_name):
Expand Down Expand Up @@ -234,8 +235,6 @@ def load_aedt_thread(path):
port,
aedt_process_id,
)
self._desktop_class._connected_designs += 1

self.student_version = self._desktop_class.student_version
if self.student_version:
settings.disable_bounding_box_sat = True
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/circuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,9 +154,6 @@ def __init__(
def _init_from_design(self, *args, **kwargs):
self.__init__(*args, **kwargs)

def __enter__(self):
return self

def _get_number_from_string(self, stringval):
value = stringval[stringval.find("=") + 1 :].strip().replace("{", "").replace("}", "").replace(",", ".")
value = value.replace("µ", "u")
Expand Down
2 changes: 1 addition & 1 deletion pyaedt/desktop.py
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ def __init__(
self._initialized_from_design = True if Desktop._invoked_from_design else False
Desktop._invoked_from_design = False

self._connected_designs = 0
self._connected_app_instances = 0

"""Initialize desktop."""
self.launched_by_pyaedt = False
Expand Down
4 changes: 0 additions & 4 deletions pyaedt/emit.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,10 +189,6 @@ def couplings(self):
"""
return self._couplings

@pyaedt_function_handler()
def __enter__(self):
return self

@pyaedt_function_handler()
def version(self, detailed=False):
"""
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/hfss.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,9 +201,6 @@ def __init__(
def _init_from_design(self, *args, **kwargs):
self.__init__(*args, **kwargs)

def __enter__(self):
return self

@property
def field_setups(self):
"""List of AEDT radiation fields.
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/hfss3dlayout.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,6 @@ def __init__(
def _init_from_design(self, *args, **kwargs):
self.__init__(*args, **kwargs)

def __enter__(self):
return self

@pyaedt_function_handler()
def create_edge_port(
self,
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/icepak.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,9 +171,6 @@ def __init__(
def _init_from_design(self, *args, **kwargs):
self.__init__(*args, **kwargs)

def __enter__(self):
return self

@property
def problem_type(self):
"""Problem type of the Icepak design. Options are ``"TemperatureAndFlow"``, ``"TemperatureOnly"``,
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/maxwell.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@


class Maxwell(object):
def __enter__(self):
return self

def __init__(self):
pass

Expand Down
3 changes: 0 additions & 3 deletions pyaedt/maxwellcircuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,3 @@ def export_netlist_from_schematic(self, file_to_export):
return file_to_export
except:
return False

def __enter__(self):
return self
3 changes: 0 additions & 3 deletions pyaedt/mechanical.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,6 @@ def __init__(
def _init_from_design(self, *args, **kwargs):
self.__init__(*args, **kwargs)

def __enter__(self):
return self

@pyaedt_function_handler()
def assign_em_losses(
self,
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/q3d.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,6 @@ def __init__(
for el in list(self.omatrix.ListReduceMatrixes()):
self.matrices.append(Matrix(self, el))

def __enter__(self):
return self

@property
def excitations(self):
"""Get all excitation names.
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/rmxprt.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,9 +239,6 @@ def __init__(
def _init_from_design(self, *args, **kwargs):
self.__init__(*args, **kwargs)

def __enter__(self):
return self

@property
def design_type(self):
"""Machine design type."""
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/twinbuilder.py
Original file line number Diff line number Diff line change
Expand Up @@ -563,6 +563,3 @@ def add_q3d_dynamic_component(
if is_loaded:
app.close_project(save_project=False)
return True

def __enter__(self):
return self

0 comments on commit 2bb23c6

Please sign in to comment.