mirror of
https://github.com/infiniteCable2/openpilot.git
synced 2026-10-01 03:53:41 +08:00
@@ -19,6 +19,7 @@ FPS_LOG_INTERVAL = 5 # Seconds between logging FPS drops
|
||||
FPS_DROP_THRESHOLD = 0.9 # FPS drop threshold for triggering a warning
|
||||
FPS_CRITICAL_THRESHOLD = 0.5 # Critical threshold for triggering strict actions
|
||||
MOUSE_THREAD_RATE = 140 # touch controller runs at 140Hz
|
||||
MAX_TOUCH_SLOT = 2
|
||||
|
||||
ENABLE_VSYNC = os.getenv("ENABLE_VSYNC", "0") == "1"
|
||||
SHOW_FPS = os.getenv("SHOW_FPS") == "1"
|
||||
@@ -58,6 +59,7 @@ class MousePos(NamedTuple):
|
||||
|
||||
class MouseEvent(NamedTuple):
|
||||
pos: MousePos
|
||||
slot: int
|
||||
left_pressed: bool
|
||||
left_released: bool
|
||||
left_down: bool
|
||||
@@ -67,7 +69,7 @@ class MouseEvent(NamedTuple):
|
||||
class MouseState:
|
||||
def __init__(self):
|
||||
self._events: deque[MouseEvent] = deque(maxlen=MOUSE_THREAD_RATE) # bound event list
|
||||
self._prev_mouse_event: MouseEvent | None = None
|
||||
self._prev_mouse_event: list[MouseEvent | None] = [None] * MAX_TOUCH_SLOT
|
||||
|
||||
self._rk = Ratekeeper(MOUSE_THREAD_RATE)
|
||||
self._lock = threading.Lock()
|
||||
@@ -98,19 +100,21 @@ class MouseState:
|
||||
self._rk.keep_time()
|
||||
|
||||
def _handle_mouse_event(self):
|
||||
mouse_pos = rl.get_mouse_position()
|
||||
ev = MouseEvent(
|
||||
MousePos(mouse_pos.x, mouse_pos.y),
|
||||
rl.is_mouse_button_pressed(rl.MouseButton.MOUSE_BUTTON_LEFT),
|
||||
rl.is_mouse_button_released(rl.MouseButton.MOUSE_BUTTON_LEFT),
|
||||
rl.is_mouse_button_down(rl.MouseButton.MOUSE_BUTTON_LEFT),
|
||||
time.monotonic(),
|
||||
)
|
||||
# Only add changes
|
||||
if self._prev_mouse_event is None or ev[:-1] != self._prev_mouse_event[:-1]:
|
||||
with self._lock:
|
||||
self._events.append(ev)
|
||||
self._prev_mouse_event = ev
|
||||
for slot in range(MAX_TOUCH_SLOT):
|
||||
mouse_pos = rl.get_touch_position(slot)
|
||||
ev = MouseEvent(
|
||||
MousePos(mouse_pos.x, mouse_pos.y),
|
||||
slot,
|
||||
rl.is_mouse_button_pressed(slot),
|
||||
rl.is_mouse_button_released(slot),
|
||||
rl.is_mouse_button_down(slot),
|
||||
time.monotonic(),
|
||||
)
|
||||
# Only add changes
|
||||
if self._prev_mouse_event[slot] is None or ev[:-1] != self._prev_mouse_event[slot][:-1]:
|
||||
with self._lock:
|
||||
self._events.append(ev)
|
||||
self._prev_mouse_event[slot] = ev
|
||||
|
||||
|
||||
class GuiApplication:
|
||||
|
||||
Reference in New Issue
Block a user