Qt 5.3.1 is a bug-fix release. It maintains both forward and backward
compatibility (source and binary) with Qt 5.3.0.

For more details, refer to the online documentation included in this
distribution. The documentation is also available online:

  http://qt-project.org/doc/

The Qt version 5.3 series is binary compatible with the 5.2.x series.
Applications compiled for 5.2 will continue to run with 5.3.

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:

  http://bugreports.qt-project.org/

Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.

****************************************************************************
*                          Library                                         *
****************************************************************************

 - Use Q_NULLPTR for null pointer purposes with NULL fallback for Qt4.
 - The WinCE implementation is moved into its own separate module.
 - Disabled automatic header precompilation for QtSerialPort, since it is
   more expensive than the benefit.

 - QSerialPortInfo:
   * Added support for the VID/PID of PCI serial ports from the Sysfs backend.
   * Fixed mixed up vendor and product identifiers by using of Udev backend.

 - QSerialPort:
   * Added support of custom baud rate on QNX.
   * Improved the error handling.
   * QTimer is now used with zero interval to defer starting of writing on
     Windows to next event-loop entering. It allow to accumulate a multiple
     write() calls to futher write of whole buffer instead of chunks.
   * [QTBUG-36758] Fixed the waitForBytesWritten() behavior on Windows.
   * [QTBUG-38640] Now a states of the DTR/RTS signals are initialized after
     opening.
   * [QTBUG-39369] Do not emit the error() in destructor of QSerialPort; this
     error signal may then call slots of already (partially) deleted objects.
   * Fixed the error message for TimeoutError on Windows (which has the
     WAIT_TIMEOUT error code).
   * [QTBUG-39314] Fixed regression of waitForReadyRead() method on Windows.
   * Added handling of the ENOENT error code in uclibc on Linux. Now this error
     is interpreted as DeviceNotFoundError.

