[webkit-qt] Reason why webkit does not display graphics from some external Qt plugins
Benjamin Poulain
benjamin.poulain at nokia.com
Mon Nov 8 08:25:09 PST 2010
Hello,
On 11/06/2010 03:30 PM, ext Harri Pasanen wrote:
> After some debugging of webkit internals, I found out that if the external Qt
> plugin does not support Size option, the following code in ImageDecoderQt.cpp
> fails it:
>
> void ImageDecoderQt::internalDecodeSize()
> {
> ASSERT(m_reader);
>
> // If we have a QSize() something failed
> QSize size = m_reader->size();
> if (size.isEmpty()) {
> setFailed();
> return clearPointers();
> }
>
> setSize(size.width(), size.height());
> }
>
> Note that image plugins are not required to provide support for Size option,
> so this seems a bit harsh - but perhaps this is important for performance?
I created a bug report for it: https://bugs.webkit.org/show_bug.cgi?id=49178
It looks like the change was introduced as a smart way to detect errors
early. The real problem is the interface QImageIOHandler which has no
effective way to report errors.
Checking the size there is a way to detect early if there was problems
when reading the headers.
I believe you could work around the issue without too much impact on
performance. Reporting the failure will only be slightly delayed.
Do you plan to work to patch the problem?
Do not forget to change ImageDecoderQt::isSizeAvailable() to avoid
infinite loop. A test case would be more than welcome if you change this
behavior.
cheers,
Benjamin
More information about the webkit-qt
mailing list