From c5272c6439c963151008dff21adea917cf561a4b Mon Sep 17 00:00:00 2001 From: CodePanter Date: Thu, 3 Mar 2016 21:55:17 +0100 Subject: [PATCH] Implemented threads and a forced framerate. --- vloed.py | 65 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 22 deletions(-) diff --git a/vloed.py b/vloed.py index 2c38942..74421fc 100755 --- a/vloed.py +++ b/vloed.py @@ -11,10 +11,13 @@ __author__ = "Jan Klopper " import pygame import socket import struct +import Queue +import threading +import time def main(): """Runs a pixelvloed server""" - PixelVloed(debug=True) + PixelVloed() class PixelVloed(object): """PixelVloed server class""" @@ -23,10 +26,15 @@ class PixelVloed(object): """Init the pixelVloed server""" self.debug = debug self.pixeloffset = 2 + self.fps = 30 self.screen = None self.canvas() self.set_title() - self.Socket(udp_ip, udp_port) + self.queue = Queue.Queue() + self.receivethread = threading.Thread(target=self.Socket, args=(udp_ip, udp_port), name="ReceiveThread") + self.drawthread = threading.Thread(target=self.CanvasUpdate, name="DrawThread") + self.receivethread.start() + self.drawthread.start() @staticmethod def set_title(text=None): @@ -36,7 +44,7 @@ class PixelVloed(object): title += ' ' + text pygame.display.set_caption(title) - def canvas(self, width=640, height=480): + def canvas(self, width=768, height=1366): """Init the pygame canvas""" pygame.init() self.screen = pygame.display.set_mode((width, height)) @@ -56,26 +64,39 @@ class PixelVloed(object): sock.bind((ipaddress, port)) while True: - data, addr = sock.recvfrom(1024) - preamble = struct.unpack_from("= 1 / self.fps: + pygame.display.flip() + lasttime = time.time() + + def Draw(self): + data, addr = self.queue.get() + self.queue.task_done() + preamble = struct.unpack_from("