Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 7982)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 7983)
@@ -37,4 +37,5 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
 
 import javax.swing.Action;
@@ -66,4 +67,5 @@
 import org.openstreetmap.josm.gui.layer.JumpToMarkerActions.JumpToPreviousMarker;
 import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ExifReader;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -77,5 +79,4 @@
 import com.drew.metadata.exif.ExifIFD0Directory;
 import com.drew.metadata.exif.GpsDirectory;
-import java.util.concurrent.ThreadFactory;
 
 /**
@@ -388,8 +389,5 @@
         l.stopLoadThumbs();
 
-        ImageEntry selected = null;
-        if (l.currentPhoto >= 0) {
-            selected = l.data.get(l.currentPhoto);
-        }
+        final ImageEntry selected = l.currentPhoto >= 0 ? l.data.get(l.currentPhoto) : null;
 
         data.addAll(l.data);
@@ -410,12 +408,17 @@
         }
 
-        if (selected != null) {
-            for (int i = 0; i < data.size() ; i++) {
-                if (data.get(i) == selected) {
-                    currentPhoto = i;
-                    ImageViewerDialog.showImage(GeoImageLayer.this, data.get(i));
-                    break;
-                }
-            }
+        if (selected != null && !data.isEmpty()) {
+            GuiHelper.runInEDTAndWait(new Runnable() {
+                @Override
+                public void run() {
+                    for (int i = 0; i < data.size() ; i++) {
+                        if (selected.equals(data.get(i))) {
+                            currentPhoto = i;
+                            ImageViewerDialog.showImage(GeoImageLayer.this, data.get(i));
+                            break;
+                        }
+                    }
+                }
+            });
         }
 
@@ -1044,5 +1047,5 @@
     /**
      * Stop to load thumbnails.
-     * 
+     *
      * Can be called at any time to make sure that the
      * thumbnail loader is stopped.
@@ -1057,5 +1060,5 @@
     /**
      * Called to signal that the loading of thumbnails has finished.
-     * 
+     *
      * Usually called from {@link ThumbsLoader} in another thread.
      */
