On quinta-feira, 12 de abril de 2012 08.17.37, [email protected] wrote:
> Hi,
>
> I'd like to get https://codereview.qt-project.org/#change,22151,patchset=5
> into 5.0/api_changes branch. It's one more change to the logging framework,
> specifically to the signature of QMessageHandler (new in 5.0, old
> QtMsgHandler is unchanged):
>
> void (*QMessageHandler)(QtMsgType, const QMessageLogContext &, const char
> *);
>
> becomes
>
> void (*QMessageHandler)(QtMsgType, const QMessageLogContext &, const QString
> &);

Maybe QChar *begin, int len?

Or QChar *begin, guaranteed to be NUL-terminated?

> The reason is to avoid unnecessary string conversions, especially on
> Windows. E.g.
>
> qDebug() << "Hello World";
>
> will right now result in
>
> const char * -> QString conversion in QDebug::operator(const char *)
> (QString::fromAscii(), shouldn't this be QString::fromLatin1() btw?)

fromAscii() was correct in the sense of "from whatever the user used in
developing source code".

> QString -> const char * conversion in QDebug::~QDebug()
> (QString::toLocal8Bit())
> const char *-> QByteArray conversion in
> qMessageFormatString() for the default message handler a QByteArray ->
> QString conversion in qWinMessageHandler() (QString::fromLocal8Bit)
>
> So we're converting from latin1 to utf16 to local8bit to utf16 :) The patch
> mitigates this somewhat by passing const QString & as argument to the
> message handler, instead of const char *.

I support this.

The message handler is new API and this change is not changing compatibility
with Qt 4.

I assume you will do a final UTF16-to-local8bit if the user installed a legacy
8-bit message handler.

> Note that QtDeclarative right now installs a message handler with the const
> char * signature. That means if the patch is accepted, we'd need to
> synchronize the qtbase with a qtdeclarative update.

You can keep a temporary compatibility code in QtCore for the time being, with
both signatures, and apply the conversion. Once qtdeclarative moves over, you
can remove the old one.

--
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
     Intel Sweden AB - Registration Number: 556189-6027
     Knarrarnäsgatan 15, 164 40 Kista, Stockholm, Sweden

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to