From 72af92e321976be1575fe53b8e58de45c8d889b3 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 21 Sep 2017 11:32:01 +0200 Subject: Add changes file for Qt 5.9.2 Task-number: QTBUG-62746 Change-Id: I92bfcc4788af6b4c41cba18f4726333ea6297481 Reviewed-by: Michal Klocek --- dist/changes-5.9.2 | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 dist/changes-5.9.2 diff --git a/dist/changes-5.9.2 b/dist/changes-5.9.2 new file mode 100644 index 000000000..6cc9dbe37 --- /dev/null +++ b/dist/changes-5.9.2 @@ -0,0 +1,72 @@ +Qt 5.9.2 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.9.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +http://doc.qt.io/qt-5/index.html + +The Qt version 5.9 series is binary compatible with the 5.8.x series. +Applications compiled for 5.8 will continue to run with 5.9. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* General * +**************************************************************************** + + - Chromium Snapshot: + * Security fixes from Chromium up to version 61.0.3163.79 + Including: CVE-2017-5092, CVE-2017-5093, CVE-2017-5095, CVE-2017-5097, + CVE-2017-5099, CVE-2017-5102, CVE-2017-5103, CVE-2017-5107, + CVE-2017-5112, CVE-2017-5114, CVE-2017-5117 and CVE-2017-5118 + * Fixed Skia to to render text correctly with FreeType 2.8.1 + * [QTBUG-50389] Fixed assert on some flash content + + - QtWebEngine: + * [QTBUG-57505] Handle --force-webrtc-ip-handling-policy on command-line + * [QTBUG-58306] Fixed handling of menu key + * [QTBUG-60790] Fixed dragging images to desktop + * [QTBUG-61354] Set referrer on download requests + * [QTBUG-61429] Fixed cancelling IME composition + * [QTBUG-61506] Stop searching when navigating away + * [QTBUG-61910] Fixed an issue where system proxy settings were not + picked up correctly + * [QTBUG-62112] Fixed upside-down rendering in software rendering mode + * [QTBUG-62112] Fixed rendering of content with preserve-3d in CSS + * [QTBUG-62311] Fixed hang when exiting with open combobox + * [QTBUG-62808] Handle --explicitly-allowed-ports on command-line + * [QTBUG-62898] Fixed accessing webchannels from document-creation + user-scripts after navigation. + * [QTBUG-62942] Fixed committing IME composition on touch events + + - QWebEngineView: + * [QTBUG-61621] Fixed propagation of unhandled key press events + + - WebEngineView: + * The callback version of printToPdf is now called with a proper + bytearray result instead of a PDF data in a javascript string. + +**************************************************************************** +* Platform Specific Changes * +**************************************************************************** + + - Linux: + * [QTBUG-61528, QTBUG-62673] Fixed various multilib build configurations + * [QTBUG-61846] Fixed host builds on Arm and MIPS + + - Windows: + * [QTBUG-60334] Fixed location of IME window + * [QTBUG-62146] Fixed following system font configuration + * [QTBUG-62200] Fixed assert on hover + * Allow WebGL to work with software OpenGL using the new command-line + argument --enable-webgl-software-rendering + + - macOS: + * [QTBUG-60605] Use OpenGL core-profile when the main application does -- cgit v1.2.3 From 8041548b7c7fc6f28c23d6c5699bc43ffef2428a Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Tue, 19 Sep 2017 18:17:35 +0200 Subject: Update Chromium Changes: 78c96f83ab Do not assert on PPAPI resources we do not support. 02fb09feae [Backport] Clip FreeType glyph bitmap to mask. Change-Id: I9455f8ac7283a5326618d9caf36533af567892e0 Reviewed-by: Joerg Bornemann (cherry-picked from 07accb44dc8bf3f56ee31c6be7b2eb3c15730d5a) --- src/3rdparty | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty b/src/3rdparty index b8c39b181..02fb09fea 160000 --- a/src/3rdparty +++ b/src/3rdparty @@ -1 +1 @@ -Subproject commit b8c39b181f30d6068a958d39c2034932216778b9 +Subproject commit 02fb09feaed516d49c50f51172d687adf382e49e -- cgit v1.2.3 From abb6af14fb632d32d8cce83b4042acd6f9a4767e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Fri, 22 Sep 2017 11:12:57 +0200 Subject: Fix viewport resizing bug in renderer After the recent fix for rendering intersecting quads, DelegatedFrameNode no longer builds scene graph nodes for DrawQuads that are outside the visible area. This means that the structure of the scene graph now depends on the size of the visible area, however the logic for deciding whether to update or rebuild the scene graph was not updated to reflect this fact. As a result we may try to update e.g. a QSGImageNode as if it were a QSGRectangleNode leading to a crash. Task-number: QTBUG-62112 Change-Id: I6e2e9dee4238d208fc2be98669281c2d4d4962d7 Reviewed-by: Peter Varga Reviewed-by: Allan Sandfeld Jensen --- src/core/delegated_frame_node.cpp | 24 ++++++++++++++++-------- src/core/delegated_frame_node.h | 1 + src/core/type_conversion.h | 5 +++++ 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/core/delegated_frame_node.cpp b/src/core/delegated_frame_node.cpp index be0858310..73e0420af 100644 --- a/src/core/delegated_frame_node.cpp +++ b/src/core/delegated_frame_node.cpp @@ -850,8 +850,8 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData, // countering the scale of devicePixel-scaled tiles when rendering them // to the final surface. QMatrix4x4 matrix; - matrix.scale(1 / m_chromiumCompositorData->frameDevicePixelRatio, - 1 / m_chromiumCompositorData->frameDevicePixelRatio); + const float devicePixelRatio = m_chromiumCompositorData->frameDevicePixelRatio; + matrix.scale(1 / devicePixelRatio, 1 / devicePixelRatio); if (QSGTransformNode::matrix() != matrix) setMatrix(matrix); @@ -873,12 +873,21 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData, frameData->resource_list.clear(); QScopedPointer nodeHandler; + const QSizeF viewportSizeInPt = apiDelegate->screenRect().size(); + const QSize viewportSize = (viewportSizeInPt * devicePixelRatio).toSize(); + // We first compare if the render passes from the previous frame data are structurally // equivalent to the render passes in the current frame data. If they are, we are going // to reuse the old nodes. Otherwise, we will delete the old nodes and build a new tree. + // + // Additionally, because we clip (i.e. don't build scene graph nodes for) quads outside + // of the visible area, we also have to rebuild the tree whenever the window is resized. #if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)) cc::DelegatedFrameData *previousFrameData = m_chromiumCompositorData->previousFrameData.get(); - const bool buildNewTree = !areRenderPassStructuresEqual(frameData, previousFrameData) || m_sceneGraphNodes.empty(); + const bool buildNewTree = + !areRenderPassStructuresEqual(frameData, previousFrameData) || + m_sceneGraphNodes.empty() || + viewportSize != m_previousViewportSize; #else // No updates possible with old scenegraph nodes const bool buildNewTree = true; @@ -912,10 +921,7 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData, // All RenderPasses except the last one are rendered to an FBO. cc::RenderPass *rootRenderPass = frameData->render_pass_list.back().get(); - QRectF screenRectQt = apiDelegate->screenRect(); - gfx::Size thisSize(int(screenRectQt.width() * m_chromiumCompositorData->frameDevicePixelRatio), - int(screenRectQt.height() * m_chromiumCompositorData->frameDevicePixelRatio)); - + gfx::Rect viewportRect(toGfx(viewportSize)); for (unsigned i = 0; i < frameData->render_pass_list.size(); ++i) { cc::RenderPass *pass = frameData->render_pass_list.at(i).get(); @@ -947,7 +953,7 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData, scissorRect = pass->output_rect; } else { renderPassParent = this; - scissorRect = gfx::Rect(thisSize); + scissorRect = viewportRect; scissorRect += rootRenderPass->output_rect.OffsetFromOrigin(); } @@ -1015,6 +1021,8 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData, ResourceHolderIterator end = resourceCandidates.constEnd(); for (ResourceHolderIterator it = resourceCandidates.constBegin(); it != end ; ++it) resourcesToRelease->push_back((*it)->returnResource()); + + m_previousViewportSize = viewportSize; } void DelegatedFrameNode::flushPolygons( diff --git a/src/core/delegated_frame_node.h b/src/core/delegated_frame_node.h index cc682988d..3b6453a4c 100644 --- a/src/core/delegated_frame_node.h +++ b/src/core/delegated_frame_node.h @@ -143,6 +143,7 @@ private: bool m_contextShared; QScopedPointer m_offsurface; #endif + QSize m_previousViewportSize; }; } // namespace QtWebEngineCore diff --git a/src/core/type_conversion.h b/src/core/type_conversion.h index ed02a9db9..39c4f610c 100644 --- a/src/core/type_conversion.h +++ b/src/core/type_conversion.h @@ -139,6 +139,11 @@ inline QRectF toQt(const gfx::RectF &rect) return QRectF(rect.x(), rect.y(), rect.width(), rect.height()); } +inline gfx::Size toGfx(const QSize &size) +{ + return gfx::Size(size.width(), size.height()); +} + inline QSize toQt(const gfx::Size &size) { return QSize(size.width(), size.height()); -- cgit v1.2.3 From c11c2c8981e647c1eb2c6753ce77d436b92fff87 Mon Sep 17 00:00:00 2001 From: Jani Heikkinen Date: Tue, 3 Oct 2017 09:12:38 +0300 Subject: Revert "Load libEGL and libGLES2 symbols implicitly" This reverts commit d4c621f6a6b87f2a86069fa393b9f7c4f9e7b9ad, which seems to break QtWebEngine in B2Qt devices Task-number: QTBUG-63341 Change-Id: I2224b8c68c85baa602ed3d2aab88cd2cf622eeb8 Reviewed-by: Michal Klocek --- src/core/surface_factory_qt.cpp | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/src/core/surface_factory_qt.cpp b/src/core/surface_factory_qt.cpp index e8be84807..36c05ec5d 100644 --- a/src/core/surface_factory_qt.cpp +++ b/src/core/surface_factory_qt.cpp @@ -51,27 +51,51 @@ #if defined(USE_OZONE) #include -#include + +#ifndef QT_LIBDIR_EGL +#define QT_LIBDIR_EGL "/usr/lib" +#endif +#ifndef QT_LIBDIR_GLES2 +#define QT_LIBDIR_GLES2 QT_LIBDIR_EGL +#endif namespace QtWebEngineCore { +base::NativeLibrary LoadLibrary(const base::FilePath& filename) { + base::NativeLibraryLoadError error; + base::NativeLibrary library = base::LoadNativeLibrary(filename, &error); + if (!library) { + LOG(ERROR) << "Failed to load " << filename.MaybeAsASCII() << ": " << error.ToString(); + return NULL; + } + return library; +} + bool SurfaceFactoryQt::LoadEGLGLES2Bindings() { - base::NativeLibrary eglgles2Library = dlopen(NULL, RTLD_LAZY); - if (!eglgles2Library) { - LOG(ERROR) << "Failed to open EGL/GLES2 context " << dlerror(); + base::FilePath libEGLPath = QtWebEngineCore::toFilePath(QT_LIBDIR_EGL); + libEGLPath = libEGLPath.Append("libEGL.so.1"); + base::NativeLibrary eglLibrary = LoadLibrary(libEGLPath); + if (!eglLibrary) + return false; + + base::FilePath libGLES2Path = QtWebEngineCore::toFilePath(QT_LIBDIR_GLES2); + libGLES2Path = libGLES2Path.Append("libGLESv2.so.2"); + base::NativeLibrary gles2Library = LoadLibrary(libGLES2Path); + if (!gles2Library) return false; - } - gl::GLGetProcAddressProc get_proc_address = reinterpret_cast(base::GetFunctionPointerFromNativeLibrary(eglgles2Library, "eglGetProcAddress")); + gl::GLGetProcAddressProc get_proc_address = reinterpret_cast(base::GetFunctionPointerFromNativeLibrary(eglLibrary, "eglGetProcAddress")); if (!get_proc_address) { LOG(ERROR) << "eglGetProcAddress not found."; - base::UnloadNativeLibrary(eglgles2Library); + base::UnloadNativeLibrary(eglLibrary); + base::UnloadNativeLibrary(gles2Library); return false; } gl::SetGLGetProcAddressProc(get_proc_address); - gl::AddGLNativeLibrary(eglgles2Library); + gl::AddGLNativeLibrary(eglLibrary); + gl::AddGLNativeLibrary(gles2Library); return true; } -- cgit v1.2.3