From 88468415ccb9f3380dec6d368247dcdd265dbb55 Mon Sep 17 00:00:00 2001 From: gajgaje2000 Date: Thu, 13 Aug 2026 18:05:09 +0530 Subject: [PATCH] Fix black video delay when entering fullscreen --- .../fragments/detail/VideoDetailFragment.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index ee93e3138..4780f7567 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -1295,9 +1295,15 @@ public final class VideoDetailFragment player.UIs().get(MainPlayerUi.class).ifPresent(playerUi -> { // sometimes binding would be null here, even though getView() != null above u.u if (binding != null) { - // prevent from re-adding a view multiple times - playerUi.removeViewFromParent(); - binding.playerPlaceholder.addView(playerUi.getBinding().getRoot()); + // Only reparent the view if it's not already in the playerPlaceholder. + // Removing and re-adding a SurfaceView destroys its native surface, + // causing a black screen until the video decoder hits the next + // keyframe (2-5 seconds on typical DASH/HLS streams). + if (playerUi.getBinding().getRoot().getParent() + != binding.playerPlaceholder) { + playerUi.removeViewFromParent(); + binding.playerPlaceholder.addView(playerUi.getBinding().getRoot()); + } playerUi.setupVideoSurfaceIfNeeded(); } });