summaryrefslogtreecommitdiffstats
path: root/src/hardwareintegration/client/wayland-egl
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-12-22 18:53:35 +0100
committerLiang Qi <liang.qi@qt.io>2018-12-22 18:53:35 +0100
commit5a6020f6efb4f09a77745614c6d1c0369bc5e365 (patch)
treeed8dec085d4f2a7ac359e5bbbb432b8449fb82fa /src/hardwareintegration/client/wayland-egl
parented03ec25de7e44d8e9a6aea359518851f5a8efa9 (diff)
parentf2dc41b5babf0a7b51a1735f290540d7be695042 (diff)
Merge remote-tracking branch 'origin/5.12' into dev
Conflicts: README src/hardwareintegration/client/xcomposite_share/xcomposite_share.pri Change-Id: I7cbbf39916821f0f1749e3ccab3151f68f4aa1ac
Diffstat (limited to 'src/hardwareintegration/client/wayland-egl')
-rw-r--r--src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp8
-rw-r--r--src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp22
2 files changed, 13 insertions, 17 deletions
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
index f10a7469a..24dadff4d 100644
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
@@ -126,8 +126,12 @@ void QWaylandEglWindow::updateSurface(bool create)
} else {
if (m_waylandEglWindow) {
int current_width, current_height;
- wl_egl_window_get_attached_size(m_waylandEglWindow,&current_width,&current_height);
- if (current_width != sizeWithMargins.width() || current_height != sizeWithMargins.height()) {
+ static bool disableResizeCheck = qgetenv("QT_WAYLAND_DISABLE_RESIZECHECK").toInt();
+
+ if (!disableResizeCheck) {
+ wl_egl_window_get_attached_size(m_waylandEglWindow, &current_width, &current_height);
+ }
+ if (disableResizeCheck || (current_width != sizeWithMargins.width() || current_height != sizeWithMargins.height())) {
wl_egl_window_resize(m_waylandEglWindow, sizeWithMargins.width(), sizeWithMargins.height(), mOffset.x(), mOffset.y());
mOffset = QPoint();
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
index e58403ad0..0cbbe5389 100644
--- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
@@ -315,7 +315,9 @@ QWaylandGLContext::QWaylandGLContext(EGLDisplay eglDisplay, QWaylandDisplay *dis
mSupportNonBlockingSwap = false;
}
if (!mSupportNonBlockingSwap) {
- qWarning() << "Non-blocking swap buffers not supported. Subsurface rendering can be affected.";
+ qWarning(lcQpaWayland) << "Non-blocking swap buffers not supported."
+ << "Subsurface rendering can be affected."
+ << "It may also cause the event loop to freeze in some situations";
}
updateGLFormat();
@@ -550,20 +552,10 @@ void QWaylandGLContext::swapBuffers(QPlatformSurface *surface)
m_blitter->blit(window);
}
-
- QWaylandSubSurface *sub = window->subSurfaceWindow();
- if (sub) {
- QMutexLocker l(sub->syncMutex());
-
- int si = (sub->isSync() && mSupportNonBlockingSwap) ? 0 : m_format.swapInterval();
-
- eglSwapInterval(m_eglDisplay, si);
- eglSwapBuffers(m_eglDisplay, eglSurface);
- } else {
- eglSwapInterval(m_eglDisplay, m_format.swapInterval());
- eglSwapBuffers(m_eglDisplay, eglSurface);
- }
-
+ window->handleUpdate();
+ int swapInterval = mSupportNonBlockingSwap ? 0 : m_format.swapInterval();
+ eglSwapInterval(m_eglDisplay, swapInterval);
+ eglSwapBuffers(m_eglDisplay, eglSurface);
window->setCanResize(true);
}