Skip to content

Commit 29d4755

Browse files
committedFeb 11, 2016
gui/applets: prevent concurrent process start/stop
1 parent 92c0ede commit 29d4755

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed
 

Diff for: ‎artiq/gui/applets.py

+15
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,17 @@ def __init__(self, datasets_sub, uid, name, command):
9595
self.applet_name = name
9696
self.command = command
9797

98+
self.starting_stopping = False
99+
98100
def rename(self, name):
99101
self.applet_name = name
100102
self.label.setText("Applet: " + name)
101103

102104
async def start(self):
105+
if self.starting_stopping:
106+
return
107+
self.starting_stopping = True
108+
103109
self.ipc = AppletIPCServer(self.datasets_sub)
104110
if "{ipc_address}" not in self.command:
105111
logger.warning("IPC address missing from command for %s",
@@ -114,6 +120,8 @@ async def start(self):
114120
exc_info=True)
115121
self.ipc.start(self.embed, self.fix_initial_size)
116122

123+
self.starting_stopping = False
124+
117125
def embed(self, win_id):
118126
logger.debug("capturing window 0x%x for %s", win_id, self.applet_name)
119127
self.embed_window = QtGui.QWindow.fromWinId(win_id)
@@ -127,6 +135,10 @@ def fix_initial_size(self):
127135
self.embed_window.resize(self.embed_widget.size())
128136

129137
async def terminate(self):
138+
if self.starting_stopping:
139+
return
140+
self.starting_stopping = True
141+
130142
if hasattr(self, "ipc"):
131143
await self.ipc.stop()
132144
self.ipc.write_pyon({"action": "terminate"})
@@ -142,9 +154,12 @@ async def terminate(self):
142154
await self.ipc.process.wait()
143155
del self.ipc
144156

157+
if hasattr(self, "embed_widget"):
145158
self.embed_widget.deleteLater()
146159
del self.embed_widget
147160

161+
self.starting_stopping = False
162+
148163
async def restart(self):
149164
await self.terminate()
150165
await self.start()

0 commit comments

Comments
 (0)
Please sign in to comment.