Skip to content

Commit 9b8163b

Browse files
committed
Attempt to aid memory issues
1 parent 71edea3 commit 9b8163b

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

runtimepy/net/server/app/env/tab/message.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,7 @@ def handle_shown_state(
6969
for name in env.names:
7070
self._setup_callback(name, state)
7171
else:
72-
# Remove callbacks for primitives.
73-
for name, val in state.callbacks.items():
74-
state.primitives[name].remove_callback(val)
72+
state.clear_telemetry()
7573

7674
# Save current UI state.
7775
state.latest_ui_values.update(latest)

runtimepy/net/server/websocket/state.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,36 @@ def frame(self, time: float) -> JsonMessage:
5353

5454
return result
5555

56+
def clear_telemetry(self) -> None:
57+
"""Clear all telemetry interactions."""
58+
59+
# Remove callbacks for primitives.
60+
for name, val in self.callbacks.items():
61+
self.primitives[name].remove_callback(val)
62+
self.callbacks.clear()
63+
self.primitives.clear()
64+
65+
# Clear points.
66+
self.points.clear()
67+
5668
def clear_loggers(self) -> None:
5769
"""Clear all logging handlers."""
5870

71+
# Remove handlers.
5972
for logger in self._loggers:
6073
logger.removeHandler(self.tab_logger)
74+
self._loggers.clear()
75+
6176
self.tab_logger.drain_str()
62-
self._loggers = []
77+
78+
self.clear_telemetry()
6379

6480
def add_logger(self, logger: logging.Logger) -> None:
6581
"""Add a logger."""
6682

67-
logger.addHandler(self.tab_logger)
68-
self._loggers.append(logger)
83+
if logger not in self._loggers:
84+
logger.addHandler(self.tab_logger)
85+
self._loggers.append(logger)
6986

7087
@staticmethod
7188
def create() -> "TabState":

0 commit comments

Comments
 (0)