The current state of Windows Embedded Compact(WEC) platform support in Qt
It has been very quiet around WEC platform support in Qt, and you would have been forgiven for thinking that nothing was happening. But behind the scenes, we have been tackling some pretty hard issues. We just did not blog about the ongoing work……until now.
Be assured that the platform is still maintained and there is work happening. Here is a short overview of the work my co-worker at KDAB, Andreas Holzammer and myself have done on the WEC support.
Qt Multimedia is still listed as a not supported module for WEC. This has changed slightly as we reintroduced the ability to playback audio files based on the DirectShow backend: https://codereview.qt-project.org/#/c/93093/.
We also tried to restore the Video support, but faced unknown error messages from DirectShow. The idea of reviving the support is not gone, but delayed until we find a solution.
Deploying Qt Applications
Deployment of Qt applications can be quite a hassle. You have to know which plugins and modules your application uses and make sure all the required files that are not stored in resource files are deployed. This is especially bad if you have Qml files and plugins. The Qt Company introduced a very useful tool to ease the deployment on windows, called windeployqt. In January we finally got the support for WEC in the windeployqt tool upstream: https://codereview.qt-project.org/#/c/92707/.
This helps to simplify the deployment of Qt applications onto a target. You still have to manually copy the files and the libc++ runtime to the device, but all the Qt dependencies are correctly packaged to a folder of your choice by running a simple command.
Last but not least we have integrated a new feature into Qt 5.4. We introduced multitouch support for WEC based systems, this means we have two-finger multitouch working in Qt on WEC platforms. This happened in January when we implemented support for GID_DIRECTMANIPULATION: https://codereview.qt-project.org/#/c/104040/.
Only two touch points are supported due to the very simple WEC api for this, which only offers us two. The new feature allows WEC7 Qt application to use all the Desktop gesture recognizers.
While we were implementing the multitouch feature we discovered that the delivery of touchpoints and gestures was not working properly. The events weren’t reaching the correct widgets most of the time. The reason was a porting bug from Qt4 to Qt5, where the new call for the Desktop api was available on WEC7 but didn’t work properly. This led to the inability to find the correct child window for given coordinates. The bug we fixed was QTBUG-44022.
As WEC7 is already a very old platform and Microsoft has already released the successor, we were looking for an integration of WEC2013 as a supported Qt5 platform. Recently we succeeded to compile and deploy a Qt5 application to WEC2013. Our hardware platform still gives us trouble with Qml Shader elements, but simple QtQuick2 applications are working already. The port will go into Qt very soon. First we need to verify what features are working and take a look where we can now actually use the more feature-rich desktop code paths. This should ease maintenance and will allow us to fully leverage the capabilities of a new platform.
We will blog about the release of Qt5 WEC2013 platforms support in the near future when we have pushed the support upstream.