From 54f187123582cd35b8095f9b6fc7d5f5ea07975e Mon Sep 17 00:00:00 2001 From: Vzor- Date: Sat, 27 Apr 2024 14:04:38 -0400 Subject: [PATCH] Simpler fix --- src/qz/printer/info/NativePrinterMap.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/qz/printer/info/NativePrinterMap.java b/src/qz/printer/info/NativePrinterMap.java index 7f07ad55c..6f0e20805 100644 --- a/src/qz/printer/info/NativePrinterMap.java +++ b/src/qz/printer/info/NativePrinterMap.java @@ -51,7 +51,12 @@ public ArrayList findMissing(boolean exhaustive, PrintService[] se ArrayList serviceList = new ArrayList<>(Arrays.asList(services)); // shrinking list drastically improves performance for(NativePrinter printer : values()) { - if (serviceList.contains(printer.getPrintService())) { + int index = serviceList.indexOf(printer.getPrintService()); + if (index >= 0) { + // Java's `PrintService.equals(o)` method uses getName().equals(). This causes issues if a stale PrintService has been replaced + // by a new PrintService of the same name. For that reason, we always refresh the PrintService reference in NativePrinter. + // See: https://github.com/qzind/tray/issues/1259 + printer.setPrintService(serviceList.get(index)); serviceList.remove(printer.getPrintService()); // existing match } else { if(exhaustive) {