I just took two short videos and four photos on the phone. When I look at the events page in the gallery app, I see thumbnails for the these just fine. I'm also tracing the requests that are made to the thumbnailer. When I tap on one of the photos, I see the following requests fired at the thumbnailer all at once (within one or two tenths of a second):
Create thumbnail for "/home/phablet/Pictures/com.ubuntu.camera/image20150602_073643136.jpg" at size QSize(216, 216)
Create thumbnail for "/home/phablet/Pictures/com.ubuntu.camera/image20150602_073643136.jpg" at size QSize(216, -1)
Create thumbnail for "/home/phablet/Pictures/com.ubuntu.camera/image20150602_073643136.jpg" at size QSize(231, 0)
Create thumbnail for "/home/phablet/Pictures/com.ubuntu.camera/image20150602_073643136.jpg" at size QSize(256, 0)
Create thumbnail for "/home/phablet/Pictures/com.ubuntu.camera/image20150602_073643136.jpg" at size QSize(291, 0)
Create thumbnail for "/home/phablet/Pictures/com.ubuntu.camera/image20150602_073643136.jpg" at size QSize(341, 0)
Create thumbnail for "/home/phablet/Pictures/com.ubuntu.camera/image20150602_073643136.jpg" at size QSize(402, 0)
Create thumbnail for "/home/phablet/Pictures/com.ubuntu.camera/image20150602_073643136.jpg" at size QSize(477, 0)
Create thumbnail for "/home/phablet/Pictures/com.ubuntu.camera/image20150602_073643136.jpg" at size QSize(558, 0)
Create thumbnail for "/home/phablet/Pictures/com.ubuntu.camera/image20150602_073643136.jpg" at size QSize(657, 0)
Create thumbnail for "/home/phablet/Pictures/com.ubuntu.camera/image20150602_073643136.jpg" at size QSize(768, 0)
Create thumbnail for "/home/phablet/Pictures/com.ubuntu.camera/image20150602_073643136.jpg" at size QSize(768, 1222)
This is horribly wasteful because the app retrieves the same image a dozen times. But, worse, we will cache thumbnailer in twelve different sizes for that same single image because we are being asked for a different size each time.
Also note that requests with width or height < 0 are interpreted to mean "as large as possible". The second request above consequently causes the image to be cached in its full size (unless it's larger than 1920, in which case we limit it to 1920x1920 bounding box).
Something seems definitely wrong here. The multiple requests are wasteful, and the different sizes mean that the cache is far less effective than it could be.
These requests would have come from an Image component that sets sourceSize. And given the progression of sizes, it sounds like the sourceSize is being altered as part of a transition animation.
With the new thumbnail cache, that is going to lead to the image being re-loaded over and over as well as filling up the cache with images that are unlikely to be requested again (since another run of the transition might end up picking different points).
Ideally you'd keep sourceSize static, so the thumbnail is loaded once, and then the intermediate images are handled on the OpenGL side.