//
//  VideoRenderer.swift
//  humand
//
//  RTCMTLVideoView subclass with thread-safe track management.
//  Based on Stream SDK's VideoRenderer pattern.
//

import StreamWebRTC

class VideoRenderer: RTCMTLVideoView {

  private let queue = DispatchQueue(label: "VideoRenderer.track")

  weak var track: RTCVideoTrack?

  override init(frame: CGRect) {
    super.init(frame: frame)
  }

  required init?(coder: NSCoder) {
    super.init(coder: coder)
  }

  deinit {
    track?.remove(self)
  }

  func add(track: RTCVideoTrack) {
    queue.sync {
      self.track?.remove(self)
      self.track = track
      track.add(self)
    }
  }

  func removeTrack() {
    queue.sync {
      self.track?.remove(self)
      self.track = nil
    }
  }

  override func willMove(toSuperview newSuperview: UIView?) {
    super.willMove(toSuperview: newSuperview)
    if newSuperview == nil {
      setSize(.zero)
    }
  }
}
