fix bug, reload net

This commit is contained in:
leo 2022-02-23 21:55:15 +01:00
parent 9b2546bfd6
commit b6f4b22bd2
Signed by: leo
GPG Key ID: 0DD993BFB2B307DB

View File

@ -4,10 +4,12 @@ from Map import Map
from CarController import CarController from CarController import CarController
from PySide6.QtWidgets import QFileDialog, QToolBox from PySide6.QtWidgets import QFileDialog, QToolBox
from PySide6.QtCore import QElapsedTimer, QTimer, QElapsedTimer, QObject, Signal, Slot from PySide6.QtCore import QElapsedTimer, QTimer, QElapsedTimer, QObject, Signal, Slot, QThread, QMutex
class mainLoop(QObject): class mainLoop(QObject):
updateFPS = Signal(int) updateFPS = Signal(int)
mutex = QMutex()
def __init__(self, parent): def __init__(self, parent):
super().__init__() super().__init__()
self.parent = parent self.parent = parent
@ -30,9 +32,18 @@ class mainLoop(QObject):
self.fpsTimer = QElapsedTimer() self.fpsTimer = QElapsedTimer()
self.updateFPS.connect(self.parent.updatePhysicsFps) self.updateFPS.connect(self.parent.updatePhysicsFps)
def threadSafe(func):
def inner(*args, **kwargs):
args[0].mutex.lock()
func(*args, **kwargs)
args[0].mutex.unlock()
return inner
def start(self): def start(self):
self.fpsTimer.start() self.fpsTimer.start()
self.stopSignal.connect(self.timer.stop)
@threadSafe
def update(self): def update(self):
try: try:
self.controller.update() self.controller.update()
@ -40,6 +51,7 @@ class mainLoop(QObject):
(type, value, traceback) = sys.exc_info() (type, value, traceback) = sys.exc_info()
print(type, value, traceback) print(type, value, traceback)
@threadSafe
def openNetwork(self, filename): def openNetwork(self, filename):
if filename == '': if filename == '':
return return
@ -48,6 +60,7 @@ class mainLoop(QObject):
self.controller.prepareRoute() self.controller.prepareRoute()
@threadSafe
def openVehicles(self, filename): def openVehicles(self, filename):
if filename == '': if filename == '':
return return
@ -55,6 +68,7 @@ class mainLoop(QObject):
if self.map.isLoaded(): if self.map.isLoaded():
self.controller.prepareRoute() self.controller.prepareRoute()
@threadSafe
def quickLoad(self): def quickLoad(self):
self.map.fromPath("test2.net.xml") self.map.fromPath("test2.net.xml")
self.painter.generateTransform() self.painter.generateTransform()