From 1ad9e202a92ceb3032266f4702e4d142f71a6e73 Mon Sep 17 00:00:00 2001
From: tobias <tobias@thecodedev.de>
Date: Fri, 27 Sep 2019 18:25:48 +0200
Subject: [PATCH] Catch errors PadListener calling to prevent erroneous
 playback

---
 .../playpad/pad/listener/PadStatusControlListener.java    | 8 +++++++-
 .../de/tobias/playpad/plugin/playout/log/LogSeason.java   | 7 ++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java
index 882aa5c0..f0ea7b10 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/PadStatusControlListener.java
@@ -1,5 +1,6 @@
 package de.tobias.playpad.pad.listener;
 
+import de.thecodelabs.logger.Logger;
 import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.PadSettings;
@@ -28,7 +29,12 @@ public class PadStatusControlListener implements ChangeListener<PadStatus> {
 		PadSettings padSettings = pad.getPadSettings();
 		ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings();
 
-		PlayPadPlugin.getInstance().getPadListener().forEach(listener -> listener.onStatusChange(pad, newValue));
+		try {
+			PlayPadPlugin.getInstance().getPadListener().forEach(listener -> listener.onStatusChange(pad, newValue));
+		} catch (Exception e) {
+			Logger.error(e);
+		}
+
 		if (newValue == PadStatus.PLAY) {
 			if (pad.getContent() != null) {
 
diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSeason.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSeason.java
index 0390a671..a037825f 100644
--- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSeason.java
+++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/log/LogSeason.java
@@ -1,5 +1,6 @@
 package de.tobias.playpad.plugin.playout.log;
 
+import de.thecodelabs.logger.Logger;
 import de.thecodelabs.utils.threading.Worker;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.mediapath.MediaPath;
@@ -36,7 +37,11 @@ public class LogSeason {
 	}
 
 	public void createProjectSnapshot(Project project) {
-		Worker.runLater(() -> project.getPads().parallelStream().forEach(this::addLogItem));
+		Worker.runLater(() -> {
+			Logger.info("Start creating project snapshot for PlayoutLog session");
+			project.getPads().parallelStream().forEach(this::addLogItem);
+			Logger.info("Finish creating project snapshot for PlayoutLog session");
+		});
 	}
 
 	public void addLogItem(Pad pad) {
-- 
GitLab