#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 , 10 years ago
Summary: | Stop image thumbnail loading if thumbnails are not shown → [patch] Stop image thumbnail loading if thumbnails are not shown |
---|
by , 10 years ago
Attachment: | GeoImageLayer_stopLoadThumbs.patch added |
---|
comment:2 by , 10 years ago
Description: | modified (diff) |
---|
comment:3 by , 10 years ago
Cc: | added |
---|
@bastiK: do you want to look at this one since it's related to #10854?
comment:4 by , 10 years ago
Owner: | changed from | to
---|
comment:6 by , 10 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 , 10 years ago
Milestone: | → 15.01 |
---|
Patch file for this ticket