From 8ca6d081338936e89f7fc9d51a50a2a431589e8b Mon Sep 17 00:00:00 2001 From: Marcus van Elst Date: Wed, 29 Apr 2026 06:20:56 +0200 Subject: [PATCH] Fix #55: Mutable Felder in PdfPreviewPane als volatile deklarieren Die Felder currentDocument, currentRenderer, currentSourceFile, currentPage und totalPages werden vom Worker-Thread geschrieben und vom JavaFX Application Thread gelesen. Das volatile-Keyword garantiert nun die Sichtbarkeit zwischen den Threads gemaess Java Memory Model. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../adapter/in/gui/batchrun/PdfPreviewPane.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/PdfPreviewPane.java b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/PdfPreviewPane.java index c8beb16..2926ecb 100644 --- a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/PdfPreviewPane.java +++ b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/PdfPreviewPane.java @@ -112,22 +112,22 @@ public final class PdfPreviewPane { * Aktuell geöffnetes PDF-Dokument. Zugriff ausschließlich vom Worker-Thread. * {@code null} wenn kein Dokument geöffnet ist. */ - private PDDocument currentDocument = null; + private volatile PDDocument currentDocument = null; /** * Renderer für das aktuell geöffnete Dokument. Zugriff ausschließlich vom Worker-Thread. * {@code null} wenn kein Dokument geöffnet ist. */ - private PDFRenderer currentRenderer = null; + private volatile PDFRenderer currentRenderer = null; /** Aktuell geladene Quelldatei; null wenn keine Selektion vorliegt. */ - private Path currentSourceFile = null; + private volatile Path currentSourceFile = null; /** Aktuell angezeigte Seite (1-basiert; 0 wenn keine Datei geladen). */ - private int currentPage = 0; + private volatile int currentPage = 0; /** Anzahl der Seiten der aktuell geladenen PDF; -1 wenn nicht ermittelt. */ - private int totalPages = -1; + private volatile int totalPages = -1; /** Gibt an ob die Navigation bedienbar ist. */ private boolean enabled = true;