Ignore:
Timestamp:
2021-07-10T21:39:01+02:00 (3 years ago)
Author:
Don-vip
Message:

fix #21016 - ColorfulFilter not applied to empty tiles (patch by Bjoeni)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java

    r17880 r17983  
    3232import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
    3333import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings.FilterChangeListener;
     34import org.openstreetmap.josm.gui.util.GuiHelper;
    3435import org.openstreetmap.josm.spi.preferences.Config;
    3536import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
     
    101102    /** Show a background for the error text (may be hard on eyes) */
    102103    private static final BooleanProperty ERROR_MESSAGE_BACKGROUND = new BooleanProperty("geoimage.message.error.background", false);
     104
     105    private updateImageThread updateImageThreadInstance;
     106
     107    private class updateImageThread extends Thread {
     108        private boolean restart;
     109
     110        @Override
     111        public void run() {
     112            updateProcessedImage();
     113            if (restart) {
     114                restart = false;
     115                run();
     116            }
     117        }
     118
     119        public void restart() {
     120            restart = true;
     121            if (!isAlive()) {
     122                restart = false;
     123                updateImageThreadInstance = new updateImageThread();
     124                updateImageThreadInstance.start();
     125            }
     126        }
     127    }
    103128
    104129    @Override
     
    651676    @Override
    652677    public void filterChanged() {
    653         updateProcessedImage();
    654         repaint();
     678        if (updateImageThreadInstance != null) {
     679            updateImageThreadInstance.restart();
     680        } else {
     681            updateImageThreadInstance = new updateImageThread();
     682            updateImageThreadInstance.start();
     683        }
    655684    }
    656685
    657686    private void updateProcessedImage() {
    658687        processedImage = image == null ? null : imageProcessor.process(image);
     688        GuiHelper.runInEDT(() -> repaint());
    659689    }
    660690
Note: See TracChangeset for help on using the changeset viewer.