Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7

This commit is contained in:
Liang Qi 2016-06-29 12:50:54 +00:00 committed by The Qt Project
commit 592da13664
15 changed files with 72 additions and 19 deletions

View File

@ -50,6 +50,10 @@ int main()
(void) pipe2(pipes, O_CLOEXEC | O_NONBLOCK); (void) pipe2(pipes, O_CLOEXEC | O_NONBLOCK);
(void) fcntl(0, F_DUPFD_CLOEXEC, 0); (void) fcntl(0, F_DUPFD_CLOEXEC, 0);
(void) dup3(0, 3, O_CLOEXEC); (void) dup3(0, 3, O_CLOEXEC);
#if defined(__NetBSD__)
(void) paccept(0, 0, 0, NULL, SOCK_CLOEXEC | SOCK_NONBLOCK);
#else
(void) accept4(0, 0, 0, SOCK_CLOEXEC | SOCK_NONBLOCK); (void) accept4(0, 0, 0, SOCK_CLOEXEC | SOCK_NONBLOCK);
#endif
return 0; return 0;
} }

View File

@ -1,3 +1,8 @@
SOURCES = libpng.cpp SOURCES = libpng.cpp
CONFIG -= qt dylib CONFIG -= qt dylib
LIBS += -lpng !contains(QT_CONFIG, no-pkg-config) {
CONFIG += link_pkgconfig
PKGCONFIG += libpng
} else {
LIBS += -lpng
}

View File

@ -38,6 +38,10 @@
****************************************************************************/ ****************************************************************************/
#include <fcntl.h> #include <fcntl.h>
// NetBSD 7 has posix_fallocate, but in unistd.h instead of fcntl.h
#ifdef __NetBSD__
# include <unistd.h>
#endif
int main(int, char **) int main(int, char **)
{ {

View File

@ -41,5 +41,6 @@
int main(int, char **) int main(int, char **)
{ {
sqlite3_open_v2(0, 0, 0, 0);
return 0; return 0;
} }

10
configure vendored
View File

@ -646,6 +646,7 @@ CFG_XRANDR=runtime
CFG_XRENDER=auto CFG_XRENDER=auto
CFG_MITSHM=auto CFG_MITSHM=auto
CFG_OPENGL=auto CFG_OPENGL=auto
CFG_OPENGLES3=yes # still depends on CFG_OPENGL, so auto in practice
CFG_OPENVG=auto CFG_OPENVG=auto
CFG_OPENVG_LC_INCLUDES=no CFG_OPENVG_LC_INCLUDES=no
CFG_OPENVG_SHIVA=auto CFG_OPENVG_SHIVA=auto
@ -1293,6 +1294,13 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes UNKNOWN_OPT=yes
fi fi
;; ;;
opengles3)
if [ "$VAL" = "no" ]; then
CFG_OPENGLES3="no"
else
UNKNOWN_OPT=yes
fi
;;
openvg) openvg)
if [ "$VAL" = "auto" ] || [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then if [ "$VAL" = "auto" ] || [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_OPENVG="$VAL" CFG_OPENVG="$VAL"
@ -5419,7 +5427,7 @@ fi
# compile-time differentiation and including the version specific (but backwards # compile-time differentiation and including the version specific (but backwards
# compatible) ES headers (for example, GLES3/gl31.h). Other than that, there is # compatible) ES headers (for example, GLES3/gl31.h). Other than that, there is
# no difference in the configuration, even the library is the same. # no difference in the configuration, even the library is the same.
if [ "$CFG_OPENGL" = "es2" ]; then if [ "$CFG_OPENGL" = "es2" ] && [ "$CFG_OPENGLES3" = "yes" ]; then
if compileTestWithPkgConfig glesv2 unix/opengles3 "OpenGL ES 3.0" ""; then if compileTestWithPkgConfig glesv2 unix/opengles3 "OpenGL ES 3.0" ""; then
# Add a define for ES3, in addition to ES and ES2. # Add a define for ES3, in addition to ES and ES2.
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_OPENGL_ES_3" QCONFIG_FLAGS="$QCONFIG_FLAGS QT_OPENGL_ES_3"

View File

@ -14,10 +14,9 @@
# Note: You cannot use operators (+, =, -) in the names. # Note: You cannot use operators (+, =, -) in the names.
# #
# Examples: add a 'isHighlighted' attribute for two 'Analog Clock' examples, # Examples: add a 'isHighlighted' attribute for two 'Analog Clock' examples,
# add a 'database' tag for QtSql all examples, a 'webkit' tag for QtWebKit # add a 'database' tag for QtSql examples, and a 'qt5' tag for all examples
# examples, and a 'qt5' tag for all examples
# #
# manifestmeta.filters = highlighted sql webkit global # manifestmeta.filters = highlighted sql global
# #
# manifestmeta.highlighted.names = "QtGui/Analog Clock Window Example" \ # manifestmeta.highlighted.names = "QtGui/Analog Clock Window Example" \
# "QtWidgets/Analog Clock Example" # "QtWidgets/Analog Clock Example"
@ -26,13 +25,10 @@
# manifestmeta.sql.names = "QtSql/*" # manifestmeta.sql.names = "QtSql/*"
# manifestmeta.sql.tags = database # manifestmeta.sql.tags = database
# #
# manifestmeta.webkit.names = "QtWebKitExamples/*"
# manifestmeta.webkit.tags = webkit
#
# manifestmeta.global.names = * # manifestmeta.global.names = *
# manifestmeta.global.tags = qt5 # manifestmeta.global.tags = qt5
manifestmeta.filters = highlighted webkit1 webkit2 android thumbnail ios manifestmeta.filters = highlighted android thumbnail ios
manifestmeta.highlighted.names = "QtQuick/Qt Quick Demo - Same Game" \ manifestmeta.highlighted.names = "QtQuick/Qt Quick Demo - Same Game" \
"QtQuick/Qt Quick Demo - Photo Surface" \ "QtQuick/Qt Quick Demo - Photo Surface" \

View File

@ -429,7 +429,7 @@ CreateDockWidgetDialog::CreateDockWidgetDialog(QWidget *parent)
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::reject); connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
layout->addWidget(buttonBox, 2, 0, 1, 2); layout->addWidget(buttonBox, 2, 0, 1, 2);
} }

