From e0f99c93c496f73732cff4f0b9a74b6f4eed09ad Mon Sep 17 00:00:00 2001 From: Martijn Brekhof Date: Sat, 9 Jun 2018 19:47:09 +0200 Subject: [PATCH] Fixed NPE in the VolumeControllerDialog (#553) The applicationObserver was never unregistered resulting in a memory leak and even worse, crashes when destroyed dialogs still got called through the applicationOnVolumeChanged callback. Also changed the view resource identifiers used by the controller dialog as it used the same resource identifiers as the now playing panel. --- .../VolumeControllerDialogFragmentListener.java | 11 ++++++++--- app/src/main/res/layout/volume_controller_dialog.xml | 6 +++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/xbmc/kore/ui/generic/VolumeControllerDialogFragmentListener.java b/app/src/main/java/org/xbmc/kore/ui/generic/VolumeControllerDialogFragmentListener.java index 825c71a..9675ff5 100644 --- a/app/src/main/java/org/xbmc/kore/ui/generic/VolumeControllerDialogFragmentListener.java +++ b/app/src/main/java/org/xbmc/kore/ui/generic/VolumeControllerDialogFragmentListener.java @@ -36,9 +36,9 @@ public class VolumeControllerDialogFragmentListener extends AppCompatDialogFragm private static final String TAG = LogUtils.makeLogTag(VolumeControllerDialogFragmentListener.class); private static final int AUTO_DISMISS_DELAY = 2000; - @BindView(R.id.npp_volume_mute) HighlightButton volumeMuteButton; - @BindView(R.id.npp_volume_muted_indicator) HighlightButton volumeMutedIndicatorButton; - @BindView(R.id.npp_volume_level_indicator) VolumeLevelIndicator volumeLevelIndicator; + @BindView(R.id.vcd_volume_mute) HighlightButton volumeMuteButton; + @BindView(R.id.vcd_volume_muted_indicator) HighlightButton volumeMutedIndicatorButton; + @BindView(R.id.vcd_volume_level_indicator) VolumeLevelIndicator volumeLevelIndicator; private Unbinder unbinder; private Handler callbackHandler = new Handler(); @@ -125,6 +125,11 @@ public class VolumeControllerDialogFragmentListener extends AppCompatDialogFragm @Override public void onDestroyView() { super.onDestroyView(); + + HostConnectionObserver hostConnectionObserver = hostManager.getHostConnectionObserver(); + if (hostConnectionObserver != null) { + hostConnectionObserver.unregisterApplicationObserver(this); + } unbinder.unbind(); } diff --git a/app/src/main/res/layout/volume_controller_dialog.xml b/app/src/main/res/layout/volume_controller_dialog.xml index 7ff8e1a..2e436a1 100644 --- a/app/src/main/res/layout/volume_controller_dialog.xml +++ b/app/src/main/res/layout/volume_controller_dialog.xml @@ -10,7 +10,7 @@ tools:background="@color/dark_content_background_dim_70pct">