Skip to content

Commit ab447cd

Browse files
Upgrade interactivity of the Visualizer.
1 parent 34dcef3 commit ab447cd

File tree

3 files changed

+41
-30
lines changed

3 files changed

+41
-30
lines changed

src/Core/Rendering/backend/BaseVisualizer.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ def launch_server(self,
9292
clients = {}
9393
for _ in range(nb_clients):
9494
client, _ = self.server.accept()
95+
client.settimeout(0.1)
9596
idx_client: int = unpack('i', client.recv(4))[0]
9697
clients[idx_client] = client
9798

@@ -194,15 +195,18 @@ def listen_client(self,
194195
"""
195196

196197
while not self.is_done[idx_client]:
197-
msg = self.clients[idx_client].recv(4)
198-
if len(msg) == 0:
198+
try:
199+
msg = self.clients[idx_client].recv(4)
200+
if len(msg) == 0:
201+
pass
202+
elif msg == b'exit':
203+
self.is_done[idx_client] = True
204+
self.exit(force_quit=False)
205+
else:
206+
step = unpack('i', msg)[0]
207+
self.requests.append((idx_client, step))
208+
except socket.timeout:
199209
pass
200-
elif msg == b'exit':
201-
self.is_done[idx_client] = True
202-
self.exit(force_quit=False)
203-
else:
204-
step = unpack('i', msg)[0]
205-
self.requests.append((idx_client, step))
206210

207211
def update_actors(self,
208212
step: int,

src/Core/Rendering/backend/Open3d/Open3dVisualizer.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import socket
12
from typing import Dict, Optional, Tuple
23
from threading import Thread
34
from struct import unpack
@@ -115,20 +116,22 @@ def single_client_thread(self):
115116
"""
116117

117118
while not self.is_done[0]:
118-
119-
msg = self.clients[0].recv(4)
120-
if len(msg) == 0:
119+
try:
120+
msg = self.clients[0].recv(4)
121+
if len(msg) == 0:
122+
pass
123+
elif msg == b'exit':
124+
self.is_done[0] = True
125+
self.exit(force_quit=False)
126+
else:
127+
self.__step = (0, unpack('i', msg)[0])
128+
process_time = time()
129+
gui.Application.instance.post_to_main_thread(self._window,
130+
self.update_visualizer)
131+
dt = max(0., self.fps - (time() - process_time))
132+
sleep(dt)
133+
except socket.timeout:
121134
pass
122-
elif msg == b'exit':
123-
self.is_done[0] = True
124-
self.exit(force_quit=False)
125-
else:
126-
self.__step = (0, unpack('i', msg)[0])
127-
process_time = time()
128-
gui.Application.instance.post_to_main_thread(self._window,
129-
self.update_visualizer)
130-
dt = max(0., self.fps - (time() - process_time))
131-
sleep(dt)
132135

133136
gui.Application.instance.quit()
134137

src/Core/Rendering/backend/Vedo/VedoVisualizer.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import socket
12
from typing import Dict, Optional
23
from struct import unpack
34
from vedo import show, Plotter
@@ -112,16 +113,19 @@ def single_client_thread(self, _) -> None:
112113
Timer callback for a single Factory.
113114
"""
114115

115-
msg = self.clients[0].recv(4)
116-
if len(msg) == 0:
116+
try:
117+
msg = self.clients[0].recv(4)
118+
if len(msg) == 0:
119+
pass
120+
elif msg == b'exit':
121+
self.is_done[0] = True
122+
self.exit(force_quit=False)
123+
else:
124+
step = unpack('i', msg)[0]
125+
self.update_visualizer(step=step, idx_factory=0)
126+
self.clients[0].send(b'done')
127+
except socket.timeout:
117128
pass
118-
elif msg == b'exit':
119-
self.is_done[0] = True
120-
self.exit(force_quit=False)
121-
else:
122-
step = unpack('i', msg)[0]
123-
self.update_visualizer(step=step, idx_factory=0)
124-
self.clients[0].send(b'done')
125129

126130
def multiple_clients_thread(self, _) -> None:
127131
"""

0 commit comments

Comments
 (0)