#10920 closed enhancement (fixed)
[patch] Stop image thumbnail loading if thumbnails are not shown
| Reported by: | holgermappt | Owned by: | bastiK |
|---|---|---|---|
| Priority: | minor | Milestone: | 15.01 |
| Component: | Core image mapping | Version: | |
| Keywords: | Cc: | bastiK |
Description (last modified by )
Here is a patch that adds the function stopLoadThumbs() that stops geo image thumbnail loading if thumbnails are not needed anymore. The thumbnail load is continued the next time loadThumbs() is called. The JOSM revision needs to be inserted for function stopLoadThumbs() (@since tbd).
Please review the thread synchronization, my experience in that area is limited. I think a new thumbnail loader should wait if another loader is still running, but such an implementation might be too complicated compared to the actual problem.
One corner case is a sequence of setUseThumbs(true); setUseThumbs(false); setUseThumbs(true); .... That would start multiple threads, each thread with a new ThumbsLoader instance. They potentially all work on the same image in parallel. Most of the loaders will stop after they processed one file.
An other corner case is a layer merge while thumbnails are loaded. The thumbnail loaders are stopped on both layers in that case. thumbsLoaded will be false in that case and the next paint() will continue to load thumbnails if useThumbs is true.
The patch originates from ticket:10854.
Attachments (1)
Change History (8)
comment:1 by , 11 years ago
| Summary: | Stop image thumbnail loading if thumbnails are not shown → [patch] Stop image thumbnail loading if thumbnails are not shown |
|---|
by , 11 years ago
| Attachment: | GeoImageLayer_stopLoadThumbs.patch added |
|---|
comment:2 by , 11 years ago
| Description: | modified (diff) |
|---|
comment:3 by , 11 years ago
| Cc: | added |
|---|
@bastiK: do you want to look at this one since it's related to #10854?
comment:4 by , 11 years ago
| Owner: | changed from to |
|---|
comment:6 by , 11 years ago
I think you code would have worked without problems, as it is unusual to enable and disable thumbs loading in fast succession.
Nevertheless, I used ExecutorService to avoid having multiple background threads running at the same time. In addition, I moved the ThumbsLoader.done flag to GeoImageLayer.thumbsLoaded because it seems simpler to me (previously, the latter was set to true while the loading is still in progress).
comment:7 by , 11 years ago
| Milestone: | → 15.01 |
|---|



Patch file for this ticket