def dispatch(self, player, shutdown):
""" Dispatch events.
Runs the main event loop. Redirects events to corresponding handler.
Distinguishes four types of events:
- Quit event - when user closes window (Windows only)
- Keyboard events
- Mouse events
- User Events
:param player: reference to player object
"param shutdown: shutdown method to use when user exits
"""
self.player = player
self.shutdown = shutdown
mouse_events = [pygame.MOUSEBUTTONDOWN, pygame.MOUSEBUTTONUP, pygame.MOUSEMOTION]
pygame.event.clear()
clock = Clock()
while self.run_dispatcher:
for event in pygame.event.get():
s = str(event)
logging.debug("Received event: %s", s)
if event.type == pygame.QUIT:
self.shutdown(event)
elif (event.type == pygame.KEYDOWN or event.type == pygame.KEYUP) and not self.config[USAGE][USE_LIRC]:
self.handle_keyboard_event(event)
elif event.type in mouse_events or event.type == USER_EVENT_TYPE:
self.handle_event(event)
if self.lirc != None:
code = self.lirc.nextcode()
if code != None:
self.handle_lirc_event(code)
self.current_screen.refresh()
self.screensaver_dispatcher.refresh()
clock.tick(self.frame_rate)
评论列表
文章目录