From 979600aafff02a83172dad80136debc54684b477 Mon Sep 17 00:00:00 2001 From: ralph isenmann Date: Thu, 8 Jul 2021 13:33:16 +0200 Subject: [client] fix blocking of dozmod during the finale state of a image download The current thread in DownloadPanel.update() already has a lock on listeners (see TransferTask.fireEvent(..)). super.update() tiggers an update of the GUI (awt-thread) in which a synchronized block on listeners is also entered, which results in blocking. Now, in the case event.state == FINISHED, we want to enable the button, which is is done in an awt-thread, which is already blocking. --- .../src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java index bdf128e4..a25bd661 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java @@ -56,10 +56,13 @@ public class DownloadPanel extends TransferPanel implements ActionListener, Quit @Override public void update(final TransferEvent event) { - super.update(event); + // NOTE: the update needs to be done in this order + // first enable button than update super class, + // else we will trap in a dead lock. if (event.state == TransferState.FINISHED) { btnOpenFolder.setEnabled(true); } + super.update(event); } @Override -- cgit v1.2.3-55-g7522