From 16b4044edfc13bd82a2142cccd7a9da0fcda1bd9 Mon Sep 17 00:00:00 2001 From: Martijn Brekhof Date: Sat, 9 Jun 2018 19:46:05 +0200 Subject: [PATCH] Fixed reported NPE when calling notifySomethingIsPlaying (#552) --- .../kore/host/HostConnectionObserver.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/xbmc/kore/host/HostConnectionObserver.java b/app/src/main/java/org/xbmc/kore/host/HostConnectionObserver.java index 1a581ae..1869505 100644 --- a/app/src/main/java/org/xbmc/kore/host/HostConnectionObserver.java +++ b/app/src/main/java/org/xbmc/kore/host/HostConnectionObserver.java @@ -684,6 +684,19 @@ public class HostConnectionObserver observer.playerOnStop(); } + private boolean getPropertiesResultChanged(PlayerType.PropertyValue getPropertiesResult) { + return (hostState.lastGetPropertiesResult == null) || + (hostState.lastGetPropertiesResult.speed != getPropertiesResult.speed) || + (hostState.lastGetPropertiesResult.shuffled != getPropertiesResult.shuffled) || + (!hostState.lastGetPropertiesResult.repeat.equals(getPropertiesResult.repeat)); + } + + private boolean getItemResultChanged(ListType.ItemsAll getItemResult) { + return (hostState.lastGetItemResult == null) || + (hostState.lastGetItemResult.id != getItemResult.id) || + (!hostState.lastGetItemResult.label.equals(getItemResult.label)); + } + /** * Something is playing or paused, notify observers * Only notifies them if the result is different from the last one @@ -700,11 +713,8 @@ public class HostConnectionObserver PlayerEventsObserver.PLAYER_IS_PAUSED : PlayerEventsObserver.PLAYER_IS_PLAYING; if (forceReply || (hostState.lastCallResult != currentCallResult) || - (hostState.lastGetPropertiesResult.speed != getPropertiesResult.speed) || - (hostState.lastGetPropertiesResult.shuffled != getPropertiesResult.shuffled) || - (!hostState.lastGetPropertiesResult.repeat.equals(getPropertiesResult.repeat)) || - (hostState.lastGetItemResult.id != getItemResult.id) || - (!hostState.lastGetItemResult.label.equals(getItemResult.label))) { + getPropertiesResultChanged(getPropertiesResult) || + getItemResultChanged(getItemResult)) { hostState.lastCallResult = currentCallResult; hostState.lastGetActivePlayerResult = getActivePlayersResult; hostState.lastGetPropertiesResult = getPropertiesResult;