[Development] Qt 5.4 breaks binary compatibility on windows for builds using vs2010 and above

2015-01-12 Thread Gunnar Roth
Hi,

ms compiler uses access property of class methods for building the mangled name, so you should not change this between versions.



InQt5.4.0qt-srcqtbasesrccorelibkernelqmetatype.h:643

you find  this code

#ifndef Q_NO_TEMPLATE_FRIENDS
#ifndef Q_QDOC
  templatetypename T
  friend bool qRegisterSequentialConverter();
  templatetypename, bool friend struct QtPrivate::ValueTypeIsMetaType;
  templatetypename, typename friend struct QtPrivate::ConverterMemberFunction;
  templatetypename, typename friend struct QtPrivate::ConverterMemberFunctionOk;
  templatetypename, typename, typename friend struct QtPrivate::ConverterFunctor;
  templatetypename T
  friend bool qRegisterAssociativeConverter();
  templatetypename, bool friend struct QtPrivate::AssociativeValueTypeIsMetaType;
  templatetypename, bool friend struct QtPrivate::IsMetaTypePair;
  templatetypename, typename friend struct QtPrivate::MetaTypeSmartPointerHelper;
#endif
#else
public:
#endif
  static bool registerConverterFunction(const QtPrivate::AbstractConverterFunction *f, int from, int to);
  static void unregisterConverterFunction(int from, int to);



you can see public access depends onQ_NO_TEMPLATE_FRIENDS being defined.



if you look atQt5.3.2qt-srcqtbasesrccorelibglobalqcompilerdetection.h:88

you see

#elif defined(_MSC_VER)
# define Q_CC_MSVC
# define Q_CC_MSVC_NET
# define Q_OUTOFLINE_TEMPLATE inline
# define Q_NO_TEMPLATE_FRIENDS



soQ_NO_TEMPLATE_FRIENDS is defined for every ms compiler.



inQt5.4.0qt-srcqtbasesrccorelibglobalqcompilerdetection.h:80

you can see a change:

#elif defined(_MSC_VER)
# define Q_CC_MSVC (_MSC_VER)
# define Q_CC_MSVC_NET
# define Q_OUTOFLINE_TEMPLATE inline
# if _MSC_VER  1600
#  define Q_NO_TEMPLATE_FRIENDS
# endif



so in 5.4registerConverterFunction andunregisterConverterFunction arenow private when build with vs 2010 and above.



I have noticed that problem today with an own application ( build with qt before 5.4) where i get

The procedure entry point ?unregisterConverterFunction@QMetaType@@SAXHH@Z could not be located in the dynamic link library Qt5Core.dll.

when looking with depends.exe into the dll i cann only find a?unregisterConverterFunction@QMetaType@@CAXHH@Z ( note the S/C differnce).



making public etc. depend on a define is imho a very bad idea and now we have the result broken binary compatibility, something which i think is taken a lot care of to NOT happen in Qt.





Regards,

Gunnar




___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Adding new third party component three.js to Qt?

2015-01-12 Thread Kevin Kofler
Sorry for raining on your parade, but…

Keränen Pasi wrote:
 I¹d like to open the discussion on including the three library as part of
 Qt 5.6 and onwards. Mainly because this would give our users a better
 experience if we¹d bundle the right, tested version of Three.js together
 with the Qt version it was tested on.

… we distribution packagers REALLY hate bundled libraries…

 The library will for now at least need some porting effort to make it run
 on top of Canvas3D as there are some HTML depencencies that need to be
 handled, plus V4VM has a few quirks that need to be accounted for.
 Hopefully some of the V4VM quirks are bugs and will be fixed in due time,
 but the HTML dependencies do remain. And my current experience with
 graphics APIs is that you want to test the whole stack together. If we
 e.g. add support for new extensions in Canvas3D, that can activate new
 codepaths in Three.js that again need testing and possibly new Qt specific
 delta must be added to the three.js for those parts.

… and especially FORKED bundled libraries (where we stand no realistic 
chance of actually unbundling them).

Distributions really want to have one system version of a library, (for the 
reasons explained, e.g., under 
https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries ). (That said, 
for JavaScript stuff, at least in Fedora, we do not have a general, 
application-independent way of handling this issue yet, see: 
https://fedoraproject.org/wiki/Packaging:JavaScript .)

Kevin Kofler

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


[Development] QML: Event which triggers after document was fully loaded

2015-01-12 Thread Ruslan Moukhlynin

Hello all!
I'm working now at application which loads QML from a string and make 
screenshot of a window.
And I'm surprised that there is no event which triggers when document 
was completly loaded;

I talk about C++ part only.

The simple example:

QByteArray data(import QtQuick 2.3\n\
import QtQuick.Window 2.2\n\
\n\
Window {\n\
visible: true\n\
width: 360\n\
height: 360\n\
Text {\n\
anchors.centerIn: parent\n\
text: \Hello, world!\\n\
}\n\
}\n\);

QQmlApplicationEngine engine;
engine.loadData(data);
QQuickWindow *rootObject = qobject_castQQuickWindow 
*(engine.rootObjects().first());


connect(rootObject,QQuickWindow::afterRendering,[=] () {
QImage image = rootObject-grabWindow();
image.save(window.png,PNG,90);
});

The execution hungs up on grabWindow(). All other events from 
QQuickWindow also not works.


I was surpised again when tried to call grabWindow() from QML through 
singleton:


Window {

Component.onCompleted: someSingleton.makeScreenshot();

}

It makes the image but text was not centered. It says that document was 
not really completed yet! Or not?


So I came to conclusion that there is no way to know that a QML data was 
loaded.


/P.S. Sorry for asking this question in development mail list but I've 
asked it in all other places. It look that only Qt developers //can 
clarifythis question./
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


[Development] Heads up: removing deprecated QNX and BlackBerry mkspecs

2015-01-12 Thread Rafael Roquetto
Hi,

I just wanted to give you a heads up that the following deprecated mkspecs are
about to be removed:
- qnx-armv7le-qcc
- blackberry-armv7le-qcc
- blackberry-playbook-armv7le-qcc

Use {qnx,blackberry[-playbook]}-armle-v7-qcc instead.

Regards,
Rafael
-- 
Rafael Roquetto | rafael.roque...@kdab.com | Software Engineer
Klarälvdalens Datakonsult AB, a KDAB Group company
Tel. Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
KDAB - Qt Experts - Platform-independent software solutions


smime.p7s
Description: S/MIME cryptographic signature
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Qt 5.4 breaks binary compatibility on windows for builds using vs2010 and above

2015-01-12 Thread Thiago Macieira
On Monday 12 January 2015 16:23:19 Gunnar Roth wrote:
 divmaking public etc. depend on a define is imho a very bad idea and now
 we have the result broken binary compatibility, something which i think is
 taken a lot care of to NOT happen in Qt./div

Known and fixed issue.

https://codereview.qt-project.org/102419 → 
7393bb0af4c98cabef3138e4db60692e70d4c444
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development