View File

@ -1,6 +1,14 @@
contains(QT_CONFIG, system-png) { contains(QT_CONFIG, system-png) {
unix|mingw: LIBS_PRIVATE += -lpng unix|mingw {
else: LIBS += libpng.lib !contains(QT_CONFIG, no-pkg-config) {
CONFIG += link_pkgconfig
PKGCONFIG_PRIVATE += libpng
} else {
LIBS_PRIVATE += -lpng
}
} else {
LIBS += libpng.lib
}
} else: contains(QT_CONFIG, png) { } else: contains(QT_CONFIG, png) {
INCLUDEPATH += $$PWD/libpng INCLUDEPATH += $$PWD/libpng
LIBS_PRIVATE += -L$$QT_BUILD_TREE/lib -lqtpng$$qtPlatformTargetSuffix() LIBS_PRIVATE += -L$$QT_BUILD_TREE/lib -lqtpng$$qtPlatformTargetSuffix()

View File

@ -86,6 +86,15 @@ static void setBoolLane(QBasicAtomicInt *atomic, bool enable, int shift)
\snippet qloggingcategory/main.cpp 1 \snippet qloggingcategory/main.cpp 1
\note Category names are free text. However, to allow easy configuration
of the categories using \l{Logging Rules} the names should follow some rules:
\list
\li Use letters and numbers only.
\li Further structure categories into common areas by using dots.
\li Avoid the category names \c{debug}, \c{info}, \c{warning}, and \c{critical}.
\li Category names starting with \c{qt} are reserved for Qt modules.
\endlist
\section1 Checking Category Configuration \section1 Checking Category Configuration
QLoggingCategory provides \l isDebugEnabled(), \l isInfoEnabled(), QLoggingCategory provides \l isDebugEnabled(), \l isInfoEnabled(),

View File

@ -115,7 +115,11 @@ static inline int qt_safe_accept(int s, struct sockaddr *addr, QT_SOCKLEN_T *add
int sockflags = SOCK_CLOEXEC; int sockflags = SOCK_CLOEXEC;
if (flags & O_NONBLOCK) if (flags & O_NONBLOCK)
sockflags |= SOCK_NONBLOCK; sockflags |= SOCK_NONBLOCK;
# if defined(Q_OS_NETBSD)
fd = ::paccept(s, addr, static_cast<QT_SOCKLEN_T *>(addrlen), NULL, sockflags);
# else
fd = ::accept4(s, addr, static_cast<QT_SOCKLEN_T *>(addrlen), sockflags); fd = ::accept4(s, addr, static_cast<QT_SOCKLEN_T *>(addrlen), sockflags);
# endif
return fd; return fd;
#else #else
fd = ::accept(s, addr, static_cast<QT_SOCKLEN_T *>(addrlen)); fd = ::accept(s, addr, static_cast<QT_SOCKLEN_T *>(addrlen));

View File

@ -281,6 +281,7 @@ QWidgetPrivate::QWidgetPrivate(int version)
#endif #endif
#ifndef QT_NO_OPENGL #ifndef QT_NO_OPENGL
, renderToTextureReallyDirty(1) , renderToTextureReallyDirty(1)
, renderToTextureComposeActive(0)
#endif #endif
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN)
, noPaintOnScreen(0) , noPaintOnScreen(0)

View File

@ -750,6 +750,7 @@ public:
#endif #endif
#ifndef QT_NO_OPENGL #ifndef QT_NO_OPENGL
uint renderToTextureReallyDirty : 1; uint renderToTextureReallyDirty : 1;
uint renderToTextureComposeActive : 1;
#endif #endif
// *************************** Platform specific ************************************ // *************************** Platform specific ************************************

View File

@ -67,6 +67,8 @@ QT_BEGIN_NAMESPACE
extern QRegion qt_dirtyRegion(QWidget *); extern QRegion qt_dirtyRegion(QWidget *);
Q_GLOBAL_STATIC(QPlatformTextureList, qt_dummy_platformTextureList)
/** /**
* Flushes the contents of the \a backingStore into the screen area of \a widget. * Flushes the contents of the \a backingStore into the screen area of \a widget.
* \a tlwOffset is the position of the top level widget relative to the window surface. * \a tlwOffset is the position of the top level widget relative to the window surface.
@ -109,6 +111,20 @@ void QWidgetBackingStore::qt_flush(QWidget *widget, const QRegion &region, QBack
offset += widget->mapTo(tlw, QPoint()); offset += widget->mapTo(tlw, QPoint());
#ifndef QT_NO_OPENGL #ifndef QT_NO_OPENGL
const bool compositionWasActive = widget->d_func()->renderToTextureComposeActive;
if (!widgetTextures) {
widget->d_func()->renderToTextureComposeActive = false;
// Detect the case of falling back to the normal flush path when no
// render-to-texture widgets are visible anymore. We will force one
// last flush to go through the OpenGL-based composition to prevent
// artifacts. The next flush after this one will use the normal path.
if (compositionWasActive)
widgetTextures = qt_dummy_platformTextureList;
} else {
widget->d_func()->renderToTextureComposeActive = true;
}
// re-test since we may have been forced to this path via the dummy texture list above
if (widgetTextures) { if (widgetTextures) {
qt_window_private(tlw->windowHandle())->compositing = true; qt_window_private(tlw->windowHandle())->compositing = true;
widget->window()->d_func()->sendComposeStatus(widget->window(), false); widget->window()->d_func()->sendComposeStatus(widget->window(), false);
@ -984,8 +1000,6 @@ static void findAllTextureWidgetsRecursively(QWidget *tlw, QWidget *widget)
} }
} }
Q_GLOBAL_STATIC(QPlatformTextureList, qt_dummy_platformTextureList)
static QPlatformTextureList *widgetTexturesFor(QWidget *tlw, QWidget *widget) static QPlatformTextureList *widgetTexturesFor(QWidget *tlw, QWidget *widget)
{ {
foreach (QPlatformTextureList *tl, QWidgetPrivate::get(tlw)->topData()->widgetTextures) { foreach (QPlatformTextureList *tl, QWidgetPrivate::get(tlw)->topData()->widgetTextures) {

View File

@ -2161,6 +2161,9 @@ bool QDockAreaLayoutInfo::updateTabBar() const
if (oldCurrentId > 0 && currentTabId() != oldCurrentId) if (oldCurrentId > 0 && currentTabId() != oldCurrentId)
that->setCurrentTabId(oldCurrentId); that->setCurrentTabId(oldCurrentId);
if (QDockWidgetGroupWindow *dwgw = qobject_cast<QDockWidgetGroupWindow *>(tabBar->parent()))
dwgw->adjustFlags();
//returns if the tabbar is visible or not //returns if the tabbar is visible or not
return ( (gap ? 1 : 0) + tabBar->count()) > 1; return ( (gap ? 1 : 0) + tabBar->count()) > 1;
} }

View File

@ -1392,8 +1392,6 @@ void QDockWidget::changeEvent(QEvent *event)
if (QDockAreaLayoutInfo *info = winLayout->layoutState.dockAreaLayout.info(this)) if (QDockAreaLayoutInfo *info = winLayout->layoutState.dockAreaLayout.info(this))
info->updateTabBar(); info->updateTabBar();
} }
if (QDockWidgetGroupWindow *p = qobject_cast<QDockWidgetGroupWindow *>(parent()))
p->adjustFlags();
} }
#endif // QT_NO_TABBAR #endif // QT_NO_TABBAR
break; break;
@ -1483,9 +1481,6 @@ bool QDockWidget::event(QEvent *event)
} }
if (!isFloating() && layout != 0 && onTop) if (!isFloating() && layout != 0 && onTop)
layout->raise(this); layout->raise(this);
if (QDockWidgetGroupWindow *p = qobject_cast<QDockWidgetGroupWindow *>(parent()))
p->adjustFlags();
break; break;
} }
case QEvent::WindowActivate: case QEvent::WindowActivate: