Author Topic: Qt6 Application Testing  (Read 326800 times)

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2433
  • Karma: +185/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #765 on: January 19, 2025, 04:12:53 am »
Thanks Paul. I'm seeing some instability with Dooble on this one (for example - any Github page causes a silent exit), although the examples seem to work OK. One thing I noticed - the dates on the WebEngine files are about a month later than the ones i have from the last 6.2.10 and one file (\resources\icudtl.dat) is about 6 months later and a good bit larger. Decided to replace the WebEngine files with the ones from 6.2.10 and now it seems stability has returned, but I will test some more...

PS - that poppl133.dll file took care of the plugin error on Scribus - thanks! Renderframes doesn't work in 1.4.6 either because it depends on separate packages that are not ported to OS/2 - so no go with that. Still chasing the Unicode error...

Re: webengine and 6.2.11 - potentially I rebuild webengine AFTER I imaged the drive.... the only thing I remember doing is rebuilding it with system ICU - which didn't appear to make any differences...

re: the unicode error - I think it's packaging... looking at the code, it's looking for unicodenameslist.txt
Code: [Select]
UnicodeSearchModel::UnicodeSearchModel(QObject * /*parent*/)
{
setObjectName("UnicodeSearchModel");

QFile file(ScPaths::instance().shareDir() + "unicodenameslist.txt");
if (file.open( QIODevice::ReadOnly ) )
{
QStringList list = QString(file.readAll()).split('\n', Qt::SkipEmptyParts);
file.close();

QStringList line;
UnicodeStruct uni;
for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
{
line = (*it).split(':', Qt::SkipEmptyParts);
uni.description = line[1].toLower();
uni.hex = line[0];
m_unicode.append(uni);
}
}
else
qDebug("UnicodeSearchModel: error reading unicodes!");
}

I suspect it's looking in the wrong spot...

Yep... move unicodenameslist.txt from \scribus\share\scribus\unicodenameslist.txt to \scribus\share
« Last Edit: January 19, 2025, 04:16:16 am by Paul Smedley »

Rich Walsh

  • Sr. Member
  • ****
  • Posts: 393
  • Karma: +28/-0
  • ONU! (OS/2 is NOT Unix!)
    • View Profile
Re: Qt6 Application Testing
« Reply #766 on: January 19, 2025, 04:27:48 am »
Re: webengine and 6.2.11 - potentially I rebuild webengine AFTER I imaged the drive.... the only thing I remember doing is rebuilding it with system ICU - which didn't appear to make any differences...

It seems that it did make a difference:  the 'Qt6WebEn.dll' in the latest drop wants 'icuuc69.dll' and 'icuin69.dll'. The previous version didn't want either of these files, numbered or unnumbered.

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2433
  • Karma: +185/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #767 on: January 19, 2025, 04:42:43 am »
Re: webengine and 6.2.11 - potentially I rebuild webengine AFTER I imaged the drive.... the only thing I remember doing is rebuilding it with system ICU - which didn't appear to make any differences...

It seems that it did make a difference:  the 'Qt6WebEn.dll' in the latest drop wants 'icuuc69.dll' and 'icuin69.dll'. The previous version didn't want either of these files, numbered or unnumbered.

OK then, it's the opposite case.... if it's looking for icuuc69.dll and icuin69.dll then that's system ICU...

For now - copy lib\Qt6WebEn.dll from the older package over the top of this one.... there's no functional changes to the webengine in some time....
« Last Edit: January 19, 2025, 05:10:38 am by Paul Smedley »

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2433
  • Karma: +185/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #768 on: January 19, 2025, 05:08:41 am »
Yep... move unicodenameslist.txt from \scribus\share\scribus\unicodenameslist.txt to \scribus\share
OK found the scribus bug causing this.... I guess maybe win32 doesn't use cmake install for packaging....

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2433
  • Karma: +185/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #769 on: January 19, 2025, 07:13:11 am »
ok https://smedley.id.au/tmp/qt6-6.2.11-qtwebengine-6.2.6-os2-20250119.zip is refreshed with a qt6weben.dll that doesn't depend on system icu....

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2433
  • Karma: +185/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #770 on: January 19, 2025, 08:08:21 am »
Yep... move unicodenameslist.txt from \scribus\share\scribus\unicodenameslist.txt to \scribus\share
OK found the scribus bug causing this.... I guess maybe win32 doesn't use cmake install for packaging....

https://smedley.id.au/tmp/scribus-1.7.0svn-os2-qt6-6.8.x-20250119.zip fixes some packaging issues....

Remy

  • Hero Member
  • *****
  • Posts: 804
  • Karma: +14/-1
    • View Profile
Re: Qt6 Application Testing
« Reply #771 on: January 19, 2025, 03:55:57 pm »
Info: Since adding qt webengine parameter  " --disable-highres-timer" into my starting process, I could remove my priority setting and have a working dooble with QT6.2.10  (faster youtube start and more stable during video change)
Current parameter I'm using:
"--disable-gpu --ignore-certificate-errors --ignore-ssl-errors --log-level=1 --disable-highres-timer"
And into config.sys
set NSPR_OS2_NO_HIRES_TIMER=1
« Last Edit: January 19, 2025, 04:00:12 pm by Remy »

David McKenna

  • Hero Member
  • *****
  • Posts: 861
  • Karma: +29/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #772 on: January 19, 2025, 04:03:04 pm »
Thanks Paul, this QT 6.2.11 is working with Dooble as well as 6.2.10 now. Scribus is much better too - only thing I see is on the File->Preferences->Plugins page all the plugins are listed like: 'C:/Programs/Scribus6.8/plugins//barecodeg.dll' - there is a double '//' at the end of the path, and 'How to Run' is blank and 'Type' is 'unknown'. Maybe just cosmetic.

Regards,
« Last Edit: January 19, 2025, 04:58:23 pm by David McKenna »

David McKenna

  • Hero Member
  • *****
  • Posts: 861
  • Karma: +29/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #773 on: January 19, 2025, 06:47:25 pm »
 Paul,

 A snowy winter day, so been doing some investigation of QT 6.8.1 to try to understand some of the problems it has. One thing I did is compare the names of DLL's in QT 6.2.11 with the ones in 6.8.1 and found some discrepancies.

 In the \lib directory, there are 3 files missing from 6.8 that are found in 6.2: Qt6NetAu.dll, Qt6PosQk.dll, and QtQmlCoe.dll. Probably their names were changed somehow in the latest build - there is a posquick.dll and Qt6QmCoe.dll in 6.8 I believe are the equivalent for QtPosQk.dll and QtQmlCoe.dll. Can't find an equivalent for Qt6NetAu.dll in 6.8.

 In the \qml directory there are several name changes in 6.8.1 from 6.2.11:
\QtCore\QtQmlCoe.dll in 6.2 is Qt6QmCoe.dll in 6.8
\QtPositioning\Qt6PosQk.dll in 6.2 is posquick.dll in 6.8
\QtQml\qmlplugn.dll in 6.2 is qml.dll in 6.8
\QtQml\Base\ directory does not exist in 6.2 or 6.8, but does exist in 6.6
\QtWebchannel\Webchann.dll in 6.2 is Qt6WebCQ.dll in 6.8

 I would think these kind of changes might be why some apps compiled for 6.2 fail if run in 6.8.

 On top of that, there are some qmldir files missing the 'plugin' or 'optional plugin' directive in the \qml directory in 6.8, and the strange addition of another 'QML' directory there which just doesn't look right to me. Most of the qmldir files with missing directives are in new directories not found in 6.2. They are:

\qml\qml\qmldir - calls out a plugin 'qmlplugn', but no DLL is in the directory.
\qml\test\controls\qmldir - missing a 'plugin' directive
\qml\QtNetwork\qmldir - missing a 'plugin' directive.
\qml\QtQml\qmldir - missing a 'plugin' directive
\qml\QtQuick\Controls\FluentWinUI3\qmldir - missing a 'plugin' directive
\qml\QtQuick\Controls\FluentWinUI3\impl\qmldir - missing a 'plugin' directive

  I tried adding the directives manually, and it seemed to help the examples a little bit, but still get the 'stack overflow' error. The missing DLL in \qml\qml bothers me the most - it seems out of place and I don't have the DLL qmldir wants...

FWIW

Regards,
« Last Edit: January 19, 2025, 09:05:42 pm by David McKenna »

Remy

  • Hero Member
  • *****
  • Posts: 804
  • Karma: +14/-1
    • View Profile
Re: Qt6 Application Testing
« Reply #774 on: January 19, 2025, 11:43:39 pm »
Hi Paul,

It looks like disabling hires timer makes QTwebengine more stable.
Could it be possible a problem exist into C++ about hires timer ?  (under windows, they had to increase precision)

Thanks and Regards
Rémy

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2433
  • Karma: +185/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #775 on: January 20, 2025, 08:11:58 am »
It looks like disabling hires timer makes QTwebengine more stable.
Could it be possible a problem exist into C++ about hires timer ?  (under windows, they had to increase precision)

https://github.com/psmedley/qt6-webengine-os2/blob/main/src/3rdparty/chromium/base/base_switches.cc#L120

This switch is doing nothing on OS/2.

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2433
  • Karma: +185/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #776 on: January 20, 2025, 09:05:12 am »
Hi Dave!
A snowy winter day, so been doing some investigation of QT 6.8.1 to try to understand some of the problems it has. One thing I did is compare the names of DLL's in QT 6.2.11 with the ones in 6.8.1 and found some discrepancies.
What is this snow thing you speak of? Is it that thing we see here on Christmas cards?

