summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Document how keyboard tracking can prevent use of a date/time editorEdward Welbourne2020-08-111-9/+52
| | | | | | | | | | | | | This follows up on commit 580e9eedf783ccbdcb67baa3d1a9dcdd53922f86; if the allowed range is narrower than some time interval whose end it straddles, users can only access the later part of the range if keyboard tracking is disabled. Pick-to: 5.15 Task-number: QTBUG-65 Change-Id: Ie8882bd65bda603133abaa82ad83eb1cdd91f175 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Introduce QIODevice::skipData()Alex Trotsenko2020-08-1115-36/+56
| | | | | | | | | | | | | | | | | | | QIODevice::skip() called a virtual QIODevicePrivate::skip() to implement an efficient skipping on I/O devices for the internal subclasses. The user subclasses cannot inherit QIODevicePrivate, so this functionality was not externally accessible. This patch replaces QIODevicePrivate::skip() with a virtual protected QIODevice::skipData(). While the basic implementation simply discards the data by reading into a dummy buffer, users can reimplement this function to improve the performance in their subclasses. [ChangeLog][QtCore][QIODevice] Added virtual protected skipData(). Now, subclasses can implement device-specific skipping of data. Change-Id: I9522f7f7ab9d03ac06e972a525f8ec2fa909a617 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Remove old CBOR-based format from QShaderLaszlo Agocs2020-08-116-293/+19
| | | | | | | | | We only support version 4 and 5 in Qt 6.0. 1 and 2 are already gone (due to being based on binary JSON), now we remove 3 as well. Task-number: QTBUG-81346 Change-Id: I3627dcc0587f1e36f11e93edf7172889e911d64e Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Sort out the overflow cases in tst_QDateTimeEdward Welbourne2020-08-111-13/+12
| | | | | | | | | Use the actual minimum value, rather than minus the maximum, and adapt the overflow expectations so that they're correct west of Greenwich as well as east. Change-Id: I7a5f4510db0fdea3855b5b2bd4c4a86882030efd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix handling of last second in 1969Edward Welbourne2020-08-112-11/+28
| | | | | | | | Due to a limitation of mktime(), we would have declared it invalid. Tidied up qt_mktime() slightly in the process. Change-Id: I25469e314afee6e0394e564bc69a98883005d4ec Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Tidy up use of local variables and add an assertionEdward Welbourne2020-08-111-6/+4
| | | | | | | | Petty tidy-up, narrowing the scopes and asserting that localtime_r()'s return, when non-null, is the pointer we gave it. Change-Id: I6c0959524260028ca9b234f6d33eae78f27c1412 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* wasm: detect canvas resize using ResizeObserver APIMorten Johan Sørvig2020-08-112-0/+45
| | | | | | | | | | | | | The ResizeObserver API is now available on the major desktop browsers (Safari, Chrome, Firefox), and can be used to handle canvas resize. (Previously, we got a callback on viewport resize only) Pick-to: 5.15 Change-Id: I8737285416bef70641f90da793c85efcb24f3623 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* Add degree<->radians conversions for long double and integral typesGiuseppe D'Angelo2020-08-112-0/+54
| | | | | | | | | | | | | | | | | | | | | | | | For long double: they're just missing, so add them for completeness. For integral types: follow the advice of C11's trigonometric functions; first convert the angle to double, then do the actual conversion. This is offered only for the degree->radians conversions, as someone may legitimately want to call e.g. qDegreesToRadians(90). On the other hand, it seems extremely unlikely that someone may want to do a radians->degree conversion starting from integral datatypes, so I'm not adding it for the moment being (instead, I'm leaving a note). [ChangeLog][QtCore][QtMath] qDegreesToRadians now also accepts long double and integral types. A value of integral type will be casted to double before the conversion to radians. [ChangeLog][QtCore][QtMath] qRadiansToDegrees now also accepts long double. Change-Id: Ib1576be5193ae09bb6cb4a70d7a31702955df2c5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* wasm: fix natural scrolling on macLorn Potter2020-08-111-1/+1
| | | | | | Pick-to: 5.15 Change-Id: Icc41b2c54a2e8d0da11ba5068bdde1a0c20686e0 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Interbase: Don't call toUpper() on the names as they are escapedAndy Shaw2020-08-101-2/+2
| | | | | | | | | | Interbase is case sensitive when tables/fields are escaped so we should ensure that we pass the value as is. Pick-to: 5.15 Change-Id: Ia6c4edc9c1e675bd95913c85d47bf22c418d2113 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QMultiMap: add constructors from QMapGiuseppe D'Angelo2020-08-102-0/+44
| | | | | | | | | | | We can provide those. They don't lose information, do not have the problem we face at offering ranged constructors (namely the order of duplicate keys), and have a distinct advantage over ranged constructors: a non-shared rvalue QMap can be "upgraded" to a QMultiMap without allocating memory for the multimap. Change-Id: Ic23c83927c05a210bc1f0050006c9f26365d3916 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Improve QMultiMap docs a bitGiuseppe D'Angelo2020-08-101-1/+8
| | | | | Change-Id: I170dc5de15dac61620aaed94f32226c158092dce Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QFileInfo: make stat method publicVolker Hilsheimer2020-08-103-4/+4
| | | | | | | | | | | | Forcing the reading of all file system attributes is generally useful in multi-threaded applications, and has at least one more use case in Qt. Using it in QFileSystemWatcher on Windows avoids several file system accesses. Task-number: QTBUG-41373 Change-Id: Ib3c3243fd083142393ad46d62f49cb4f7bfda17c Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* cmake support for tst_mocFabian Kosmale2020-08-103-6/+155
| | | | | | | | | | | | | We use qt_wrap_cpp instead of AUTOMOC so that we can easily find the json files. Getting autorcc to run only after json file has been generated was deemed too tricky. Therefore the test is slightly modified to check for the json files in its directory instead of the resource, if the qrc file does not exist. Change-Id: Id1aabb117c8bab3ff81156da1f66d64e796bf18b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Filechooser portal: Implement "current_filter"Michael Weghorn2020-08-102-5/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | This adds supports for setting and retrieving the selected MIME and name filter for 'QXdgDesktopPortalFileDialog'. For preselecting a filter [1]: > current_filter (sa(us)) > > Request that this filter be set by default at dialog creation. If > the filters list is nonempty, it should match a filter in the list > to set the default filter from the list. Alternatively, it may be > specified when the list is empty to apply the filter > unconditionally. The "current_filter" return value was added in xdg-desktop-portal commit [2]. [1] https://flatpak.github.io/xdg-desktop-portal/portal-docs.html#gdbus-org.freedesktop.portal.FileChooser [2] https://github.com/flatpak/xdg-desktop-portal/commit/35fca7fae881bdaba1bebccf7775eba84407a488 Fixes: QTBUG-85658 Pick-to: 5.15 Change-Id: I8651c1a8942dfd358895b7826730729c4d22e680 Reviewed-by: Jan Grulich <jgrulich@redhat.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* CMake: pro2cmake: Specify library versions for 3rd party libs part 2Alexandru Croitor2020-08-105-31/+36
| | | | | | | | | | Embed package versions into the qt_find_package calls for various Linux specific packages. Task-number: QTBUG-82917 Change-Id: I5d1cb623f81932dfae4658b8a3a89eedb71ea3af Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* CMake: pro2cmake: Specify library versions for 3rd party librariesAlexandru Croitor2020-08-1011-83/+151
| | | | | | | | | | | | | | | | | | | | | | | | If certain 3rd party libraries have a version that's not suitable for Qt, the configure summary should say so, rather than use them and fail at build time. With the current situation, we have to duplicate the version information from the configure.json files in helper.py, by assigning the version number as an extra find_package variable. Rerunning configurejson2cmake then embeds this version info into the qt_find_package calls in configure.cmake. Some of the Find modules are rewritten to take the specified version into account when looking for the libraries. This involves moving around the code for creating a target, after calling find_package_handle_standard_args() so we know if a good enough version was found. Task-number: QTBUG-82917 Change-Id: I139748d8090e0630cda413362760034dc3483e11 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* QLayout: minor tidy in the docsGiuseppe D'Angelo2020-08-101-1/+1
| | | | | Change-Id: Ifc2aa62a9c9480c85cc36f60941411e920066db8 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Fix build with mingw gcc 9 and -Wsuggest-overrideKai Koehne2020-08-1012-85/+86
| | | | | Change-Id: I780b0761a7f6b19022116b738efa7aca1378b715 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix compilation in C++20 modeAllan Sandfeld Jensen2020-08-081-6/+12
| | | | | | | | The comparisons with pointer were ambiguous as the comparisons could be done between iterators or pointers. Change-Id: I0484946931502d04bd63519fcd6e886c732758d3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Avoid UB in 64bit compositionsAllan Sandfeld Jensen2020-08-081-17/+17
| | | | | | | | Multiplying 65535 by 65535 would exceed the precision of an int, so use 65535U instead. Change-Id: I066e552fb7db03ce867bcbfbd0b555ac98ca4bbf Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QBezier: Don't try calculating a unit vector when length is nullRobert Loehning2020-08-071-0/+4
| | | | | | | | | It's undefined and causes a division by zero. Fixes: oss-fuzz-24273 Pick-to: 5.12 5.15 Change-Id: I3d34d5c43cccff9255abaf87af265ddea3fe6d95 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* QSettings: purge deprecated APIEdward Welbourne2020-08-072-42/+1
| | | | | | | Since 5.13: setSystemIniPath(), setUserIniPath() Change-Id: Ie02fa96e652c10ac1a276016bd556474030fe0f5 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QStandardPaths: purge deprecated APIEdward Welbourne2020-08-072-12/+2
| | | | | | | Since 5.2: enableTestMode(bool) Change-Id: Ibfd5958b6383491d9297d3f0e815ad4679fb57f5 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QFileInfo: inline the file-time methodsEdward Welbourne2020-08-072-22/+11
| | | | | | | | As instructed in a // ### Qt6 comment Added missing #include for QDateTime. Change-Id: Ic1f9e6ec42ecae07d037b84943444785847bdf98 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QFileInfo: purge deprecated APIEdward Welbourne2020-08-073-55/+1
| | | | | | | | Since 5.10: created() Since 5.13: readLink() Change-Id: I9722f81750dd92315a67a1c38df41a95ae63e0db Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QFile: purge deprecated APIEdward Welbourne2020-08-072-41/+2
| | | | | | | | Since 5.0: set{En,De}codingFunction() Since 5.13: readLink() Change-Id: I5386d0accf2724d84550c9bfdbbe914937194be2 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Purge deprecated API from QDirEdward Welbourne2020-08-072-51/+1
| | | | | | | | | Assignment from QString and addResourceSearchPath(), both deprecated since 5.13. Change-Id: I25f08ffadc7b9dfd7895a9199255ca5f1948bd47 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Purge QResource of some deprecated APIEdward Welbourne2020-08-073-126/+2
| | | | | | | | Removed isCompressed(), deprecated since 5.15, and (since 5.13) addSearchPath() and searchPath(). Change-Id: I4b6fb8077c02bbe322334e474eaf0a2a7caf0004 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* tst_QStringConverter: fix some deprecation warningsEdward Welbourne2020-08-071-10/+11
| | | | | | | QString's fromUtf16() prefers char16_t data over ushort. Change-Id: Ib20c5afa09ceabb4e91fe434b6a057edb4739a53 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QQueue: clean up 5.14's deprecationEdward Welbourne2020-08-071-5/+5
| | | | | | | | | | | Follows up on commit 9dc1edb3146e2ffd85c357f950a83751ef265549, giving the relevant advice on what to use instead and protecting with the appropriate version-check deprecation macro. Pick-to: 5.15 Change-Id: I4191493e6c43448c4390bf22be1571611b172950 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QSharedData: remove #include relating to deprecationEdward Welbourne2020-08-071-4/+1
| | | | | | | | The header pulled in qhash.h for no readily apparent reason. It did so subject to deprecation #if-ery, so rip it out. Change-Id: I00529dd2b2de11d9a997b6fa766901f5b2f4b254 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QPolygon: streamline constructors and special member functionsGiuseppe D'Angelo2020-08-072-28/+37
| | | | | | | | | | | Employ RO0; inherit the constructors from the base class; and do some code tidies as a drive by. The inherited constructors bring in goodies like initializer_list support. Change-Id: Ia00a3f9b0ccbf182bf837bc65ba2305110c8dc60 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Avoid UB in moc generated codeLars Knoll2020-08-073-1/+17
| | | | | | | | | | | | | | Introduce a Q_OFFSETOF() macro that uses the optional support of offsetof() for non standard layout types and disables the corresponding compiler warnings. All our supported compilers support offsetof() on non standard layout types. Use the macro to do the offset calculations required in moc generated code to replace a manual offset calculation that was dereferencing a null pointer. Change-Id: I4aab3af3c8bbaa90372f2234aa1cf8399d023c22 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* rhi: QRhiGles2 fix leak BlitFromRenderbufferPaul Lemire2020-08-071-0/+1
| | | | | | | Leaked FBO otherwise lead to massive runtime memory consumption increases. Change-Id: Ic8ffad4917c11294e6c83cdae0b36114d661b251 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Android: Add support for travesing directories and accessing filesAndy Shaw2020-08-073-9/+194
| | | | | | | | | | | | | | | | | | | This enables QDir and QFileInfo/QFile to work with entries found from a entryList() as it will obtain the permission for these files correctly when it is encountered. Due to what seems to be a quirk in the Android API, we cache whenever we come across a known directory to save time later on for checking if it is a directory. All uris accessed where we get permissions for are cached so we get the right URI for that given content url as some are granted via the Intent. Fixes: QTBUG-85538 Fixes: QTBUG-83041 Fixes: QTBUG-76886 Pick-to: 5.15 Change-Id: I685b3c60804812a0e4b85fbdbb4ec5efaa09420c Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* macOS: Handle platform window destroy and create in backingstoreTor Arne Vestbø2020-08-072-16/+36
| | | | | | | | | | | | | | | We observe changes to the NSWindow to pick up color space changes, so we need to track when the platform window is destroyed and created to match our observer with the recreated NSWindow. This does not handle the fact that we're internally recreating the NSWindow if certain window flag changes requires so, without letting clients know via surface events. Task-number: QTBUG-85915 Pick-to: 5.15 Change-Id: I7a7d728c742def79adebaadc985cedd86ea0d581 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* macOS: Fix crash when re-using backingstore for re-created QWindowTor Arne Vestbø2020-08-071-0/+8
| | | | | | | | | | | | | | | | | | | The observer we add for the NSWindow of the backingstore window will not be valid once that window is destroyed, but we may get last minute notifications for it still, in which case our platform window is gone. This patch fixes the immediate crash, but reveals a more fundamental problem of assuming the platform window that's alive during construction is the one that will always be used with the backingstore. This is not the case when for example QtWidgets opens a combo box, and reuses the backingstore for the widget each time the combobox popup is shown. Fixes: QTBUG-85915 Pick-to: 5.15 Pick-to: 5.12 Change-Id: Ia66a45d003882602ac29476aabf2d58b0ac33c1e Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* Android: fix NoSuchMethodException exception in QtActivity.javaAssam Boudjelthia2020-08-071-0/+5
| | | | | | | | This amends the parent change but intended only for dev and not to be picked for 5.15. Change-Id: If7a2d81045c0625f19554eaf6b5cf69e72d42384 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* QMap/QMultiMap: use =default for their default constructorsGiuseppe D'Angelo2020-08-071-2/+2
| | | | | Change-Id: I48e5bd8367fc6040128a50cd08c803310d3a4507 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* configure: Explicitly enable float-divide-by-zero with ubsanRobert Loehning2020-08-072-4/+4
| | | | | | | | | | Before clang 9, it was enabled by default when -fsanitize=undefined was set. Pick-to: 5.15 Change-Id: I0faf3ae1901d4badc6d265fa8081185be4360636 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add x86 vector implementation of UTF-8 comparison to UTF-16Thiago Macieira2020-08-061-17/+121
| | | | | Change-Id: Ied637aece2a7427b8a2dfffd161181f75b738532 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QDecompressHelper: Add brotli supportMårten Nordheim2020-08-0615-2/+243
| | | | | | Task-number: QTBUG-83269 Change-Id: If23b098ee76a4892e4c2c6ce5c635688d8d9138d Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* Mark QSslError(SslError error) as explicitLars Schmertmann2020-08-062-6/+6
| | | | | | | | | | | | | | | Currently it is possible to compare a QSslError with a QSslError::SslError because QSslError has an implicit constructor. But the comparison often fails because a QSslError received from the system contains a certificate. [ChangeLog][QtNetwork][QSslError] The constructor QSslError(QSslError::SslError error) is now explicit. Change-Id: I36cc5895245d3b43ab4b8d65a9635893d6b0e6a4 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* QCalendar: actually remember if the registry has been populatedGiuseppe D'Angelo2020-08-061-0/+2
| | | | | | | | The "populated" variable is otherwise never written into. Change-Id: I979411a19927dc4e7e09c6c36edfb2308f519596 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* CMake: Don't use lld linker for Android with a Windows hostAlexandru Croitor2020-08-061-1/+4
| | | | | | | | | | | | Most of the time lld just gets stuck (deadlock) waiting on some mutex, thus failing integrations. Amends 64c111e10fcb2f69855432177d76649b6b789fac Task-number: QTBUG-85911 Change-Id: Id73bf967a7aeb0e0cbccfaafe056b325c8711f82 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Adam <cristian.adam@qt.io>
* CMake: Fix prl files of static Qt buildsAlexandru Croitor2020-08-062-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | Static Qt plugins should not be included in the list of libraries of a prl file. They end up being there due to our circular dependency trick where the plugins depend on the module they belong to. This in turn causes the giant static plugin generator expressions to be processed in qt_collect_libs(), and the generated prl file ends up having target names like Qt6::QJpegPlugin which are obviously not linker flags. To eliminate the static plugins from prl files, add an additional dummy boolean generator expression '$<BOOL:QT_IS_PLUGIN_GENEX>' that always evaluates to true. We can string match on this expression in qt_collect_libs, and thus remove the whole static plugin genex entry. This should fix linking of apps with qmake that use a CMake-built static Qt. Task-number: QTBUG-85865 Task-number: QTBUG-85240 Task-number: QTBUG-85801 Change-Id: I949dc5edb10d94c4ab84ed430af7c164d8efaaa6 Reviewed-by: Cristian Adam <cristian.adam@qt.io>
* Update qgrayraster.cAllan Sandfeld Jensen2020-08-061-79/+77
| | | | | | | | In particular switching the SUBPIXELS macro with FRACT makes the logic valid for all 24dot8 fixed point values. Change-Id: I4e58df94f8cf3c557f670c5d3088942e9b8efa6d Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* CMake: Properly handle CONFIG += thread aka Threads::ThreadsAlexandru Croitor2020-08-0617-24/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | mkspecs/features/qt.prf adds a dependency on the system threading library if the Qt Core thread feature is enabled. Because qt.prf is loaded by any public or internal Qt project, it's essentially a public dependency for any Qt consumer. To mimic that in CMake, we check if the thread feature is enabled, and and set the Threads::Threads library as a dependency of Qt6::Platform, which is a public target used by all Qt modules and plugins and Qt consumers. We also need to create a Qt6Dependencies.cmake file so we find_package(Threads) every time find_package(Qt6) is called. For the .prl files to be usable, we have to filter out some CMake implementation specific directory separator tokens 'CMAKE_DIRECTORY_ID_SEP' aka '::@', which are added because we call target_link_libraries() with a target created in a different scope (I think). As a result of this change, we shouldn't have to hardcode Threads::Threads in other projects, because it's now a global public dependency. Task-number: QTBUG-85801 Task-number: QTBUG-85877 Change-Id: Ib5d662c43b28e63f7da49d3bd77d0ad751220b31 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Adam <cristian.adam@qt.io>
* QMultiMap: add range eraseGiuseppe D'Angelo2020-08-063-48/+82
| | | | | | | | Also remove duplication by centralizing the main code for erase(), and implement erase(pos) in terms of erase(first, last). Change-Id: Ie0272ebac92fd7da48c31f9d68e69a2faa583bbc Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>