[webkit-qt] Qtwebkit 5.212 setuserstylesheet() is taking 7seconds time first time on startup
Ramakanth Kesireddy
rama.kesi at gmail.com
Mon Dec 28 03:53:03 PST 2020
Hello Konstantin,
Can you please let me know if there is any cmake config option to remove
the dependency on fontconfig while configuring Qtwebkit?
Thanks and Regards,
Ramakanth
On Sun, 20 Dec, 2020, 15:30 Ramakanth Kesireddy, <rama.kesi at gmail.com>
wrote:
> Hello Konstantin,
>
> Here is the sample app where the delay is reproduced even on Ubuntu 16.04
> desktop.
> user.css and png files are to be placed in /usr/share/images directory in
> the filesystem.
>
> home at ubuntu:~/Project/thread_QtApp$ sudo ./thread_QtApp
> Elapse time for QWebView creation 0
> Elapse time for m_webView->page() 42722
> Elapse time for setUserStyleSheetUrl 0
> Elapse time for installEventFilter 0
> width: 640 height: 480
> Elapse time for setHtml() 61
> UiAppInstance::createUserInterface <<<
> QEventLoop: Cannot be used without QApplication
>
> It shall create fontconfig cache files for the first time in
> /var/cache/fontconfig which is causing delay for the first time.
> This issue can be reproduced always when fontconfig caches are deleted.
>
> On further debugs in the Qtwebkit sources, it gets stuck in the below
> highlighted one.
>
> QWebSettings::QWebSettings()
> : d(new QWebSettingsPrivate)
> {
> // Initialize our global defaults
> d->fontSizes.insert(QWebSettings::MinimumFontSize, 0);
> d->fontSizes.insert(QWebSettings::MinimumLogicalFontSize, 0);
> d->fontSizes.insert(QWebSettings::DefaultFontSize, 16);
> d->fontSizes.insert(QWebSettings::DefaultFixedFontSize, 13);
> QFont defaultFont;
> defaultFont.setStyleHint(QFont::Serif);
> d->fontFamilies.insert(QWebSettings::StandardFont,
> defaultFont.defaultFamily());
> d->fontFamilies.insert(QWebSettings::SerifFont,
> defaultFont.defaultFamily());
> ...
> ...
> }
>
> As mentioned in the
> https://github.com/qtwebkit/qtwebkit/wiki/Building-QtWebKit-on-Linux,
> fontconfig is an optional dependency.
>
> Could you please let me know if there is any cmake option to remove
> fontconfig dependency in the qtwebkit configuration or any
> other thoughts ?
>
> The same issue is being reproduced in the UIApp on target as mentioned in
> the qtwebkit issue https://github.com/qtwebkit/qtwebkit/issues/1039
>
> Appreciate your kind suggestions in this regard.
>
> Thanks and Regards,
> Ramakanth
>
> On Fri, Dec 4, 2020 at 11:36 PM Konstantin Tokarev <annulen at yandex.ru>
> wrote:
>
>>
>>
>> 04.12.2020, 10:36, "Ramakanth Kesireddy" <rama.kesi at gmail.com>:
>> > Hello Konstantin,
>> >
>> > Thanks for the details.
>> >
>> > Also the same UiApp setuserstylesheet codes work for Qt 4.8 based
>> QtWebKit 2.3.4 without any delay first time.
>> > Do you think of any potential changes in QtWebkit 5.212 Alpha4 that
>> could cause the first time load issue of user stylesheet?
>>
>> First, is "delay" you are talking about equal to execution time of
>> setUserStyleSheet? You can measure it simply by putting QElapsedTimer
>> before call and printing its value afterwards.
>>
>> My first guess about this "delay" is that it is caused by complex layout
>> computation. However it's hard to guess why 4.8 behavior is different
>> without profiling.
>> Did you try to do any profiling of what happens inside setUserStyleSheet?
>> Does execution time of setUserStyleSheet depend on page or stylesheet you
>> are trying to load?
>>
>> >
>> > Best Regards,
>> > Ramakanth
>> >
>> > On Thu, Dec 3, 2020 at 10:26 PM Konstantin Tokarev <annulen at yandex.ru>
>> wrote:
>> >> 03.12.2020, 19:40, "Ramakanth Kesireddy" <rama.kesi at gmail.com>:
>> >>> Ok Thanks for your mail.Shall check and update further.
>> >>> Is it by design QWebSettings is not thread safe or any means to make
>> thread safe?
>> >>
>> >> WebCore by design is not thread safe. QWebView and all other classes
>> from QtWebKitWidgets module use WebCore directly and so aren't thread safe
>> too. You must call them from the same thread QWebView was created (and it
>> should better be main GUI thread, i.e. where QApplication is created).
>> >>
>> >> For comparison, QML API uses multi-process architecture so WebCore is
>> used in a background process and minimizes blocking of GUI process (i.e.
>> your application). Though that API is still not thread safe respective to
>> threads in GUI process (though it might be reentrant).
>> >>
>> >> --
>> >> Regards,
>> >> Konstantin
>>
>>
>> --
>> Regards,
>> Konstantin
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-qt/attachments/20201228/7b42cca5/attachment.htm>
More information about the webkit-qt
mailing list