From e81444380da24d31d748a9d9d7336871926cec34 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Wed, 18 Mar 2026 17:32:40 +0200 Subject: [PATCH] Marshal fingerprint password callbacks on EDT --- .../fingerprint/impl/InternalCallback.java | 40 +++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/common/src/main/java/com/codename1/fingerprint/impl/InternalCallback.java b/common/src/main/java/com/codename1/fingerprint/impl/InternalCallback.java index 270e313..faba0c1 100644 --- a/common/src/main/java/com/codename1/fingerprint/impl/InternalCallback.java +++ b/common/src/main/java/com/codename1/fingerprint/impl/InternalCallback.java @@ -121,7 +121,11 @@ public static void requestSuccess(int requestId, String value) { } requests.remove(requestId); if (!req.isDone()) { - req.complete(value); + Display.getInstance().callSerially(() -> { + if (!req.isDone()) { + req.complete(value); + } + }); } } @@ -132,11 +136,15 @@ public static void requestError(int requestId, String message) { } requests.remove(requestId); if (!req.isDone()) { - if ("__CANCELLED__".equals(message)) { - req.cancel(true); - } else { - req.error(new RuntimeException(message)); - } + Display.getInstance().callSerially(() -> { + if (!req.isDone()) { + if ("__CANCELLED__".equals(message)) { + req.cancel(true); + } else { + req.error(new RuntimeException(message)); + } + } + }); } } @@ -147,11 +155,15 @@ public static void requestKeyRevokedError(int requestId, String message) { } requests.remove(requestId); if (!req.isDone()) { - if ("__CANCELLED__".equals(message)) { - req.cancel(true); - } else { - req.error(new KeyRevokedException(message)); - } + Display.getInstance().callSerially(() -> { + if (!req.isDone()) { + if ("__CANCELLED__".equals(message)) { + req.cancel(true); + } else { + req.error(new KeyRevokedException(message)); + } + } + }); } } @@ -162,7 +174,11 @@ public static void requestComplete(int requestId, boolean success) { } requests.remove(requestId); if (!req.isDone()) { - req.complete(success); + Display.getInstance().callSerially(() -> { + if (!req.isDone()) { + req.complete(success); + } + }); } } }