In the \lib directory, there are 3 files missing from 6.8 that are found in 6.2: Qt6NetAu.dll, Qt6PosQk.dll, and QtQmlCoe.dll. Probably their names were changed somehow in the latest build - there is a posquick.dll and Qt6QmCoe.dll in 6.8 I believe are the equivalent for QtPosQk.dll and QtQmlCoe.dll. Can't find an equivalent for Qt6NetAu.dll in 6.8.
1st one is simple - I haven't built qtnetworkauth for 6.8.1
2nd one is interesting... I had uncommited changes to define OS2_SHORT_NAME in 6.2.x then in 6.8.x chose different names <sigh> will fill now.
3rd one is even more interesting.... OS2_SHORT_NAME is defined in 6.2.x (https://github.com/psmedley/qt6-declarative-os2/blob/main/src/core/CMakeLists.txt#L18) but for reasons I don't recall right now (or it was a typo) I changed it in 6.8.x (https://github.com/psmedley/qt6-declarative-os2/blob/6.8.x/src/core/CMakeLists.txt#L23) - actually looks I messed it up in 6.5.x

In the \qml directory there are several name changes in 6.8.1 from 6.2.11:
\QtCore\QtQmlCoe.dll in 6.2 is Qt6QmCoe.dll in 6.8
\QtPositioning\Qt6PosQk.dll in 6.2 is posquick.dll in 6.8
\QtQml\qmlplugn.dll in 6.2 is qml.dll in 6.8
\QtQml\Base\ directory does not exist in 6.2 or 6.8, but does exist in 6.6
\QtWebchannel\Webchann.dll in 6.2 is Qt6WebCQ.dll in 6.8
A couple of these are explained above, qmlplugn.dll vs qml.dll reminds me of some stuff experimenting with qtdeclarative a ways back - I suspect some 'drift' between 6.2 and 6.5 - and 6.8 is based on 6.5

This could definitely explain why some apps that use qml and were build against older Qt don't work. Leave it with me to investigate....

On top of that, there are some qmldir files missing the 'plugin' or 'optional plugin' directive in the \qml directory in 6.8, and the strange addition of another 'QML' directory there which just doesn't look right to me. Most of the qmldir files with missing directives are in new directories not found in 6.2. They are:

I have no real clues about this....

Really appreciate this analysis, I think it should hopefully help speed up some fixes....
« Last Edit: January 20, 2025, 09:13:18 am by Paul Smedley »

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2433
  • Karma: +185/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #777 on: January 20, 2025, 09:16:53 am »
OK re: qmlplugn.dll

Qt 6.2.x had: https://github.com/psmedley/qt6-declarative-os2/blob/main/src/qml/CMakeLists.txt#L397 with 'PLUGIN_TARGET qmlplugin' and OS2_SHORT_NAME qmlplugn
In 6.8.x it seems that plugin is built in https://github.com/psmedley/qt6-declarative-os2/blob/6.8.x/src/qmlmeta/CMakeLists.txt#L36 which doesn't have OS2_SHORT_NAME defined...

hmmmm... testing a fix now...
« Last Edit: January 20, 2025, 09:19:06 am by Paul Smedley »

David McKenna

  • Hero Member
  • *****
  • Posts: 861
  • Karma: +29/-0
    • View Profile
Re: Qt6 Application Testing
« Reply #778 on: January 20, 2025, 02:36:58 pm »
 Hey Paul,

  There's enough snow here for a billion Christmas cards..

 Glad to be able to do something useful to help get QT 6 the best it can be.

 One thing about qmlplugn.dll: In QT 6.2, it exists in the \qml\QtQml directory, in QT 6.6, it exists in the directory \qml\QtQml\Base but in 6.8 it is called out (but doesn't exist) in directory \qml\QML. Something strange going on about what directory it should live in.

 Version 6.6 has a 'qmlmeta.dll in \qml\QtQml, but neither 6.2 nor 6.8 have that file. Version 6.8 has a 'qml.dll' in\qml\QtQml but neither 6.2 nor 6.6 have that file...

Regards,
« Last Edit: January 20, 2025, 02:57:03 pm by David McKenna »

Remy

  • Hero Member
  • *****
  • Posts: 804
  • Karma: +14/-1
    • View Profile
Re: Qt6 Application Testing
« Reply #779 on: January 20, 2025, 02:59:16 pm »
It looks like disabling hires timer makes QTwebengine more stable.
Could it be possible a problem exist into C++ about hires timer ?  (under windows, they had to increase precision)

https://github.com/psmedley/qt6-webengine-os2/blob/main/src/3rdparty/chromium/base/base_switches.cc#L120

This switch is doing nothing on OS/2.

Thanks.

Ok, read it.
I don't understand why when adding this switch, Dooble is more stable while it should have no effect but it has here !
(adding this switch, I'm able to use Dooble without setting priorities. Without it, I need to add priorities settings)
 
May it be possible this constant isn't well taken into some parts of the codes ?

Regards
Rémy