From 7d5367ff0c4a8110910b403c15939c805629a5ac Mon Sep 17 00:00:00 2001 From: Oskar Eichler Date: Mon, 31 Aug 2026 14:34:31 +0300 Subject: [PATCH] fix(android): guard picture-in-picture state --- .../java/com/brentvatne/exoplayer/ReactExoplayerView.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java b/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java index 9f5fd18673..65252fae03 100644 --- a/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java +++ b/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java @@ -2503,6 +2503,7 @@ protected void setIsInPictureInPicture(boolean isInPictureInPicture) { addView(exoPlayerView, 0, layoutParams); reLayoutControls(); } + rootViewChildrenOriginalVisibility.clear(); } } @@ -2511,7 +2512,8 @@ public void enterPictureInPictureMode() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { ArrayList actions = PictureInPictureUtil.getPictureInPictureActions(themedReactContext, isPaused, pictureInPictureReceiver); pictureInPictureParamsBuilder.setActions(actions); - if (player.getPlaybackState() == Player.STATE_READY) { + if (player != null && player.getPlaybackState() == Player.STATE_READY + && player.getVideoSize().width > 0 && player.getVideoSize().height > 0) { pictureInPictureParamsBuilder.setAspectRatio(PictureInPictureUtil.calcPictureInPictureAspectRatio(player)); } _pipParams = pictureInPictureParamsBuilder.build(); @@ -2527,7 +2529,7 @@ public void exitPictureInPictureMode() { ViewGroup rootView = decorView.findViewById(android.R.id.content); if (!rootViewChildrenOriginalVisibility.isEmpty()) { - if (exoPlayerView.getParent().equals(rootView)) rootView.removeView(exoPlayerView); + if (rootView.equals(exoPlayerView.getParent())) rootView.removeView(exoPlayerView); for (int i = 0; i < rootView.getChildCount(); i++) { rootView.getChildAt(i).setVisibility(rootViewChildrenOriginalVisibility.get(i)); }