Fix video player hangs
Changelog-Fixed: Fix hangs due to video player
This commit is contained in:
@@ -170,9 +170,14 @@ public extension VideoPlayer {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func get_video_size(player: AVPlayer) -> CGSize? {
|
func get_video_size(player: AVPlayer) async -> CGSize? {
|
||||||
// TODO: make this async?
|
let res = await withCheckedContinuation { continuation in
|
||||||
return player.currentImage?.size
|
DispatchQueue.global().async {
|
||||||
|
let size = player.currentImage?.size
|
||||||
|
continuation.resume(returning: size)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
func video_has_audio(player: AVPlayer) async -> Bool {
|
func video_has_audio(player: AVPlayer) async -> Bool {
|
||||||
@@ -220,7 +225,7 @@ extension VideoPlayer: UIViewRepresentable {
|
|||||||
if let player = uiView.player {
|
if let player = uiView.player {
|
||||||
Task {
|
Task {
|
||||||
let has_audio = await video_has_audio(player: player)
|
let has_audio = await video_has_audio(player: player)
|
||||||
let size = get_video_size(player: player)
|
let size = await get_video_size(player: player)
|
||||||
Task { @MainActor in
|
Task { @MainActor in
|
||||||
if let size {
|
if let size {
|
||||||
self.model.size = size
|
self.model.size = size
|
||||||
|
|||||||
Reference in New Issue
Block a user