← Back to team overview

touch-packages team mailing list archive

[Bug 1467740] Re: Lots of thumbnail requests with invalid size

 

I think this is actually on the Unity8 side rather than unity-scopes-
shell.

The result cards are generated by CardCreator.js, which uses a
CroppedImageMinimumSourceSize component to display the result art:

http://bazaar.launchpad.net/~unity-
team/unity8/trunk/view/head:/plugins/Dash/CardCreator.js#L101

This component is implemented in QML but delegates finding the size of
the image to the C++ component CroppedImageSizer

http://bazaar.launchpad.net/~unity-
team/unity8/trunk/view/head:/plugins/Dash/CroppedImageMinimumSourceSize.qml

That class uses QNetworkAccessManager to try and get the file contents
and uses a helper class to manage the response:

http://bazaar.launchpad.net/~unity-
team/unity8/trunk/view/head:/plugins/Dash/croppedimagesizer.cpp#L102

That helper tries to read the returned data via QImageReader and passes
the image size back to CroppedImageSizer:

http://bazaar.launchpad.net/~unity-
team/unity8/trunk/view/head:/plugins/Dash/croppedimagesizerasyncworker.cpp#L58

If the worker provides a non-empty size, CroppedImageSizer then uses
that size information to pick a sourceSize value that will result in the
image being loaded at the correct size so it only has to be cropped in
at most one dimension to fit.  If an empty (or invalid) size is
provided, it sets sourceSize to (0, 0):

http://bazaar.launchpad.net/~unity-
team/unity8/trunk/view/head:/plugins/Dash/croppedimagesizer.cpp#L118

This causes a problem for the thumbnailer because QNetworkAccessManager
has no idea how to deal with image:// URIs, so we get an invalid QSize
from the worker and use a sourceSize of (0, 0).  Perhaps it should just
use the requested dimensions in this case instead.  It doesn't look like
there is a way to handle this crop mode properly with
QQuickImageProvider.

** Package changed: unity-scopes-shell (Ubuntu) => unity8 (Ubuntu)

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to thumbnailer in Ubuntu.
https://bugs.launchpad.net/bugs/1467740

Title:
  Lots of thumbnail requests with invalid size

Status in thumbnailer package in Ubuntu:
  New
Status in unity8 package in Ubuntu:
  New

Bug description:
  When using scopes, the thumbnailer gets loads of requests with
  QSize(-1,-1) from the shell. For example, with a bunch of videos
  recorded, run up the video scope and go to "My Videos". The shell asks
  for a thumbnail at QSize(-1,-1) for the tiny thumbnail that appears to
  the left of each list entry.

  The problem with this is that the thumbnailer interprets this to mean
  "give me the largest size you can (limited to a 1920x1920 bounding
  box). That's very expensive, especially in terms of disk space,
  because that 1920 "thumbnail" ends up going into the cache, needlessly
  hogging space.

  We are about to add a qWarning message to the QML side that reports
  invalid QSize requests. For now, we are going to retain the old
  behavior, but this will turn into an error soon.

  The most effective way to use the thumbnailer is to simply ask for an
  image in the desired size, with neither width nor height of -1. The
  thumbnailer will efficiently produce a thumbnail for that. (We do lots
  of internal caching to avoid extracting or downloading a thumbnail
  unnecessarily.)

  The thumbnailer may deliver a thumbnail that is smaller than what was
  asked for (because it never up-scales) so, if asked for a thumbnail of
  size 256, it's guaranteed not to be larger, but might be smaller (if
  the original image is smaller than what was asked for).

  Could you please adjust the shell behavior to ask for specific, valid
  sizes only?

  Running a tail -f on ~/.cache/upstart/dbus.log allows you to see the
  requests as they are made. Each request shows the size that was asked
  for.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/thumbnailer/+bug/1467740/+subscriptions


References