60 lines
1.4 KiB
Python
60 lines
1.4 KiB
Python
#encoding = utf8
|
|
import logging
|
|
import time
|
|
from abc import ABC, abstractmethod
|
|
from queue import Queue
|
|
from threading import Event, Thread
|
|
|
|
from utils import SyncQueue
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class BaseRender(ABC):
|
|
def __init__(self, play_clock, context, type_, delay=0.02, thread_name="BaseRenderThread"):
|
|
self._play_clock = play_clock
|
|
self._context = context
|
|
self._type = type_
|
|
self._delay = delay
|
|
# self._queue = SyncQueue(context.batch_size, f'{type_}RenderQueue')
|
|
# self._exit_event = Event()
|
|
# self._thread = Thread(target=self._on_run, name=thread_name)
|
|
# self._exit_event.set()
|
|
# self._thread.start()
|
|
|
|
@abstractmethod
|
|
def render(self, frame, ps):
|
|
pass
|
|
|
|
def _on_run(self):
|
|
logging.info(f'{self._type} render run')
|
|
# while self._exit_event.is_set():
|
|
# self._run_step()
|
|
# time.sleep(self._delay)
|
|
|
|
logging.info(f'{self._type} render exit')
|
|
|
|
def put(self, frame, ps):
|
|
pass
|
|
# self._queue.put((frame, ps))
|
|
|
|
def size(self):
|
|
pass
|
|
# return self._queue.size()
|
|
|
|
def pause_talk(self):
|
|
pass
|
|
# self._queue.clear()
|
|
|
|
def stop(self):
|
|
pass
|
|
# self._queue.clear()
|
|
# self._exit_event.clear()
|
|
# self._thread.join()
|
|
|
|
@abstractmethod
|
|
def _run_step(self):
|
|
pass
|
|
|
|
|