Skip to content

Commit

Permalink
Fix WebRtcStreamerContext to store weakref to a worker object
Browse files Browse the repository at this point in the history
  • Loading branch information
whitphx committed Apr 8, 2021
1 parent 4b716d6 commit a219c37
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions streamlit_webrtc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import logging
import os
from typing import Dict, Hashable, NamedTuple, Optional, Union
import weakref

try:
from typing import TypedDict
Expand Down Expand Up @@ -84,21 +85,26 @@ class WebRtcStreamerState(NamedTuple):

class WebRtcStreamerContext:
state: WebRtcStreamerState
_worker: Optional[WebRtcWorker]
_worker_ref: "Optional[weakref.ReferenceType[WebRtcWorker]]"

def __init__(
self, worker: Optional[WebRtcWorker], state: WebRtcStreamerState
) -> None:
self._worker = worker
self._worker_ref = weakref.ref(worker) if worker else None
self.state = state

def get_worker(self) -> Optional[WebRtcWorker]:
return self._worker_ref() if self._worker_ref else None

@property
def video_transformer(self) -> Optional[VideoTransformerBase]:
return self._worker.video_transformer if self._worker else None
worker = self.get_worker()
return worker.video_transformer if worker else None

@property
def video_receiver(self) -> Optional[VideoReceiver]:
return self._worker.video_receiver if self._worker else None
worker = self.get_worker()
return worker.video_receiver if worker else None


def webrtc_streamer(
Expand Down

0 comments on commit a219c37

Please sign in to comment.