Merge remote-tracking branch 'origin/dev' into stable

Change-Id: Ice524edcc51373509f0023ae7f7c2963f4602f88
This commit is contained in:
Oswald Buddenhagen 2014-02-19 10:06:25 +01:00
commit 30fd22b957
1721 changed files with 116476 additions and 57698 deletions

View File

@ -0,0 +1,57 @@
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the config.tests of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <d3d11_1.h>
#include <d2d1_1.h>
#include <d2d1_1helper.h>
#include <dxgi1_2.h>
#include <wrl.h>
#include <dwrite.h>
using Microsoft::WRL::ComPtr;
int main(int, char**)
{
ComPtr<ID2D1Factory1> d2dFactory;
D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, d2dFactory.ReleaseAndGetAddressOf());
return 0;
}

View File

@ -0,0 +1,4 @@
SOURCES = direct2d.cpp
LIBS += -ld2d1 -ldwrite -ld3d11
CONFIG -= qt
CONFIG += console

View File

@ -0,0 +1,62 @@
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the config.tests of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <EGL/egl.h>
#include <xcb/xcb.h>
#include <X11/Xlib.h>
#include <X11/Xlib-xcb.h>
// Check if EGL is compatible with X. Some EGL implementations, typically on
// embedded devices, are not intended to be used together with X. EGL support
// has to be disabled in plugins like xcb in this case since the native display,
// window and pixmap types will be different than what an X-based platform
// plugin would expect.
int main(int, char **)
{
Display *dpy = EGL_DEFAULT_DISPLAY;
EGLNativeDisplayType egldpy = XOpenDisplay("");
dpy = egldpy;
EGLNativeWindowType w = XCreateWindow(dpy, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
XDestroyWindow(dpy, w);
XCloseDisplay(dpy);
return 0;
}

View File

@ -0,0 +1,12 @@
SOURCES = egl-x11.cpp
for(p, QMAKE_LIBDIR_EGL) {
exists($$p):LIBS += -L$$p
}
!isEmpty(QMAKE_INCDIR_EGL): INCLUDEPATH += $$QMAKE_INCDIR_EGL
!isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL
CONFIG -= qt
LIBS += -lxcb -lX11 -lX11-xcb

View File

@ -1,3 +1,3 @@
SOURCES = iconv.cpp SOURCES = iconv.cpp
CONFIG -= qt dylib CONFIG -= qt dylib
mac|win32-g++*|qnx:LIBS += -liconv mac|mingw|qnx:LIBS += -liconv

View File

@ -0,0 +1,48 @@
/****************************************************************************
**
** Copyright (C) 2014 Jolla Ltd, author: <robin.burchell@jollamobile.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the config.tests of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <systemd/sd-journal.h>
int main(int argc, char **argv)
{
sd_journal_print_with_location(LOG_INFO, "CODE_FILE=foo.c", "CODE_LINE=0", "unknown_function", "test message");
return 0;
}

View File

@ -0,0 +1,6 @@
SOURCES = journald.c
CONFIG += link_pkgconfig
PKGCONFIG_PRIVATE += libsystemd-journal
CONFIG -= qt

View File

@ -0,0 +1,49 @@
/***************************************************************************
**
** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
** Contact: http://www.qt-project.org/legal
**
** This file is part of the config.tests of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <lgmon.h>
int main(int, char **)
{
lgmon_supported(getpid());
return 0;
}

View File

@ -0,0 +1,3 @@
SOURCES = lgmon.cpp
CONFIG -= qt
LIBS += -llgmon

View File

@ -1,4 +0,0 @@
SOURCES = neon.cpp
CONFIG -= x11 qt
isEmpty(QMAKE_CFLAGS_NEON):error("This compiler does not support Neon")
else:QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_NEON

View File

@ -1,4 +1,4 @@
SOURCES = odbc.cpp SOURCES = odbc.cpp
CONFIG -= qt dylib CONFIG -= qt dylib
win32-g++*:LIBS += -lodbc32 mingw:LIBS += -lodbc32
else:LIBS += -lodbc else:LIBS += -lodbc

View File

@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Copyright (C) 2013 BlackBerry Limited. All rights reserved.
** Contact: http://www.qt-project.org/legal ** Contact: http://www.qt-project.org/legal
** **
** This file is part of the config.tests of the Qt Toolkit. ** This file is part of the config.tests of the Qt Toolkit.
@ -39,13 +39,10 @@
** **
****************************************************************************/ ****************************************************************************/
#include <arm_neon.h> #include "imf/imf_client.h"
int main(int, char**) int main(int, char **)
{ {
int32x4_t null = vdupq_n_s32(0x0); imf_client_init();
return 0;
int result;
vst1q_lane_s32(&result, null, 0);
return result;
} }

View File

@ -0,0 +1,3 @@
SOURCES = qqnx_imf.cpp
CONFIG -= qt
LIBS += -linput_client

View File

@ -7,5 +7,5 @@ for(p, QMAKE_LIBDIR_OPENGL) {
} }
CONFIG -= qt CONFIG -= qt
win32-g++*:LIBS += -lopengl32 mingw:LIBS += -lopengl32
else:LIBS += -lGL else:LIBS += -lGL

159
configure vendored
View File

@ -596,6 +596,7 @@ CFG_XINERAMA=runtime
CFG_XFIXES=runtime CFG_XFIXES=runtime
CFG_ZLIB=auto CFG_ZLIB=auto
CFG_MTDEV=auto CFG_MTDEV=auto
CFG_JOURNALD=no
CFG_SQLITE=qt CFG_SQLITE=qt
CFG_GIF=auto CFG_GIF=auto
CFG_PNG=yes CFG_PNG=yes
@ -612,6 +613,7 @@ CFG_OPENVG_LC_INCLUDES=no
CFG_OPENVG_SHIVA=auto CFG_OPENVG_SHIVA=auto
CFG_OPENVG_ON_OPENGL=auto CFG_OPENVG_ON_OPENGL=auto
CFG_EGL=auto CFG_EGL=auto
CFG_EGL_X=auto
CFG_FONTCONFIG=auto CFG_FONTCONFIG=auto
CFG_FREETYPE=auto CFG_FREETYPE=auto
CFG_HARFBUZZ=no CFG_HARFBUZZ=no
@ -630,6 +632,8 @@ CFG_PKGCONFIG=auto
CFG_STACK_PROTECTOR_STRONG=auto CFG_STACK_PROTECTOR_STRONG=auto
CFG_SLOG2=auto CFG_SLOG2=auto
CFG_PPS=auto CFG_PPS=auto
CFG_QNX_IMF=auto
CFG_LGMON=auto
CFG_SYSTEM_PROXIES=no CFG_SYSTEM_PROXIES=no
# Target architecture # Target architecture
@ -778,6 +782,8 @@ QT_LIBS_GLIB=
# default qpa platform # default qpa platform
QT_QPA_DEFAULT_PLATFORM= QT_QPA_DEFAULT_PLATFORM=
# default print support plugin
QT_PRINTSUPPORT_DEFAULT_PLUGIN=
# Android vars # Android vars
CFG_DEFAULT_ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT CFG_DEFAULT_ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT
@ -1471,6 +1477,7 @@ while [ "$#" -gt 0 ]; do
egl) egl)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_EGL="$VAL" CFG_EGL="$VAL"
CFG_EGL_X="$VAL"
else else
UNKNOWN_OPT=yes UNKNOWN_OPT=yes
fi fi
@ -1551,13 +1558,6 @@ while [ "$#" -gt 0 ]; do
iwmmxt) iwmmxt)
CFG_IWMMXT="yes" CFG_IWMMXT="yes"
;; ;;
neon)
if [ "$VAL" = "no" ]; then
CFG_NEON="$VAL"
else
UNKNOWN_OPT=yes
fi
;;
mips_dsp) mips_dsp)
if [ "$VAL" = "no" ]; then if [ "$VAL" = "no" ]; then
CFG_MIPS_DSP="$VAL" CFG_MIPS_DSP="$VAL"
@ -1596,6 +1596,13 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes UNKNOWN_OPT=yes
fi fi
;; ;;
journald)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_JOURNALD="$VAL"
else
UNKNOWN_OPT=yes
fi
;;
sqlite) sqlite)
if [ "$VAL" = "system" ]; then if [ "$VAL" = "system" ]; then
CFG_SQLITE=system CFG_SQLITE=system
@ -1780,6 +1787,13 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes UNKNOWN_OPT=yes
fi fi
;; ;;
imf)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_QNX_IMF="$VAL"
else
UNKNOWN_OPT=yes
fi
;;
pps) pps)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_PPS="$VAL" CFG_PPS="$VAL"
@ -1787,6 +1801,13 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes UNKNOWN_OPT=yes
fi fi
;; ;;
lgmon)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_LGMON="$VAL"
else
UNKNOWN_OPT=yes
fi
;;
gtkstyle) gtkstyle)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_QGTKSTYLE="$VAL" CFG_QGTKSTYLE="$VAL"
@ -2275,7 +2296,6 @@ Configure options:
-no-sse4.2 ......... Do not compile with use of SSE4.2 instructions. -no-sse4.2 ......... Do not compile with use of SSE4.2 instructions.
-no-avx ............ Do not compile with use of AVX instructions. -no-avx ............ Do not compile with use of AVX instructions.
-no-avx2 ........... Do not compile with use of AVX2 instructions. -no-avx2 ........... Do not compile with use of AVX2 instructions.
-no-neon ........... Do not compile with use of NEON instructions.
-no-mips_dsp ....... Do not compile with use of MIPS DSP instructions. -no-mips_dsp ....... Do not compile with use of MIPS DSP instructions.
-no-mips_dspr2 ..... Do not compile with use of MIPS DSP rev2 instructions. -no-mips_dspr2 ..... Do not compile with use of MIPS DSP rev2 instructions.
@ -2307,6 +2327,9 @@ Third Party Libraries:
-no-mtdev ......... Do not compile mtdev support. -no-mtdev ......... Do not compile mtdev support.
+ -mtdev ............. Enable mtdev support. + -mtdev ............. Enable mtdev support.
+ -no-journald ....... Do not send logging output to journald.
-journald .......... Send logging output to journald.
-no-gif ............ Do not compile GIF reading support. -no-gif ............ Do not compile GIF reading support.
-no-libpng ......... Do not compile PNG support. -no-libpng ......... Do not compile PNG support.
@ -2484,6 +2507,12 @@ QNX/Blackberry options:
-no-pps ............ Do not compile with pps support. -no-pps ............ Do not compile with pps support.
-pps ............... Compile with pps support. -pps ............... Compile with pps support.
-no-imf ............ Do not compile with imf support.
-imf ............... Compile with imf support.
-no-lgmon .......... Do not compile with lgmon support.
-lgmon ............. Compile with lgmon support.
MacOS/iOS options: MacOS/iOS options:
-Fstring ........... Add an explicit framework path. -Fstring ........... Add an explicit framework path.
@ -3344,9 +3373,8 @@ fi
if [ "$XPLATFORM_IOS" = "yes" ]; then if [ "$XPLATFORM_IOS" = "yes" ]; then
CFG_RPATH="no" CFG_RPATH="no"
CFG_PKGCONFIG="no" CFG_PKGCONFIG="no"
CFG_NOBUILD_PARTS="$CFG_NOBUILD_PARTS examples tests" CFG_NOBUILD_PARTS="$CFG_NOBUILD_PARTS examples"
CFG_SHARED="no" # iOS builds should be static to be able to submit to the App Store CFG_SHARED="no" # iOS builds should be static to be able to submit to the App Store
CFG_CXX11="no" # C++11 support disabled for now
CFG_SKIP_MODULES="$CFG_SKIP_MODULES qtconnectivity qtdoc qtlocation qtmacextras qtserialport qttools qtwebkit qtwebkit-examples" CFG_SKIP_MODULES="$CFG_SKIP_MODULES qtconnectivity qtdoc qtlocation qtmacextras qtserialport qttools qtwebkit qtwebkit-examples"
# If the user passes -sdk on the command line we build a SDK-specific Qt build. # If the user passes -sdk on the command line we build a SDK-specific Qt build.
@ -4011,13 +4039,19 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ];
if [ $QT_EDITION = "QT_EDITION_OPENSOURCE" ]; then if [ $QT_EDITION = "QT_EDITION_OPENSOURCE" ]; then
echo "EXTRA_CPPFLAGS = -DQMAKE_OPENSOURCE_EDITION" >> "$mkfile" echo "EXTRA_CPPFLAGS = -DQMAKE_OPENSOURCE_EDITION" >> "$mkfile"
fi fi
cat "$in_mkfile" >> "$mkfile"
if "$WHICH" makedepend >/dev/null 2>&1 && grep 'depend:' "$mkfile" >/dev/null 2>&1; then if [ "$BUILD_ON_MAC" = "yes" ]; then
(cd "$outpath/qmake" && "$MAKE" -f "$mkfile" depend) >/dev/null 2>&1 echo "EXTRA_CXXFLAGS += -MMD" >> "$mkfile"
sed 's,^.*/\([^/]*.o\):,\1:,g' "$mkfile" >"$mkfile.tmp" cat "$in_mkfile" >> "$mkfile"
sed "s,$outpath,$adjoutpath,g" "$mkfile.tmp" >"$mkfile" echo "-include \$(notdir \$(DEPEND_SRC:%.cpp=%.d))" >> "$mkfile"
rm "$mkfile.tmp" else
cat "$in_mkfile" >> "$mkfile"
if "$WHICH" makedepend >/dev/null 2>&1 && grep 'depend:' "$mkfile" >/dev/null 2>&1; then
(cd "$outpath/qmake" && "$MAKE" -f "$mkfile" depend) >/dev/null 2>&1
sed 's,^.*/\([^/]*.o\):,\1:,g' "$mkfile" >"$mkfile.tmp"
sed "s,$outpath,$adjoutpath,g" "$mkfile.tmp" >"$mkfile"
rm "$mkfile.tmp"
fi
fi fi
done done
@ -4328,17 +4362,6 @@ if [ "$CFG_IWMMXT" = "yes" ]; then
fi fi
fi fi
# detect neon support
if [ "$CFG_ARCH" = "arm" ] && [ "${CFG_NEON}" = "auto" ]; then
if compileTest unix/neon "neon"; then
CFG_NEON=yes
else
CFG_NEON=no
fi
elif [ "$CFG_ARCH" != "arm" ]; then
CFG_NEON=no
fi
# detect mips_dsp support # detect mips_dsp support
if [ "$CFG_ARCH" = "mips" ] && [ "${CFG_MIPS_DSP}" = "auto" ]; then if [ "$CFG_ARCH" = "mips" ] && [ "${CFG_MIPS_DSP}" = "auto" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/mips_dsp "mips_dsp" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/mips_dsp "mips_dsp" $L_FLAGS $I_FLAGS $D_FLAGS $l_FLAGS; then
@ -4388,7 +4411,14 @@ if [ "$XPLATFORM_QNX" = "yes" ]; then
CFG_SLOG2=no CFG_SLOG2=no
fi fi
fi fi
if [ "$CFG_QNX_IMF" != "no" ]; then
if compileTest unix/qqnx_imf "qqnx_imf"; then
CFG_QNX_IMF=yes
QMAKE_CONFIG="$QMAKE_CONFIG qqnx_imf"
else
CFG_QNX_IMF=no
fi
fi
if [ "$CFG_PPS" != "no" ]; then if [ "$CFG_PPS" != "no" ]; then
if compileTest unix/pps "pps"; then if compileTest unix/pps "pps"; then
CFG_PPS=yes CFG_PPS=yes
@ -4397,6 +4427,15 @@ if [ "$XPLATFORM_QNX" = "yes" ]; then
CFG_PPS=no CFG_PPS=no
fi fi
fi fi
if [ "$CFG_LGMON" != "no" ]; then
if compileTest unix/lgmon "lgmon"; then
CFG_LGMON=yes
QMAKE_CONFIG="$QMAKE_CONFIG lgmon"
else
CFG_LGMON=no
fi
fi
fi fi
if [ "$CFG_ZLIB" = "auto" ]; then if [ "$CFG_ZLIB" = "auto" ]; then
@ -4418,6 +4457,23 @@ if [ "$CFG_MTDEV" = "no" ]; then
QMakeVar add DEFINES QT_NO_MTDEV QMakeVar add DEFINES QT_NO_MTDEV
fi fi
if [ "$CFG_JOURNALD" != "no" ]; then
if compileTest unix/journald "journald"; then
CFG_JOURNALD=yes
QMAKE_CONFIG="$QMAKE_CONFIG journald"
else
if [ "$CFG_JOURNALD" != "auto" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
echo "journald support cannot be enabled due to functionality tests!"
echo " Turn on verbose messaging (-v) to $0 to see the final report."
echo " If you believe this message is in error you may use the continue"
echo " switch (-continue) to $0 to continue."
exit 101
else
CFG_JOURNALD=no
fi
fi
fi
if [ "$CFG_LARGEFILE" = "auto" ]; then if [ "$CFG_LARGEFILE" = "auto" ]; then
#Large files should be enabled for all Linux systems #Large files should be enabled for all Linux systems
CFG_LARGEFILE=yes CFG_LARGEFILE=yes
@ -5161,6 +5217,14 @@ if [ "$CFG_XCB" != "no" ]; then
QMAKE_CFLAGS_XCB="`$PKG_CONFIG --cflags xcb 2>/dev/null`" QMAKE_CFLAGS_XCB="`$PKG_CONFIG --cflags xcb 2>/dev/null`"
QMAKE_LIBS_XCB="`$PKG_CONFIG --libs xcb 2>/dev/null`" QMAKE_LIBS_XCB="`$PKG_CONFIG --libs xcb 2>/dev/null`"
fi fi
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists "x11" 2> /dev/null; then
QMAKE_X11_PREFIX="`$PKG_CONFIG --variable=prefix x11`"
else
# default to LSB prefix
QMAKE_X11_PREFIX="/usr"
fi
QMakeVar set QMAKE_X11_PREFIX "$QMAKE_X11_PREFIX"
if compileTest qpa/xcb "xcb" $QMAKE_CFLAGS_XCB $QMAKE_LIBS_XCB; then if compileTest qpa/xcb "xcb" $QMAKE_CFLAGS_XCB $QMAKE_LIBS_XCB; then
if [ "$CFG_XCB" = "qt" ]; then if [ "$CFG_XCB" = "qt" ]; then
@ -5326,6 +5390,11 @@ if [ "$CFG_EGL" != "no" ]; then
fi # detect EGL support fi # detect EGL support
if compileTest qpa/egl "EGL" $QMAKE_CFLAGS_EGL $QMAKE_LIBS_EGL; then if compileTest qpa/egl "EGL" $QMAKE_CFLAGS_EGL $QMAKE_LIBS_EGL; then
CFG_EGL=yes CFG_EGL=yes
if compileTest qpa/egl-x11 "EGL-X11" $QMAKE_CFLAGS_EGL $QMAKE_LIBS_EGL; then
CFG_EGL_X=yes
else
CFG_EGL_X=no
fi
elif [ "$CFG_EGL" = "yes" ]; then elif [ "$CFG_EGL" = "yes" ]; then
echo " The EGL functionality test failed; EGL is required by some QPA plugins to manage contexts & surfaces." echo " The EGL functionality test failed; EGL is required by some QPA plugins to manage contexts & surfaces."
echo " You might need to modify the include and library search paths by editing" echo " You might need to modify the include and library search paths by editing"
@ -5333,6 +5402,7 @@ if [ "$CFG_EGL" != "no" ]; then
exit 1 exit 1
else else
CFG_EGL=no CFG_EGL=no
CFG_EGL_X=no
fi fi
fi fi
@ -5387,6 +5457,15 @@ if [ -z "$QT_QPA_DEFAULT_PLATFORM" ]; then
fi fi
fi fi
# Determine print support plugin belonging to the default QPA platform
if [ "$QT_QPA_DEFAULT_PLATFORM" = "cocoa" ]; then
QT_PRINTSUPPORT_DEFAULT_PLUGIN=cocoaprintersupport
elif [ "$QT_QPA_DEFAULT_PLATFORM" = "windows" ]; then
QT_PRINTSUPPORT_DEFAULT_PLUGIN=windowsprintersupport
elif [ "$QT_QPA_DEFAULT_PLATFORM" = "xcb" ]; then
QT_PRINTSUPPORT_DEFAULT_PLUGIN=cupsprintersupport
fi
if [ -n "$QMAKE_CFLAGS_XCB" ] || [ -n "$QMAKE_LIBS_XCB" ]; then if [ -n "$QMAKE_CFLAGS_XCB" ] || [ -n "$QMAKE_LIBS_XCB" ]; then
QMakeVar set QMAKE_CFLAGS_XCB "$QMAKE_CFLAGS_XCB" QMakeVar set QMAKE_CFLAGS_XCB "$QMAKE_CFLAGS_XCB"
QMakeVar set QMAKE_LIBS_XCB "$QMAKE_LIBS_XCB" QMakeVar set QMAKE_LIBS_XCB "$QMAKE_LIBS_XCB"
@ -5431,6 +5510,7 @@ fi
# harfbuzz support # harfbuzz support
[ "$XPLATFORM_MINGW" = "yes" ] && [ "$CFG_HARFBUZZ" = "auto" ] && CFG_HARFBUZZ=no [ "$XPLATFORM_MINGW" = "yes" ] && [ "$CFG_HARFBUZZ" = "auto" ] && CFG_HARFBUZZ=no
[ "$XPLATFORM_MAC" = "yes" ] && [ "$CFG_HARFBUZZ" = "auto" ] && CFG_HARFBUZZ=yes
if [ "$CFG_HARFBUZZ" = "auto" ]; then if [ "$CFG_HARFBUZZ" = "auto" ]; then
if compileTest unix/harfbuzz "HarfBuzz"; then if compileTest unix/harfbuzz "HarfBuzz"; then
CFG_HARFBUZZ=system CFG_HARFBUZZ=system
@ -5438,6 +5518,11 @@ if [ "$CFG_HARFBUZZ" = "auto" ]; then
CFG_HARFBUZZ=yes CFG_HARFBUZZ=yes
fi fi
fi fi
if [ "$XPLATFORM_MAC" = "yes" -a "$CFG_HARFBUZZ" = "system" ]; then
echo
echo "WARNING: AAT is not supported with -system-harfbuzz on Mac OS X."
echo
fi
if ! compileTest unix/stl "STL" && if ! compileTest unix/stl "STL" &&
[ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
@ -5706,6 +5791,13 @@ else
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGL" QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGL"
fi fi
# enable egl on X
if [ "$CFG_EGL_X" = "yes" ]; then
QT_CONFIG="$QT_CONFIG egl_x11"
else
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGL_X11"
fi
# enable eglfs # enable eglfs
if [ "$CFG_EGLFS" = "yes" ]; then if [ "$CFG_EGLFS" = "yes" ]; then
QT_CONFIG="$QT_CONFIG eglfs" QT_CONFIG="$QT_CONFIG eglfs"
@ -5782,7 +5874,6 @@ fi
[ "$CFG_AVX" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG avx" [ "$CFG_AVX" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG avx"
[ "$CFG_AVX2" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG avx2" [ "$CFG_AVX2" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG avx2"
[ "$CFG_IWMMXT" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG iwmmxt" [ "$CFG_IWMMXT" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG iwmmxt"
[ "$CFG_NEON" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG neon"
if [ "$CFG_ARCH" = "mips" ]; then if [ "$CFG_ARCH" = "mips" ]; then
[ "$CFG_MIPS_DSP" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG mips_dsp" [ "$CFG_MIPS_DSP" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG mips_dsp"
[ "$CFG_MIPS_DSPR2" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG mips_dspr2" [ "$CFG_MIPS_DSPR2" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG mips_dspr2"
@ -6216,7 +6307,7 @@ fi
echo "" >>"$outpath/src/corelib/global/qconfig.h.new" echo "" >>"$outpath/src/corelib/global/qconfig.h.new"
echo "// Compiler sub-arch support" >>"$outpath/src/corelib/global/qconfig.h.new" echo "// Compiler sub-arch support" >>"$outpath/src/corelib/global/qconfig.h.new"
for SUBARCH in SSE2 SSE3 SSSE3 SSE4_1 SSE4_2 AVX AVX2 \ for SUBARCH in SSE2 SSE3 SSSE3 SSE4_1 SSE4_2 AVX AVX2 \
IWMMXT NEON \ IWMMXT \
MIPS_DSP MIPS_DSPR2; do MIPS_DSP MIPS_DSPR2; do
eval "VAL=\$CFG_$SUBARCH" eval "VAL=\$CFG_$SUBARCH"
case "$VAL" in case "$VAL" in
@ -6367,6 +6458,7 @@ EOF
fi fi
echo "#define QT_QPA_DEFAULT_PLATFORM_NAME \"$QT_QPA_DEFAULT_PLATFORM\"" >>"$outpath/src/corelib/global/qconfig.h.new" echo "#define QT_QPA_DEFAULT_PLATFORM_NAME \"$QT_QPA_DEFAULT_PLATFORM\"" >>"$outpath/src/corelib/global/qconfig.h.new"
echo "#define QT_QPA_DEFAULT_PRINTSUPPORTPLUGIN_NAME \"QT_PRINTSUPPORT_DEFAULT_PLUGIN\"" >>"$outpath/src/corelib/global/qconfig.h.new"
# avoid unecessary rebuilds by copying only if qconfig.h has changed # avoid unecessary rebuilds by copying only if qconfig.h has changed
if cmp -s "$outpath/src/corelib/global/qconfig.h" "$outpath/src/corelib/global/qconfig.h.new"; then if cmp -s "$outpath/src/corelib/global/qconfig.h" "$outpath/src/corelib/global/qconfig.h.new"; then
@ -6454,6 +6546,7 @@ EOF
if [ "$CFG_SHARED" = "no" ]; then if [ "$CFG_SHARED" = "no" ]; then
echo "QT_DEFAULT_QPA_PLUGIN = q$QT_QPA_DEFAULT_PLATFORM" >> "$QTCONFIG.tmp" echo "QT_DEFAULT_QPA_PLUGIN = q$QT_QPA_DEFAULT_PLATFORM" >> "$QTCONFIG.tmp"
echo "QT_DEFAULT_PRINTSUPPORTPLUGIN = $QT_PRINTSUPPORT_DEFAULT_PLUGIN" >> "$QTCONFIG.tmp"
echo >> "$QTCONFIG.tmp" echo >> "$QTCONFIG.tmp"
fi fi
@ -6719,6 +6812,7 @@ report_support_plugin " JPEG ................." "$CFG_JPEG" "$CFG_LIBJPEG" Qt
report_support_plugin " PNG .................." "$CFG_PNG" "$CFG_LIBPNG" QtGui report_support_plugin " PNG .................." "$CFG_PNG" "$CFG_LIBPNG" QtGui
report_support " Glib ..................." "$CFG_GLIB" report_support " Glib ..................." "$CFG_GLIB"
report_support " GTK theme .............." "$CFG_QGTKSTYLE" report_support " GTK theme .............." "$CFG_QGTKSTYLE"
report_support " journald ..............." "$CFG_JOURNALD"
report_support " Large File ............." "$CFG_LARGEFILE" report_support " Large File ............." "$CFG_LARGEFILE"
report_support " mtdev .................." "$CFG_MTDEV" yes "system library" report_support " mtdev .................." "$CFG_MTDEV" yes "system library"
report_support " Networking:" report_support " Networking:"
@ -6729,6 +6823,9 @@ report_support " getifaddrs ..........." "$CFG_GETIFADDRS"
report_support " IPv6 ifname .........." "$CFG_IPV6IFNAME" report_support " IPv6 ifname .........." "$CFG_IPV6IFNAME"
report_support " OpenSSL .............." "$CFG_OPENSSL" yes "loading libraries at run-time" linked "linked to the libraries" report_support " OpenSSL .............." "$CFG_OPENSSL" yes "loading libraries at run-time" linked "linked to the libraries"
report_support " NIS ...................." "$CFG_NIS" report_support " NIS ...................." "$CFG_NIS"
report_support " EGL ...................." "$CFG_EGL"
report_support " EGL on X ..............." "$CFG_EGL_X"
report_support " GLX ...................." "$CFG_XCB_GLX"
report_support " OpenGL ................." "$CFG_OPENGL" yes "Desktop OpenGL" es2 "OpenGL ES 2.x" report_support " OpenGL ................." "$CFG_OPENGL" yes "Desktop OpenGL" es2 "OpenGL ES 2.x"
report_support " OpenVG ................." "$CFG_OPENVG-$CFG_OPENVG_SHIVA" yes-yes "ShivaVG" yes-no "native" report_support " OpenVG ................." "$CFG_OPENVG-$CFG_OPENVG_SHIVA" yes-yes "ShivaVG" yes-no "native"
report_support " PCRE ..................." "$CFG_PCRE" yes "system library" qt "bundled copy" report_support " PCRE ..................." "$CFG_PCRE" yes "system library" qt "bundled copy"
@ -6762,7 +6859,9 @@ fi
report_support " Session management ....." "$CFG_SM" report_support " Session management ....." "$CFG_SM"
if [ "$XPLATFORM_QNX" = "yes" ]; then if [ "$XPLATFORM_QNX" = "yes" ]; then
report_support " SLOG2 .................." "$CFG_SLOG2" report_support " SLOG2 .................." "$CFG_SLOG2"
report_support " IMF ...................." "$CFG_QNX_IMF"
report_support " PPS ...................." "$CFG_PPS" report_support " PPS ...................." "$CFG_PPS"
report_support " LGMON .................." "$CFG_LGMON"
fi fi
report_support " SQL drivers:" report_support " SQL drivers:"
report_support " DB2 .................." "$CFG_SQL_db2" plugin "plugin" yes "built into QtSql" report_support " DB2 .................." "$CFG_SQL_db2" plugin "plugin" yes "built into QtSql"

36
dist/changes-5.3.0 vendored Normal file
View File

@ -0,0 +1,36 @@
Qt 5.3 introduces many new features and improvements as well as bugfixes
over the 5.2.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:
http://qt-project.org/doc/qt-5.3
The Qt version 5.3 series is binary compatible with the 5.2.x series.
Applications compiled for 5.2 will continue to run with 5.3.
Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:
http://bugreports.qt-project.org/
Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.
****************************************************************************
* Library *
****************************************************************************
QtWidgets
---------
QtCore
------
- Added QSignalBlocker, a RAII-style wrapper around
QObject::blockSignals().
QtGui
-----
- Added setSwapInterval() to QSurfaceFormat. Platforms that support
setting the swap interval are now defaulting to the value of 1,
meaning vsync is enabled.

View File

@ -49,7 +49,7 @@
StyleWidget::StyleWidget(QWidget *parent) StyleWidget::StyleWidget(QWidget *parent)
: QFrame(parent) : QFrame(parent)
{ {
m_ui.setupUi(this); m_ui.setupUi(this);
} }

View File

@ -73,8 +73,8 @@ Dialog::Dialog(QWidget *parent)
ui.setupUi(this); ui.setupUi(this);
connect(ui.loadFromFileButton, SIGNAL(clicked()), SLOT(loadFromFile())); connect(ui.loadFromFileButton, SIGNAL(clicked()), SLOT(loadFromFile()));
connect(ui.loadFromSharedMemoryButton, connect(ui.loadFromSharedMemoryButton,
SIGNAL(clicked()), SIGNAL(clicked()),
SLOT(loadFromMemory())); SLOT(loadFromMemory()));
setWindowTitle(tr("SharedMemory Example")); setWindowTitle(tr("SharedMemory Example"));
} }
//! [0] //! [0]
@ -155,7 +155,7 @@ void Dialog::loadFromMemory()
{ {
if (!sharedMemory.attach()) { if (!sharedMemory.attach()) {
ui.label->setText(tr("Unable to attach to shared memory segment.\n" \ ui.label->setText(tr("Unable to attach to shared memory segment.\n" \
"Load an image first.")); "Load an image first."));
return; return;
} }

View File

@ -84,10 +84,10 @@ BearerMonitor::BearerMonitor(QWidget *parent)
this, SLOT(configurationChanged(const QNetworkConfiguration))); this, SLOT(configurationChanged(const QNetworkConfiguration)));
connect(&manager, SIGNAL(updateCompleted()), this, SLOT(updateConfigurations())); connect(&manager, SIGNAL(updateCompleted()), this, SLOT(updateConfigurations()));
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
connect(registerButton, SIGNAL(clicked()), this, SLOT(registerNetwork())); connect(registerButton, SIGNAL(clicked()), this, SLOT(registerNetwork()));
connect(unregisterButton, SIGNAL(clicked()), this, SLOT(unregisterNetwork())); connect(unregisterButton, SIGNAL(clicked()), this, SLOT(unregisterNetwork()));
#else #else // Q_OS_WIN && !Q_OS_WINRT
nlaGroup->hide(); nlaGroup->hide();
#endif #endif
@ -257,7 +257,7 @@ void BearerMonitor::onlineStateChanged(bool isOnline)
onlineState->setText(tr("Offline")); onlineState->setText(tr("Offline"));
} }
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
void BearerMonitor::registerNetwork() void BearerMonitor::registerNetwork()
{ {
QTreeWidgetItem *item = treeWidget->currentItem(); QTreeWidgetItem *item = treeWidget->currentItem();
@ -301,7 +301,7 @@ void BearerMonitor::unregisterNetwork()
if (WSASetService(&networkInfo, RNRSERVICE_DELETE, 0) == SOCKET_ERROR) if (WSASetService(&networkInfo, RNRSERVICE_DELETE, 0) == SOCKET_ERROR)
qDebug() << "WSASetService(RNRSERVICE_DELETE) returned" << WSAGetLastError(); qDebug() << "WSASetService(RNRSERVICE_DELETE) returned" << WSAGetLastError();
} }
#endif #endif // Q_OS_WIN && !Q_OS_WINRT
void BearerMonitor::showConfigurationFor(QTreeWidgetItem *item) void BearerMonitor::showConfigurationFor(QTreeWidgetItem *item)
{ {

View File

@ -66,10 +66,10 @@ private slots:
void onlineStateChanged(bool isOnline); void onlineStateChanged(bool isOnline);
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
void registerNetwork(); void registerNetwork();
void unregisterNetwork(); void unregisterNetwork();
#endif #endif // Q_OS_WIN && !Q_OS_WINRT
void showConfigurationFor(QTreeWidgetItem *item); void showConfigurationFor(QTreeWidgetItem *item);

View File

@ -50,7 +50,7 @@
static void usage() { static void usage() {
printf("Qt DNS example - performs DNS lookups\n" printf("Qt DNS example - performs DNS lookups\n"
"Usage: dnslookup [-t <type>] name\n\n"); "Usage: dnslookup [-t <type>] [-s nameserver] name\n\n");
} }
DnsManager::DnsManager() DnsManager::DnsManager()
@ -93,6 +93,17 @@ void DnsManager::execute()
return; return;
} }
} }
if (args.size() > 1 && args.first() == "-s") {
args.takeFirst();
const QString ns = args.takeFirst();
QHostAddress nameserver(ns);
if (nameserver.isNull() || nameserver.protocol() == QAbstractSocket::UnknownNetworkLayerProtocol) {
printf("Bad nameserver address: %s\n", qPrintable(ns));
QCoreApplication::instance()->quit();
return;
}
dns->setNameserver(nameserver);
}
if (args.isEmpty()) { if (args.isEmpty()) {
usage(); usage();
QCoreApplication::instance()->quit(); QCoreApplication::instance()->quit();

View File

@ -99,9 +99,9 @@ void Dialog::start()
QMessageBox::StandardButton ret = QMessageBox::critical(this, QMessageBox::StandardButton ret = QMessageBox::critical(this,
tr("Loopback"), tr("Loopback"),
tr("Unable to start the test: %1.") tr("Unable to start the test: %1.")
.arg(tcpServer.errorString()), .arg(tcpServer.errorString()),
QMessageBox::Retry QMessageBox::Retry
| QMessageBox::Cancel); | QMessageBox::Cancel);
if (ret == QMessageBox::Cancel) if (ret == QMessageBox::Cancel)
return; return;
} }

View File

@ -23,7 +23,7 @@ qtHaveModule(widgets) {
multicastsender multicastsender
# no QProcess # no QProcess
!vxworks:!qnx:SUBDIRS += network-chat !vxworks:!qnx:!winrt:SUBDIRS += network-chat
contains(QT_CONFIG, openssl):SUBDIRS += securesocketclient contains(QT_CONFIG, openssl):SUBDIRS += securesocketclient
contains(QT_CONFIG, openssl-linked):SUBDIRS += securesocketclient contains(QT_CONFIG, openssl-linked):SUBDIRS += securesocketclient

View File

@ -50,8 +50,8 @@ int main(int argc, char **argv)
QApplication app(argc, argv); QApplication app(argc, argv);
if (!QSslSocket::supportsSsl()) { if (!QSslSocket::supportsSsl()) {
QMessageBox::information(0, "Secure Socket Client", QMessageBox::information(0, "Secure Socket Client",
"This system does not support OpenSSL."); "This system does not support OpenSSL.");
return -1; return -1;
} }

View File

@ -215,7 +215,7 @@ void PeerWireClient::sendPieceList(const QBitArray &bitField)
// Don't send the bitfield if it's all zeros. // Don't send the bitfield if it's all zeros.
if (bitField.count(true) == 0) if (bitField.count(true) == 0)
return; return;
int bitFieldSize = bitField.size(); int bitFieldSize = bitField.size();
int size = (bitFieldSize + 7) / 8; int size = (bitFieldSize + 7) / 8;

View File

@ -64,7 +64,7 @@ void TorrentServer::removeClient(TorrentClient *client)
void TorrentServer::incomingConnection(qintptr socketDescriptor) void TorrentServer::incomingConnection(qintptr socketDescriptor)
{ {
PeerWireClient *client = PeerWireClient *client =
new PeerWireClient(ConnectionManager::instance()->clientId(), this); new PeerWireClient(ConnectionManager::instance()->clientId(), this);
if (client->setSocketDescriptor(socketDescriptor)) { if (client->setSocketDescriptor(socketDescriptor)) {
if (ConnectionManager::instance()->canAddConnection() && !clients.isEmpty()) { if (ConnectionManager::instance()->canAddConnection() && !clients.isEmpty()) {

View File

@ -79,40 +79,40 @@ void GeometryEngine::initCubeGeometry()
// is different. // is different.
VertexData vertices[] = { VertexData vertices[] = {
// Vertex data for face 0 // Vertex data for face 0
{QVector3D(-1.0, -1.0, 1.0), QVector2D(0.0, 0.0)}, // v0 {QVector3D(-1.0f, -1.0f, 1.0f), QVector2D(0.0f, 0.0f)}, // v0
{QVector3D( 1.0, -1.0, 1.0), QVector2D(0.33, 0.0)}, // v1 {QVector3D( 1.0f, -1.0f, 1.0f), QVector2D(0.33f, 0.0f)}, // v1
{QVector3D(-1.0, 1.0, 1.0), QVector2D(0.0, 0.5)}, // v2 {QVector3D(-1.0f, 1.0f, 1.0f), QVector2D(0.0f, 0.5f)}, // v2
{QVector3D( 1.0, 1.0, 1.0), QVector2D(0.33, 0.5)}, // v3 {QVector3D( 1.0f, 1.0f, 1.0f), QVector2D(0.33f, 0.5f)}, // v3
// Vertex data for face 1 // Vertex data for face 1
{QVector3D( 1.0, -1.0, 1.0), QVector2D( 0.0, 0.5)}, // v4 {QVector3D( 1.0f, -1.0f, 1.0f), QVector2D( 0.0f, 0.5f)}, // v4
{QVector3D( 1.0, -1.0, -1.0), QVector2D(0.33, 0.5)}, // v5 {QVector3D( 1.0f, -1.0f, -1.0f), QVector2D(0.33f, 0.5f)}, // v5
{QVector3D( 1.0, 1.0, 1.0), QVector2D(0.0, 1.0)}, // v6 {QVector3D( 1.0f, 1.0f, 1.0f), QVector2D(0.0f, 1.0f)}, // v6
{QVector3D( 1.0, 1.0, -1.0), QVector2D(0.33, 1.0)}, // v7 {QVector3D( 1.0f, 1.0f, -1.0f), QVector2D(0.33f, 1.0f)}, // v7
// Vertex data for face 2 // Vertex data for face 2
{QVector3D( 1.0, -1.0, -1.0), QVector2D(0.66, 0.5)}, // v8 {QVector3D( 1.0f, -1.0f, -1.0f), QVector2D(0.66f, 0.5f)}, // v8
{QVector3D(-1.0, -1.0, -1.0), QVector2D(1.0, 0.5)}, // v9 {QVector3D(-1.0f, -1.0f, -1.0f), QVector2D(1.0f, 0.5f)}, // v9
{QVector3D( 1.0, 1.0, -1.0), QVector2D(0.66, 1.0)}, // v10 {QVector3D( 1.0f, 1.0f, -1.0f), QVector2D(0.66f, 1.0f)}, // v10
{QVector3D(-1.0, 1.0, -1.0), QVector2D(1.0, 1.0)}, // v11 {QVector3D(-1.0f, 1.0f, -1.0f), QVector2D(1.0f, 1.0f)}, // v11
// Vertex data for face 3 // Vertex data for face 3
{QVector3D(-1.0, -1.0, -1.0), QVector2D(0.66, 0.0)}, // v12 {QVector3D(-1.0f, -1.0f, -1.0f), QVector2D(0.66f, 0.0f)}, // v12
{QVector3D(-1.0, -1.0, 1.0), QVector2D(1.0, 0.0)}, // v13 {QVector3D(-1.0f, -1.0f, 1.0f), QVector2D(1.0f, 0.0f)}, // v13
{QVector3D(-1.0, 1.0, -1.0), QVector2D(0.66, 0.5)}, // v14 {QVector3D(-1.0f, 1.0f, -1.0f), QVector2D(0.66f, 0.5f)}, // v14
{QVector3D(-1.0, 1.0, 1.0), QVector2D(1.0, 0.5)}, // v15 {QVector3D(-1.0f, 1.0f, 1.0f), QVector2D(1.0f, 0.5f)}, // v15
// Vertex data for face 4 // Vertex data for face 4
{QVector3D(-1.0, -1.0, -1.0), QVector2D(0.33, 0.0)}, // v16 {QVector3D(-1.0f, -1.0f, -1.0f), QVector2D(0.33f, 0.0f)}, // v16
{QVector3D( 1.0, -1.0, -1.0), QVector2D(0.66, 0.0)}, // v17 {QVector3D( 1.0f, -1.0f, -1.0f), QVector2D(0.66f, 0.0f)}, // v17
{QVector3D(-1.0, -1.0, 1.0), QVector2D(0.33, 0.5)}, // v18 {QVector3D(-1.0f, -1.0f, 1.0f), QVector2D(0.33f, 0.5f)}, // v18
{QVector3D( 1.0, -1.0, 1.0), QVector2D(0.66, 0.5)}, // v19 {QVector3D( 1.0f, -1.0f, 1.0f), QVector2D(0.66f, 0.5f)}, // v19
// Vertex data for face 5 // Vertex data for face 5
{QVector3D(-1.0, 1.0, 1.0), QVector2D(0.33, 0.5)}, // v20 {QVector3D(-1.0f, 1.0f, 1.0f), QVector2D(0.33f, 0.5f)}, // v20
{QVector3D( 1.0, 1.0, 1.0), QVector2D(0.66, 0.5)}, // v21 {QVector3D( 1.0f, 1.0f, 1.0f), QVector2D(0.66f, 0.5f)}, // v21
{QVector3D(-1.0, 1.0, -1.0), QVector2D(0.33, 1.0)}, // v22 {QVector3D(-1.0f, 1.0f, -1.0f), QVector2D(0.33f, 1.0f)}, // v22
{QVector3D( 1.0, 1.0, -1.0), QVector2D(0.66, 1.0)} // v23 {QVector3D( 1.0f, 1.0f, -1.0f), QVector2D(0.66f, 1.0f)} // v23
}; };
// Indices for drawing cube faces using triangle strips. // Indices for drawing cube faces using triangle strips.

View File

@ -112,20 +112,20 @@ void GLWidget::initializeGL()
{ {
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
// draw cube background // draw cube background
glPushMatrix(); glPushMatrix();
glLoadIdentity(); glLoadIdentity();
glTranslatef(0.5f, 0.5f, -2.0f); glTranslatef(0.5f, 0.5f, -2.0f);
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);
glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_COLOR_ARRAY);
glVertexPointer(2, GL_INT, 0, faceArray); glVertexPointer(2, GL_INT, 0, faceArray);
glDrawArrays(GL_QUADS, 0, 4); glDrawArrays(GL_QUADS, 0, 4);
glVertexPointer(3, GL_INT, 0, cubeArray); glVertexPointer(3, GL_INT, 0, cubeArray);
glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_COLOR_ARRAY);
glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D);
glPopMatrix(); glPopMatrix();
// draw cube // draw cube
glTranslatef(0.5f, 0.5f, 0.5f); glTranslatef(0.5f, 0.5f, 0.5f);
glRotatef(3.0f, 1.0f, 1.0f, 1.0f); glRotatef(3.0f, 1.0f, 1.0f, 1.0f);
glTranslatef(-0.5f, -0.5f, -0.5f); glTranslatef(-0.5f, -0.5f, -0.5f);
@ -205,12 +205,12 @@ void GLWidget::paintGL()
glTranslatef(-1.2f, -0.8f, 0.0f); glTranslatef(-1.2f, -0.8f, 0.0f);
glScalef(0.2f, 0.2f, 0.2f); glScalef(0.2f, 0.2f, 0.2f);
for (int y = 0; y < 5; ++y) { for (int y = 0; y < 5; ++y) {
for (int x = 0; x < 5; ++x) { for (int x = 0; x < 5; ++x) {
glTranslatef(2.0f, 0, 0); glTranslatef(2.0f, 0, 0);
glColor4f(0.8f, 0.8f, 0.8f, 1.0f); glColor4f(0.8f, 0.8f, 0.8f, 1.0f);
glDrawArrays(GL_QUADS, 0, 4); glDrawArrays(GL_QUADS, 0, 4);
} }
glTranslatef(-10.0f, 2.0f, 0); glTranslatef(-10.0f, 2.0f, 0);
} }
glVertexPointer(3, GL_INT, 0, cubeArray); glVertexPointer(3, GL_INT, 0, cubeArray);

View File

@ -48,8 +48,8 @@ int main(int argc, char **argv)
QApplication a(argc, argv); QApplication a(argc, argv);
if (!QGLFormat::hasOpenGL() || !QGLFramebufferObject::hasOpenGLFramebufferObjects()) { if (!QGLFormat::hasOpenGL() || !QGLFramebufferObject::hasOpenGLFramebufferObjects()) {
QMessageBox::information(0, "OpenGL framebuffer objects 2", QMessageBox::information(0, "OpenGL framebuffer objects 2",
"This system does not support OpenGL/framebuffer objects."); "This system does not support OpenGL/framebuffer objects.");
return -1; return -1;
} }

View File

@ -54,8 +54,8 @@ int main(int argc, char **argv)
widget.makeCurrent(); widget.makeCurrent();
if (!QGLFormat::hasOpenGL() || !QGLPixelBuffer::hasOpenGLPbuffers()) { if (!QGLFormat::hasOpenGL() || !QGLPixelBuffer::hasOpenGLPbuffers()) {
QMessageBox::information(0, "OpenGL pbuffers", QMessageBox::information(0, "OpenGL pbuffers",
"This system does not support OpenGL/pbuffers."); "This system does not support OpenGL/pbuffers.");
return -1; return -1;
} }

View File

@ -51,8 +51,8 @@ int main(int argc, char **argv)
widget.resize(640, 480); widget.resize(640, 480);
widget.makeCurrent(); widget.makeCurrent();
if (!QGLFormat::hasOpenGL() || !QGLPixelBuffer::hasOpenGLPbuffers()) { if (!QGLFormat::hasOpenGL() || !QGLPixelBuffer::hasOpenGLPbuffers()) {
QMessageBox::information(0, "OpenGL pbuffers 2", QMessageBox::information(0, "OpenGL pbuffers 2",
"This system does not support OpenGL/pbuffers."); "This system does not support OpenGL/pbuffers.");
return -1; return -1;
} }
widget.show(); widget.show();

View File

@ -50,16 +50,16 @@ int main(int argc, char **argv)
f.setSampleBuffers(true); f.setSampleBuffers(true);
QGLFormat::setDefaultFormat(f); QGLFormat::setDefaultFormat(f);
if (!QGLFormat::hasOpenGL()) { if (!QGLFormat::hasOpenGL()) {
QMessageBox::information(0, "OpenGL samplebuffers", QMessageBox::information(0, "OpenGL samplebuffers",
"This system does not support OpenGL."); "This system does not support OpenGL.");
return 0; return 0;
} }
GLWidget widget(0); GLWidget widget(0);
if (!widget.format().sampleBuffers()) { if (!widget.format().sampleBuffers()) {
QMessageBox::information(0, "OpenGL samplebuffers", QMessageBox::information(0, "OpenGL samplebuffers",
"This system does not have sample buffer support."); "This system does not have sample buffer support.");
return 0; return 0;
} }

View File

@ -50,9 +50,7 @@ GLWidget::GLWidget(QWidget *parent, QGLWidget *shareWidget)
xRot = 0; xRot = 0;
yRot = 0; yRot = 0;
zRot = 0; zRot = 0;
#ifdef QT_OPENGL_ES_2
program = 0; program = 0;
#endif
} }
GLWidget::~GLWidget() GLWidget::~GLWidget()
@ -89,12 +87,10 @@ void GLWidget::initializeGL()
glEnable(GL_DEPTH_TEST); glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE); glEnable(GL_CULL_FACE);
#ifndef QT_OPENGL_ES_2 #ifdef GL_TEXTURE_2D
glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D);
#endif #endif
#ifdef QT_OPENGL_ES_2
#define PROGRAM_VERTEX_ATTRIBUTE 0 #define PROGRAM_VERTEX_ATTRIBUTE 0
#define PROGRAM_TEXCOORD_ATTRIBUTE 1 #define PROGRAM_TEXCOORD_ATTRIBUTE 1
@ -130,8 +126,6 @@ void GLWidget::initializeGL()
program->bind(); program->bind();
program->setUniformValue("texture", 0); program->setUniformValue("texture", 0);
#endif
} }
void GLWidget::paintGL() void GLWidget::paintGL()
@ -139,21 +133,6 @@ void GLWidget::paintGL()
qglClearColor(clearColor); qglClearColor(clearColor);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
#if !defined(QT_OPENGL_ES_2)
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -10.0f);
glRotatef(xRot / 16.0f, 1.0f, 0.0f, 0.0f);
glRotatef(yRot / 16.0f, 0.0f, 1.0f, 0.0f);
glRotatef(zRot / 16.0f, 0.0f, 0.0f, 1.0f);
glVertexPointer(3, GL_FLOAT, 0, vertices.constData());
glTexCoordPointer(2, GL_FLOAT, 0, texCoords.constData());
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
#else
QMatrix4x4 m; QMatrix4x4 m;
m.ortho(-0.5f, +0.5f, +0.5f, -0.5f, 4.0f, 15.0f); m.ortho(-0.5f, +0.5f, +0.5f, -0.5f, 4.0f, 15.0f);
m.translate(0.0f, 0.0f, -10.0f); m.translate(0.0f, 0.0f, -10.0f);
@ -169,8 +148,6 @@ void GLWidget::paintGL()
program->setAttributeArray program->setAttributeArray
(PROGRAM_TEXCOORD_ATTRIBUTE, texCoords.constData()); (PROGRAM_TEXCOORD_ATTRIBUTE, texCoords.constData());
#endif
for (int i = 0; i < 6; ++i) { for (int i = 0; i < 6; ++i) {
glBindTexture(GL_TEXTURE_2D, textures[i]); glBindTexture(GL_TEXTURE_2D, textures[i]);
glDrawArrays(GL_TRIANGLE_FAN, i * 4, 4); glDrawArrays(GL_TRIANGLE_FAN, i * 4, 4);
@ -181,17 +158,6 @@ void GLWidget::resizeGL(int width, int height)
{ {
int side = qMin(width, height); int side = qMin(width, height);
glViewport((width - side) / 2, (height - side) / 2, side, side); glViewport((width - side) / 2, (height - side) / 2, side, side);
#if !defined(QT_OPENGL_ES_2)
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
#ifndef QT_OPENGL_ES
glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0);
#else
glOrthof(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0);
#endif
glMatrixMode(GL_MODELVIEW);
#endif
} }
void GLWidget::mousePressEvent(QMouseEvent *event) void GLWidget::mousePressEvent(QMouseEvent *event)

View File

@ -81,9 +81,7 @@ private:
GLuint textures[6]; GLuint textures[6];
QVector<QVector3D> vertices; QVector<QVector3D> vertices;
QVector<QVector2D> texCoords; QVector<QVector2D> texCoords;
#ifdef QT_OPENGL_ES_2
QGLShaderProgram *program; QGLShaderProgram *program;
#endif
}; };
#endif #endif

View File

@ -186,7 +186,7 @@ bool MainWindow::maybeSave()
tr("The image has been modified.\n" tr("The image has been modified.\n"
"Do you want to save your changes?"), "Do you want to save your changes?"),
QMessageBox::Save | QMessageBox::Discard QMessageBox::Save | QMessageBox::Discard
| QMessageBox::Cancel); | QMessageBox::Cancel);
if (ret == QMessageBox::Save) { if (ret == QMessageBox::Save) {
return saveFile("png"); return saveFile("png");
} else if (ret == QMessageBox::Cancel) { } else if (ret == QMessageBox::Cancel) {

View File

@ -1,4 +1,4 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal ** Contact: http://www.qt-project.org/legal

View File

@ -137,7 +137,7 @@ void BlurPicker::keyPressEvent(QKeyEvent *event)
} }
} }
void BlurPicker::resizeEvent(QResizeEvent */*event*/) void BlurPicker::resizeEvent(QResizeEvent * /* event */)
{ {
} }

View File

@ -134,6 +134,6 @@ void Lighting::animate()
m_scene.update(); m_scene.update();
} }
void Lighting::resizeEvent(QResizeEvent */*event*/) void Lighting::resizeEvent(QResizeEvent * /* event */)
{ {
} }

View File

@ -196,9 +196,9 @@ public:
{ {
GLBUFFERS_ASSERT_OPENGL("GLVertexBuffer::GLVertexBuffer", glGenBuffers && glBindBuffer && glBufferData, return) GLBUFFERS_ASSERT_OPENGL("GLVertexBuffer::GLVertexBuffer", glGenBuffers && glBindBuffer && glBufferData, return)
glGenBuffers(1, &m_buffer); glGenBuffers(1, &m_buffer);
glBindBuffer(GL_ARRAY_BUFFER, m_buffer); glBindBuffer(GL_ARRAY_BUFFER, m_buffer);
glBufferData(GL_ARRAY_BUFFER, (m_length = length) * sizeof(T), data, mode); glBufferData(GL_ARRAY_BUFFER, (m_length = length) * sizeof(T), data, mode);
} }
~GLVertexBuffer() ~GLVertexBuffer()

View File

@ -45,54 +45,54 @@
bool GLExtensionFunctions::resolve(const QGLContext *context) bool GLExtensionFunctions::resolve(const QGLContext *context)
{ {
bool ok = true; bool ok = true;
RESOLVE_GL_FUNC(GenFramebuffersEXT) RESOLVE_GL_FUNC(GenFramebuffersEXT)
RESOLVE_GL_FUNC(GenRenderbuffersEXT) RESOLVE_GL_FUNC(GenRenderbuffersEXT)
RESOLVE_GL_FUNC(BindRenderbufferEXT) RESOLVE_GL_FUNC(BindRenderbufferEXT)
RESOLVE_GL_FUNC(RenderbufferStorageEXT) RESOLVE_GL_FUNC(RenderbufferStorageEXT)
RESOLVE_GL_FUNC(DeleteFramebuffersEXT) RESOLVE_GL_FUNC(DeleteFramebuffersEXT)
RESOLVE_GL_FUNC(DeleteRenderbuffersEXT) RESOLVE_GL_FUNC(DeleteRenderbuffersEXT)
RESOLVE_GL_FUNC(BindFramebufferEXT) RESOLVE_GL_FUNC(BindFramebufferEXT)
RESOLVE_GL_FUNC(FramebufferTexture2DEXT) RESOLVE_GL_FUNC(FramebufferTexture2DEXT)
RESOLVE_GL_FUNC(FramebufferRenderbufferEXT) RESOLVE_GL_FUNC(FramebufferRenderbufferEXT)
RESOLVE_GL_FUNC(CheckFramebufferStatusEXT) RESOLVE_GL_FUNC(CheckFramebufferStatusEXT)
RESOLVE_GL_FUNC(ActiveTexture) RESOLVE_GL_FUNC(ActiveTexture)
RESOLVE_GL_FUNC(TexImage3D) RESOLVE_GL_FUNC(TexImage3D)
RESOLVE_GL_FUNC(GenBuffers) RESOLVE_GL_FUNC(GenBuffers)
RESOLVE_GL_FUNC(BindBuffer) RESOLVE_GL_FUNC(BindBuffer)
RESOLVE_GL_FUNC(BufferData) RESOLVE_GL_FUNC(BufferData)
RESOLVE_GL_FUNC(DeleteBuffers) RESOLVE_GL_FUNC(DeleteBuffers)
RESOLVE_GL_FUNC(MapBuffer) RESOLVE_GL_FUNC(MapBuffer)
RESOLVE_GL_FUNC(UnmapBuffer) RESOLVE_GL_FUNC(UnmapBuffer)
return ok; return ok;
} }
bool GLExtensionFunctions::fboSupported() { bool GLExtensionFunctions::fboSupported() {
return GenFramebuffersEXT return GenFramebuffersEXT
&& GenRenderbuffersEXT && GenRenderbuffersEXT
&& BindRenderbufferEXT && BindRenderbufferEXT
&& RenderbufferStorageEXT && RenderbufferStorageEXT
&& DeleteFramebuffersEXT && DeleteFramebuffersEXT
&& DeleteRenderbuffersEXT && DeleteRenderbuffersEXT
&& BindFramebufferEXT && BindFramebufferEXT
&& FramebufferTexture2DEXT && FramebufferTexture2DEXT
&& FramebufferRenderbufferEXT && FramebufferRenderbufferEXT
&& CheckFramebufferStatusEXT; && CheckFramebufferStatusEXT;
} }
bool GLExtensionFunctions::openGL15Supported() { bool GLExtensionFunctions::openGL15Supported() {
return ActiveTexture return ActiveTexture
&& TexImage3D && TexImage3D
&& GenBuffers && GenBuffers
&& BindBuffer && BindBuffer
&& BufferData && BufferData
&& DeleteBuffers && DeleteBuffers
&& MapBuffer && MapBuffer
&& UnmapBuffer; && UnmapBuffer;
} }
#undef RESOLVE_GL_FUNC #undef RESOLVE_GL_FUNC

View File

@ -145,37 +145,37 @@ typedef GLboolean (APIENTRY *_glUnmapBuffer) (GLenum);
struct GLExtensionFunctions struct GLExtensionFunctions
{ {
bool resolve(const QGLContext *context); bool resolve(const QGLContext *context);
bool fboSupported(); bool fboSupported();
bool openGL15Supported(); // the rest: multi-texture, 3D-texture, vertex buffer objects bool openGL15Supported(); // the rest: multi-texture, 3D-texture, vertex buffer objects
_glGenFramebuffersEXT GenFramebuffersEXT; _glGenFramebuffersEXT GenFramebuffersEXT;
_glGenRenderbuffersEXT GenRenderbuffersEXT; _glGenRenderbuffersEXT GenRenderbuffersEXT;
_glBindRenderbufferEXT BindRenderbufferEXT; _glBindRenderbufferEXT BindRenderbufferEXT;
_glRenderbufferStorageEXT RenderbufferStorageEXT; _glRenderbufferStorageEXT RenderbufferStorageEXT;
_glDeleteFramebuffersEXT DeleteFramebuffersEXT; _glDeleteFramebuffersEXT DeleteFramebuffersEXT;
_glDeleteRenderbuffersEXT DeleteRenderbuffersEXT; _glDeleteRenderbuffersEXT DeleteRenderbuffersEXT;
_glBindFramebufferEXT BindFramebufferEXT; _glBindFramebufferEXT BindFramebufferEXT;
_glFramebufferTexture2DEXT FramebufferTexture2DEXT; _glFramebufferTexture2DEXT FramebufferTexture2DEXT;
_glFramebufferRenderbufferEXT FramebufferRenderbufferEXT; _glFramebufferRenderbufferEXT FramebufferRenderbufferEXT;
_glCheckFramebufferStatusEXT CheckFramebufferStatusEXT; _glCheckFramebufferStatusEXT CheckFramebufferStatusEXT;
_glActiveTexture ActiveTexture; _glActiveTexture ActiveTexture;
_glTexImage3D TexImage3D; _glTexImage3D TexImage3D;
_glGenBuffers GenBuffers; _glGenBuffers GenBuffers;
_glBindBuffer BindBuffer; _glBindBuffer BindBuffer;
_glBufferData BufferData; _glBufferData BufferData;
_glDeleteBuffers DeleteBuffers; _glDeleteBuffers DeleteBuffers;
_glMapBuffer MapBuffer; _glMapBuffer MapBuffer;
_glUnmapBuffer UnmapBuffer; _glUnmapBuffer UnmapBuffer;
}; };
inline GLExtensionFunctions &getGLExtensionFunctions() inline GLExtensionFunctions &getGLExtensionFunctions()
{ {
static GLExtensionFunctions funcs; static GLExtensionFunctions funcs;
return funcs; return funcs;
} }
#define glGenFramebuffersEXT getGLExtensionFunctions().GenFramebuffersEXT #define glGenFramebuffersEXT getGLExtensionFunctions().GenFramebuffersEXT

View File

@ -186,10 +186,10 @@ TwoSidedGraphicsWidget::TwoSidedGraphicsWidget(QGraphicsScene *scene)
void TwoSidedGraphicsWidget::setWidget(int index, QWidget *widget) void TwoSidedGraphicsWidget::setWidget(int index, QWidget *widget)
{ {
if (index < 0 || index >= 2) if (index < 0 || index >= 2)
{ {
qWarning("TwoSidedGraphicsWidget::setWidget: Index out of bounds, index == %d", index); qWarning("TwoSidedGraphicsWidget::setWidget: Index out of bounds, index == %d", index);
return; return;
} }
GraphicsWidget *proxy = new GraphicsWidget; GraphicsWidget *proxy = new GraphicsWidget;
proxy->setWidget(widget); proxy->setWidget(widget);
@ -210,10 +210,10 @@ void TwoSidedGraphicsWidget::setWidget(int index, QWidget *widget)
QWidget *TwoSidedGraphicsWidget::widget(int index) QWidget *TwoSidedGraphicsWidget::widget(int index)
{ {
if (index < 0 || index >= 2) if (index < 0 || index >= 2)
{ {
qWarning("TwoSidedGraphicsWidget::widget: Index out of bounds, index == %d", index); qWarning("TwoSidedGraphicsWidget::widget: Index out of bounds, index == %d", index);
return 0; return 0;
} }
return m_proxyWidgets[index]->widget(); return m_proxyWidgets[index]->widget();
} }

View File

@ -193,9 +193,9 @@ void GraphWidget::drawBackground(QPainter *painter, const QRectF &rect)
QRectF rightShadow(sceneRect.right(), sceneRect.top() + 5, 5, sceneRect.height()); QRectF rightShadow(sceneRect.right(), sceneRect.top() + 5, 5, sceneRect.height());
QRectF bottomShadow(sceneRect.left() + 5, sceneRect.bottom(), sceneRect.width(), 5); QRectF bottomShadow(sceneRect.left() + 5, sceneRect.bottom(), sceneRect.width(), 5);
if (rightShadow.intersects(rect) || rightShadow.contains(rect)) if (rightShadow.intersects(rect) || rightShadow.contains(rect))
painter->fillRect(rightShadow, Qt::darkGray); painter->fillRect(rightShadow, Qt::darkGray);
if (bottomShadow.intersects(rect) || bottomShadow.contains(rect)) if (bottomShadow.intersects(rect) || bottomShadow.contains(rect))
painter->fillRect(bottomShadow, Qt::darkGray); painter->fillRect(bottomShadow, Qt::darkGray);
// Fill // Fill
QLinearGradient gradient(sceneRect.topLeft(), sceneRect.bottomRight()); QLinearGradient gradient(sceneRect.topLeft(), sceneRect.bottomRight());

View File

@ -156,11 +156,11 @@ void MainWindow::printImage()
{ {
#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG) #if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
if (model->rowCount(QModelIndex())*model->columnCount(QModelIndex()) > 90000) { if (model->rowCount(QModelIndex())*model->columnCount(QModelIndex()) > 90000) {
QMessageBox::StandardButton answer; QMessageBox::StandardButton answer;
answer = QMessageBox::question(this, tr("Large Image Size"), answer = QMessageBox::question(this, tr("Large Image Size"),
tr("The printed image may be very large. Are you sure that " tr("The printed image may be very large. Are you sure that "
"you want to print it?"), "you want to print it?"),
QMessageBox::Yes | QMessageBox::No); QMessageBox::Yes | QMessageBox::No);
if (answer == QMessageBox::No) if (answer == QMessageBox::No)
return; return;
} }

View File

@ -101,7 +101,7 @@ void Dialog::createHorizontalGroupBox()
for (int i = 0; i < NumButtons; ++i) { for (int i = 0; i < NumButtons; ++i) {
buttons[i] = new QPushButton(tr("Button %1").arg(i + 1)); buttons[i] = new QPushButton(tr("Button %1").arg(i + 1));
layout->addWidget(buttons[i]); layout->addWidget(buttons[i]);
} }
horizontalGroupBox->setLayout(layout); horizontalGroupBox->setLayout(layout);
} }

View File

@ -69,13 +69,13 @@ public:
private: private:
struct ItemWrapper struct ItemWrapper
{ {
ItemWrapper(QLayoutItem *i, Position p) { ItemWrapper(QLayoutItem *i, Position p) {
item = i; item = i;
position = p; position = p;
} }
QLayoutItem *item; QLayoutItem *item;
Position position; Position position;
}; };
enum SizeType { MinimumSize, SizeHint }; enum SizeType { MinimumSize, SizeHint };

View File

@ -636,7 +636,7 @@ void BlueTitleBar::paintEvent(QPaintEvent*)
centerPm.height(), centerPm); centerPm.height(), centerPm);
} }
void BlueTitleBar::mousePressEvent(QMouseEvent *event) void BlueTitleBar::mouseReleaseEvent(QMouseEvent *event)
{ {
QPoint pos = event->pos(); QPoint pos = event->pos();

View File

@ -124,7 +124,7 @@ public:
QSize minimumSizeHint() const; QSize minimumSizeHint() const;
protected: protected:
void paintEvent(QPaintEvent *event); void paintEvent(QPaintEvent *event);
void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event);
public slots: public slots:
void updateMask(); void updateMask();

View File

@ -145,13 +145,13 @@ void MdiChild::documentWasModified()
bool MdiChild::maybeSave() bool MdiChild::maybeSave()
{ {
if (document()->isModified()) { if (document()->isModified()) {
QMessageBox::StandardButton ret; QMessageBox::StandardButton ret;
ret = QMessageBox::warning(this, tr("MDI"), ret = QMessageBox::warning(this, tr("MDI"),
tr("'%1' has been modified.\n" tr("'%1' has been modified.\n"
"Do you want to save your changes?") "Do you want to save your changes?")
.arg(userFriendlyCurrentFile()), .arg(userFriendlyCurrentFile()),
QMessageBox::Save | QMessageBox::Discard QMessageBox::Save | QMessageBox::Discard
| QMessageBox::Cancel); | QMessageBox::Cancel);
if (ret == QMessageBox::Save) if (ret == QMessageBox::Save)
return save(); return save();
else if (ret == QMessageBox::Cancel) else if (ret == QMessageBox::Cancel)

View File

@ -282,12 +282,12 @@ void MainWindow::writeSettings()
bool MainWindow::maybeSave() bool MainWindow::maybeSave()
{ {
if (textEdit->document()->isModified()) { if (textEdit->document()->isModified()) {
QMessageBox::StandardButton ret; QMessageBox::StandardButton ret;
ret = QMessageBox::warning(this, tr("SDI"), ret = QMessageBox::warning(this, tr("SDI"),
tr("The document has been modified.\n" tr("The document has been modified.\n"
"Do you want to save your changes?"), "Do you want to save your changes?"),
QMessageBox::Save | QMessageBox::Discard QMessageBox::Save | QMessageBox::Discard
| QMessageBox::Cancel); | QMessageBox::Cancel);
if (ret == QMessageBox::Save) if (ret == QMessageBox::Save)
return save(); return save();
else if (ret == QMessageBox::Cancel) else if (ret == QMessageBox::Cancel)

View File

@ -283,7 +283,7 @@ void TextEdit::setupTextActions()
tr("&Bold"), this); tr("&Bold"), this);
actionTextBold->setShortcut(Qt::CTRL + Qt::Key_B); actionTextBold->setShortcut(Qt::CTRL + Qt::Key_B);
actionTextBold->setPriority(QAction::LowPriority); actionTextBold->setPriority(QAction::LowPriority);
QFont bold; QFont bold;
bold.setBold(true); bold.setBold(true);
actionTextBold->setFont(bold); actionTextBold->setFont(bold);
connect(actionTextBold, SIGNAL(triggered()), this, SLOT(textBold())); connect(actionTextBold, SIGNAL(triggered()), this, SLOT(textBold()));

View File

@ -162,7 +162,7 @@ void MainWindow::createActions()
QString text = tr("%1...").arg(QString(codec->name())); QString text = tr("%1...").arg(QString(codec->name()));
QAction *action = new QAction(text, this); QAction *action = new QAction(text, this);
action->setData(codec->name()); action->setData(codec->name());
connect(action, SIGNAL(triggered()), this, SLOT(save())); connect(action, SIGNAL(triggered()), this, SLOT(save()));
saveAsActs.append(action); saveAsActs.append(action);
} }

View File

@ -77,14 +77,14 @@ bool MyModel::setData(const QModelIndex & index, const QVariant & value, int rol
{ {
//save value from editor to member m_gridData //save value from editor to member m_gridData
m_gridData[index.row()][index.column()] = value.toString(); m_gridData[index.row()][index.column()] = value.toString();
//for presentation purposes only: build and emit a joined string //for presentation purposes only: build and emit a joined string
QString result; QString result;
for(int row= 0; row < ROWS; row++) for (int row= 0; row < ROWS; row++)
{ {
for(int col= 0; col < COLS; col++) for(int col= 0; col < COLS; col++)
{ {
result += m_gridData[row][col] + " "; result += m_gridData[row][col] + " ";
} }
} }
emit editCompleted( result ); emit editCompleted( result );
} }

View File

@ -69,7 +69,7 @@ Calculator::Calculator(QWidget *parent)
//! [4] //! [4]
for (int i = 0; i < NumDigitButtons; ++i) { for (int i = 0; i < NumDigitButtons; ++i) {
digitButtons[i] = createButton(QString::number(i), SLOT(digitClicked())); digitButtons[i] = createButton(QString::number(i), SLOT(digitClicked()));
} }
Button *pointButton = createButton(tr("."), SLOT(pointClicked())); Button *pointButton = createButton(tr("."), SLOT(pointClicked()));
@ -144,7 +144,7 @@ void Calculator::digitClicked()
if (waitingForOperand) { if (waitingForOperand) {
display->clear(); display->clear();
waitingForOperand = false; waitingForOperand = false;
} }
display->setText(display->text() + QString::number(digitValue)); display->setText(display->text() + QString::number(digitValue));
} }
@ -169,8 +169,8 @@ void Calculator::unaryOperatorClicked()
result = pow(operand, 2.0); result = pow(operand, 2.0);
} else if (clickedOperator == tr("1/x")) { } else if (clickedOperator == tr("1/x")) {
if (operand == 0.0) { if (operand == 0.0) {
abortOperation(); abortOperation();
return; return;
} }
result = 1.0 / operand; result = 1.0 / operand;
} }
@ -192,7 +192,7 @@ void Calculator::additiveOperatorClicked()
//! [12] //! [13] //! [12] //! [13]
if (!calculate(operand, pendingMultiplicativeOperator)) { if (!calculate(operand, pendingMultiplicativeOperator)) {
abortOperation(); abortOperation();
return; return;
} }
display->setText(QString::number(factorSoFar)); display->setText(QString::number(factorSoFar));
operand = factorSoFar; operand = factorSoFar;
@ -205,7 +205,7 @@ void Calculator::additiveOperatorClicked()
//! [14] //! [15] //! [14] //! [15]
if (!calculate(operand, pendingAdditiveOperator)) { if (!calculate(operand, pendingAdditiveOperator)) {
abortOperation(); abortOperation();
return; return;
} }
display->setText(QString::number(sumSoFar)); display->setText(QString::number(sumSoFar));
} else { } else {
@ -229,7 +229,7 @@ void Calculator::multiplicativeOperatorClicked()
if (!pendingMultiplicativeOperator.isEmpty()) { if (!pendingMultiplicativeOperator.isEmpty()) {
if (!calculate(operand, pendingMultiplicativeOperator)) { if (!calculate(operand, pendingMultiplicativeOperator)) {
abortOperation(); abortOperation();
return; return;
} }
display->setText(QString::number(factorSoFar)); display->setText(QString::number(factorSoFar));
} else { } else {
@ -249,7 +249,7 @@ void Calculator::equalClicked()
if (!pendingMultiplicativeOperator.isEmpty()) { if (!pendingMultiplicativeOperator.isEmpty()) {
if (!calculate(operand, pendingMultiplicativeOperator)) { if (!calculate(operand, pendingMultiplicativeOperator)) {
abortOperation(); abortOperation();
return; return;
} }
operand = factorSoFar; operand = factorSoFar;
factorSoFar = 0.0; factorSoFar = 0.0;
@ -258,7 +258,7 @@ void Calculator::equalClicked()
if (!pendingAdditiveOperator.isEmpty()) { if (!pendingAdditiveOperator.isEmpty()) {
if (!calculate(operand, pendingAdditiveOperator)) { if (!calculate(operand, pendingAdditiveOperator)) {
abortOperation(); abortOperation();
return; return;
} }
pendingAdditiveOperator.clear(); pendingAdditiveOperator.clear();
} else { } else {
@ -387,9 +387,9 @@ bool Calculator::calculate(double rightOperand, const QString &pendingOperator)
} else if (pendingOperator == tr("\303\227")) { } else if (pendingOperator == tr("\303\227")) {
factorSoFar *= rightOperand; factorSoFar *= rightOperand;
} else if (pendingOperator == tr("\303\267")) { } else if (pendingOperator == tr("\303\267")) {
if (rightOperand == 0.0) if (rightOperand == 0.0)
return false; return false;
factorSoFar /= rightOperand; factorSoFar /= rightOperand;
} }
return true; return true;
} }

View File

@ -182,7 +182,7 @@ void Window::echoChanged(int index)
echoLineEdit->setEchoMode(QLineEdit::Password); echoLineEdit->setEchoMode(QLineEdit::Password);
break; break;
case 2: case 2:
echoLineEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit); echoLineEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);
break; break;
case 3: case 3:
echoLineEdit->setEchoMode(QLineEdit::NoEcho); echoLineEdit->setEchoMode(QLineEdit::NoEcho);
@ -221,7 +221,7 @@ void Window::alignmentChanged(int index)
alignmentLineEdit->setAlignment(Qt::AlignCenter); alignmentLineEdit->setAlignment(Qt::AlignCenter);
break; break;
case 2: case 2:
alignmentLineEdit->setAlignment(Qt::AlignRight); alignmentLineEdit->setAlignment(Qt::AlignRight);
} }
} }
//! [11] //! [11]

View File

@ -219,7 +219,7 @@ bool MainWindow::maybeSave()
tr("The image has been modified.\n" tr("The image has been modified.\n"
"Do you want to save your changes?"), "Do you want to save your changes?"),
QMessageBox::Save | QMessageBox::Discard QMessageBox::Save | QMessageBox::Discard
| QMessageBox::Cancel); | QMessageBox::Cancel);
if (ret == QMessageBox::Save) { if (ret == QMessageBox::Save) {
return saveFile("png"); return saveFile("png");
} else if (ret == QMessageBox::Cancel) { } else if (ret == QMessageBox::Cancel) {

View File

@ -94,6 +94,16 @@ void Window::createSpinBoxes()
priceSpinBox->setValue(99); priceSpinBox->setValue(99);
//! [4] //! [5] //! [4] //! [5]
groupSeparatorSpinBox = new QSpinBox;
groupSeparatorSpinBox->setRange(-99999999, 99999999);
groupSeparatorSpinBox->setValue(1000);
groupSeparatorSpinBox->setGroupSeparatorShown(true);
QCheckBox *groupSeparatorChkBox = new QCheckBox;
groupSeparatorChkBox->setText(tr("Show group separator"));
groupSeparatorChkBox->setChecked(true);
connect(groupSeparatorChkBox, &QCheckBox::toggled, groupSeparatorSpinBox,
&QSpinBox::setGroupSeparatorShown);
QLabel *hexLabel = new QLabel(tr("Enter a value between " QLabel *hexLabel = new QLabel(tr("Enter a value between "
"%1 and %2:").arg('-' + QString::number(31, 16)).arg(QString::number(31, 16))); "%1 and %2:").arg('-' + QString::number(31, 16)).arg(QString::number(31, 16)));
QSpinBox *hexSpinBox = new QSpinBox; QSpinBox *hexSpinBox = new QSpinBox;
@ -111,6 +121,8 @@ void Window::createSpinBoxes()
spinBoxLayout->addWidget(priceSpinBox); spinBoxLayout->addWidget(priceSpinBox);
spinBoxLayout->addWidget(hexLabel); spinBoxLayout->addWidget(hexLabel);
spinBoxLayout->addWidget(hexSpinBox); spinBoxLayout->addWidget(hexSpinBox);
spinBoxLayout->addWidget(groupSeparatorChkBox);
spinBoxLayout->addWidget(groupSeparatorSpinBox);
spinBoxesGroup->setLayout(spinBoxLayout); spinBoxesGroup->setLayout(spinBoxLayout);
} }
//! [5] //! [5]
@ -182,12 +194,12 @@ void Window::setFormatString(const QString &formatString)
meetingEdit->setDateRange(QDate(2004, 11, 1), QDate(2005, 11, 30)); meetingEdit->setDateRange(QDate(2004, 11, 1), QDate(2005, 11, 30));
meetingLabel->setText(tr("Meeting date (between %0 and %1):") meetingLabel->setText(tr("Meeting date (between %0 and %1):")
.arg(meetingEdit->minimumDate().toString(Qt::ISODate)) .arg(meetingEdit->minimumDate().toString(Qt::ISODate))
.arg(meetingEdit->maximumDate().toString(Qt::ISODate))); .arg(meetingEdit->maximumDate().toString(Qt::ISODate)));
} else { } else {
meetingEdit->setTimeRange(QTime(0, 7, 20, 0), QTime(21, 0, 0, 0)); meetingEdit->setTimeRange(QTime(0, 7, 20, 0), QTime(21, 0, 0, 0));
meetingLabel->setText(tr("Meeting time (between %0 and %1):") meetingLabel->setText(tr("Meeting time (between %0 and %1):")
.arg(meetingEdit->minimumTime().toString(Qt::ISODate)) .arg(meetingEdit->minimumTime().toString(Qt::ISODate))
.arg(meetingEdit->maximumTime().toString(Qt::ISODate))); .arg(meetingEdit->maximumTime().toString(Qt::ISODate)));
} }
} }
//! [13] //! [13]
@ -237,6 +249,17 @@ void Window::createDoubleSpinBoxes()
//! [17] //! [17]
this, SLOT(changePrecision(int))); this, SLOT(changePrecision(int)));
groupSeparatorSpinBox_d = new QDoubleSpinBox;
groupSeparatorSpinBox_d->setRange(-99999999, 99999999);
groupSeparatorSpinBox_d->setDecimals(2);
groupSeparatorSpinBox_d->setValue(1000.00);
groupSeparatorSpinBox_d->setGroupSeparatorShown(true);
QCheckBox *groupSeparatorChkBox = new QCheckBox;
groupSeparatorChkBox->setText(tr("Show group separator"));
groupSeparatorChkBox->setChecked(true);
connect(groupSeparatorChkBox, &QCheckBox::toggled, groupSeparatorSpinBox_d,
&QDoubleSpinBox::setGroupSeparatorShown);
//! [18] //! [18]
QVBoxLayout *spinBoxLayout = new QVBoxLayout; QVBoxLayout *spinBoxLayout = new QVBoxLayout;
spinBoxLayout->addWidget(precisionLabel); spinBoxLayout->addWidget(precisionLabel);
@ -247,6 +270,8 @@ void Window::createDoubleSpinBoxes()
spinBoxLayout->addWidget(scaleSpinBox); spinBoxLayout->addWidget(scaleSpinBox);
spinBoxLayout->addWidget(priceLabel); spinBoxLayout->addWidget(priceLabel);
spinBoxLayout->addWidget(priceSpinBox); spinBoxLayout->addWidget(priceSpinBox);
spinBoxLayout->addWidget(groupSeparatorChkBox);
spinBoxLayout->addWidget(groupSeparatorSpinBox_d);
doubleSpinBoxesGroup->setLayout(spinBoxLayout); doubleSpinBoxesGroup->setLayout(spinBoxLayout);
} }
//! [18] //! [18]

View File

@ -45,6 +45,7 @@
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QDateTimeEdit; class QDateTimeEdit;
class QSpinBox;
class QDoubleSpinBox; class QDoubleSpinBox;
class QGroupBox; class QGroupBox;
class QLabel; class QLabel;
@ -75,6 +76,8 @@ private:
QGroupBox *editsGroup; QGroupBox *editsGroup;
QGroupBox *doubleSpinBoxesGroup; QGroupBox *doubleSpinBoxesGroup;
QLabel *meetingLabel; QLabel *meetingLabel;
QSpinBox *groupSeparatorSpinBox;
QDoubleSpinBox *groupSeparatorSpinBox_d;
}; };
//! [0] //! [0]

View File

@ -109,9 +109,9 @@ void TetrixBoard::pause()
isPaused = !isPaused; isPaused = !isPaused;
if (isPaused) { if (isPaused) {
timer.stop(); timer.stop();
} else { } else {
timer.start(timeoutTime(), this); timer.start(timeoutTime(), this);
} }
update(); update();
//! [5] //! [6] //! [5] //! [6]
@ -128,7 +128,7 @@ void TetrixBoard::paintEvent(QPaintEvent *event)
//! [7] //! [7]
if (isPaused) { if (isPaused) {
painter.drawText(rect, Qt::AlignCenter, tr("Pause")); painter.drawText(rect, Qt::AlignCenter, tr("Pause"));
return; return;
} }
@ -138,7 +138,7 @@ void TetrixBoard::paintEvent(QPaintEvent *event)
for (int i = 0; i < BoardHeight; ++i) { for (int i = 0; i < BoardHeight; ++i) {
for (int j = 0; j < BoardWidth; ++j) { for (int j = 0; j < BoardWidth; ++j) {
TetrixShape shape = shapeAt(j, BoardHeight - i - 1); TetrixShape shape = shapeAt(j, BoardHeight - i - 1);
if (shape != NoShape) if (shape != NoShape)
drawSquare(painter, rect.left() + j * squareWidth(), drawSquare(painter, rect.left() + j * squareWidth(),
boardTop + i * squareHeight(), shape); boardTop + i * squareHeight(), shape);
} }
@ -165,7 +165,7 @@ void TetrixBoard::paintEvent(QPaintEvent *event)
void TetrixBoard::keyPressEvent(QKeyEvent *event) void TetrixBoard::keyPressEvent(QKeyEvent *event)
{ {
if (!isStarted || isPaused || curPiece.shape() == NoShape) { if (!isStarted || isPaused || curPiece.shape() == NoShape) {
QFrame::keyPressEvent(event); QFrame::keyPressEvent(event);
return; return;
} }
//! [13] //! [13]
@ -174,24 +174,24 @@ void TetrixBoard::keyPressEvent(QKeyEvent *event)
switch (event->key()) { switch (event->key()) {
case Qt::Key_Left: case Qt::Key_Left:
tryMove(curPiece, curX - 1, curY); tryMove(curPiece, curX - 1, curY);
break; break;
case Qt::Key_Right: case Qt::Key_Right:
tryMove(curPiece, curX + 1, curY); tryMove(curPiece, curX + 1, curY);
break; break;
case Qt::Key_Down: case Qt::Key_Down:
tryMove(curPiece.rotatedRight(), curX, curY); tryMove(curPiece.rotatedRight(), curX, curY);
break; break;
case Qt::Key_Up: case Qt::Key_Up:
tryMove(curPiece.rotatedLeft(), curX, curY); tryMove(curPiece.rotatedLeft(), curX, curY);
break; break;
case Qt::Key_Space: case Qt::Key_Space:
dropDown(); dropDown();
break; break;
case Qt::Key_D: case Qt::Key_D:
oneLineDown(); oneLineDown();
break; break;
default: default:
QFrame::keyPressEvent(event); QFrame::keyPressEvent(event);
} }
//! [14] //! [14]
} }
@ -201,9 +201,9 @@ void TetrixBoard::timerEvent(QTimerEvent *event)
{ {
if (event->timerId() == timer.timerId()) { if (event->timerId() == timer.timerId()) {
if (isWaitingAfterLine) { if (isWaitingAfterLine) {
isWaitingAfterLine = false; isWaitingAfterLine = false;
newPiece(); newPiece();
timer.start(timeoutTime(), this); timer.start(timeoutTime(), this);
} else { } else {
oneLineDown(); oneLineDown();
} }
@ -243,7 +243,7 @@ void TetrixBoard::dropDown()
void TetrixBoard::oneLineDown() void TetrixBoard::oneLineDown()
{ {
if (!tryMove(curPiece, curX, curY - 1)) if (!tryMove(curPiece, curX, curY - 1))
pieceDropped(0); pieceDropped(0);
} }
//! [21] //! [21]
@ -290,24 +290,24 @@ void TetrixBoard::removeFullLines()
if (lineIsFull) { if (lineIsFull) {
//! [24] //! [25] //! [24] //! [25]
++numFullLines; ++numFullLines;
for (int k = i; k < BoardHeight - 1; ++k) { for (int k = i; k < BoardHeight - 1; ++k) {
for (int j = 0; j < BoardWidth; ++j) for (int j = 0; j < BoardWidth; ++j)
shapeAt(j, k) = shapeAt(j, k + 1); shapeAt(j, k) = shapeAt(j, k + 1);
} }
//! [25] //! [26] //! [25] //! [26]
for (int j = 0; j < BoardWidth; ++j) for (int j = 0; j < BoardWidth; ++j)
shapeAt(j, BoardHeight - 1) = NoShape; shapeAt(j, BoardHeight - 1) = NoShape;
} }
//! [26] //! [27] //! [26] //! [27]
} }
//! [27] //! [27]
//! [28] //! [28]
if (numFullLines > 0) { if (numFullLines > 0) {
numLinesRemoved += numFullLines; numLinesRemoved += numFullLines;
score += 10 * numFullLines; score += 10 * numFullLines;
emit linesRemovedChanged(numLinesRemoved); emit linesRemovedChanged(numLinesRemoved);
emit scoreChanged(score); emit scoreChanged(score);
timer.start(500, this); timer.start(500, this);
@ -329,7 +329,7 @@ void TetrixBoard::newPiece()
curY = BoardHeight - 1 + curPiece.minY(); curY = BoardHeight - 1 + curPiece.minY();
if (!tryMove(curPiece, curX, curY)) { if (!tryMove(curPiece, curX, curY)) {
curPiece.setShape(NoShape); curPiece.setShape(NoShape);
timer.stop(); timer.stop();
isStarted = false; isStarted = false;
} }

View File

@ -63,7 +63,7 @@ void WigglyWidget::paintEvent(QPaintEvent * /* event */)
//! [1] //! [2] //! [1] //! [2]
{ {
static const int sineTable[16] = { static const int sineTable[16] = {
0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38 0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38
}; };
QFontMetrics metrics(font()); QFontMetrics metrics(font());
@ -94,7 +94,7 @@ void WigglyWidget::timerEvent(QTimerEvent *event)
++step; ++step;
update(); update();
} else { } else {
QWidget::timerEvent(event); QWidget::timerEvent(event);
} }
//! [6] //! [6]
} }

View File

@ -13,6 +13,7 @@ QMAKE_LINK_SHLIB = $$QMAKE_CXX
CONFIG += clang_pch_style CONFIG += clang_pch_style
QMAKE_PCH_OUTPUT_EXT = .pch QMAKE_PCH_OUTPUT_EXT = .pch
QMAKE_CFLAGS_ISYSTEM = -isystem
QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_CFLAGS_USE_PRECOMPILE = -Xclang -include-pch -Xclang ${QMAKE_PCH_OUTPUT} QMAKE_CFLAGS_USE_PRECOMPILE = -Xclang -include-pch -Xclang ${QMAKE_PCH_OUTPUT}
QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}

View File

@ -40,6 +40,7 @@ QMAKE_CFLAGS_DEBUG += -g
QMAKE_CFLAGS_SHLIB += -fPIC QMAKE_CFLAGS_SHLIB += -fPIC
QMAKE_CFLAGS_STATIC_LIB += -fPIC QMAKE_CFLAGS_STATIC_LIB += -fPIC
QMAKE_CFLAGS_APP += -fPIE QMAKE_CFLAGS_APP += -fPIE
QMAKE_CFLAGS_ISYSTEM = -isystem
QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
QMAKE_CFLAGS_EXCEPTIONS_OFF += -fno-exceptions QMAKE_CFLAGS_EXCEPTIONS_OFF += -fno-exceptions

View File

@ -87,7 +87,7 @@
#define QT_SIGNAL_IGNORE (void (*)(int))1 #define QT_SIGNAL_IGNORE (void (*)(int))1
#define QT_SNPRINTF ::snprintf #define QT_SNPRINTF ::snprintf
#define QT_VSNPRINTF ::vsnprintf #define QT_VSNPRINTF ::vsnprintf
#endif // QPLATFORMDEFS_H #endif // QPLATFORMDEFS_H

View File

@ -63,48 +63,48 @@
#include <windows.h> #include <windows.h>
#ifdef QT_LARGEFILE_SUPPORT #ifdef QT_LARGEFILE_SUPPORT
#define QT_STATBUF struct _stati64 // non-ANSI defs #define QT_STATBUF struct _stati64 // non-ANSI defs
#define QT_STATBUF4TSTAT struct _stati64 // non-ANSI defs #define QT_STATBUF4TSTAT struct _stati64 // non-ANSI defs
#define QT_STAT ::_stati64 #define QT_STAT ::_stati64
#define QT_FSTAT ::_fstati64 #define QT_FSTAT ::_fstati64
#else #else
#define QT_STATBUF struct stat // non-ANSI defs #define QT_STATBUF struct stat // non-ANSI defs
#define QT_STATBUF4TSTAT struct stat // non-ANSI defs #define QT_STATBUF4TSTAT struct stat // non-ANSI defs
#define QT_STAT ::qt_wince_stat #define QT_STAT ::qt_wince_stat
#define QT_FSTAT ::qt_wince__fstat #define QT_FSTAT ::qt_wince__fstat
#endif #endif
#define QT_STAT_REG _S_IFREG #define QT_STAT_REG _S_IFREG
#define QT_STAT_DIR _S_IFDIR #define QT_STAT_DIR _S_IFDIR
#define QT_STAT_MASK _S_IFMT #define QT_STAT_MASK _S_IFMT
#if defined(_S_IFLNK) #if defined(_S_IFLNK)
# define QT_STAT_LNK _S_IFLNK # define QT_STAT_LNK _S_IFLNK
#endif #endif
#define QT_FILENO ::qt_wince___fileno #define QT_FILENO ::qt_wince___fileno
#define QT_OPEN ::qt_wince_open #define QT_OPEN ::qt_wince_open
#define QT_CLOSE ::qt_wince__close #define QT_CLOSE ::qt_wince__close
#ifdef QT_LARGEFILE_SUPPORT #ifdef QT_LARGEFILE_SUPPORT
#define QT_LSEEK ::_lseeki64 #define QT_LSEEK ::_lseeki64
#define QT_TSTAT ::_tstati64 #define QT_TSTAT ::_tstati64
#else #else
#define QT_LSEEK ::qt_wince__lseek #define QT_LSEEK ::qt_wince__lseek
#define QT_TSTAT ::_tstat #define QT_TSTAT ::_tstat
#endif #endif
#define QT_READ ::qt_wince__read #define QT_READ ::qt_wince__read
#define QT_WRITE ::qt_wince__write #define QT_WRITE ::qt_wince__write
#define QT_ACCESS ::qt_wince__access #define QT_ACCESS ::qt_wince__access
#define QT_GETCWD ::_getcwd #define QT_GETCWD ::_getcwd
#define QT_CHDIR ::_chdir #define QT_CHDIR ::_chdir
#define QT_MKDIR ::qt_wince__mkdir #define QT_MKDIR ::qt_wince__mkdir
#define QT_RMDIR ::qt_wince__rmdir #define QT_RMDIR ::qt_wince__rmdir
#define QT_OPEN_LARGEFILE 0 #define QT_OPEN_LARGEFILE 0
#define QT_OPEN_RDONLY _O_RDONLY #define QT_OPEN_RDONLY _O_RDONLY
#define QT_OPEN_WRONLY _O_WRONLY #define QT_OPEN_WRONLY _O_WRONLY
#define QT_OPEN_RDWR _O_RDWR #define QT_OPEN_RDWR _O_RDWR
#define QT_OPEN_CREAT _O_CREAT #define QT_OPEN_CREAT _O_CREAT
#define QT_OPEN_TRUNC _O_TRUNC #define QT_OPEN_TRUNC _O_TRUNC
#define QT_OPEN_APPEND _O_APPEND #define QT_OPEN_APPEND _O_APPEND
# define QT_OPEN_TEXT _O_TEXT # define QT_OPEN_TEXT _O_TEXT
# define QT_OPEN_BINARY _O_BINARY # define QT_OPEN_BINARY _O_BINARY
#define QT_FOPEN ::fopen #define QT_FOPEN ::fopen
#define QT_FSEEK ::fseek #define QT_FSEEK ::fseek
@ -115,17 +115,17 @@
#define QT_FPOS_T fpos_t #define QT_FPOS_T fpos_t
#define QT_OFF_T long #define QT_OFF_T long
#define QT_SIGNAL_ARGS int #define QT_SIGNAL_ARGS int
#define QT_VSNPRINTF(buffer, count, format, arg) \ #define QT_VSNPRINTF(buffer, count, format, arg) \
_vsnprintf(buffer, count, format, arg) _vsnprintf(buffer, count, format, arg)
#define QT_SNPRINTF ::_snprintf #define QT_SNPRINTF ::_snprintf
# define F_OK 0 # define F_OK 0
# define X_OK 1 # define X_OK 1
# define W_OK 2 # define W_OK 2
# define R_OK 4 # define R_OK 4
typedef int mode_t; typedef int mode_t;

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,39 @@
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<Package xmlns=\"http://schemas.microsoft.com/appx/2010/manifest\">
<Identity
Name=\"$${WINRT_MANIFEST.identity}\"
ProcessorArchitecture=\"$${WINRT_MANIFEST.architecture}\"
Publisher=\"$${WINRT_MANIFEST.publisherid}\"
Version=\"$${WINRT_MANIFEST.version}\" />
<Properties>
<DisplayName>$${WINRT_MANIFEST.name}</DisplayName>
<PublisherDisplayName>$${WINRT_MANIFEST.publisher}</PublisherDisplayName>
<Logo>$${WINRT_MANIFEST.logo_store}</Logo>
</Properties>
<Prerequisites>
<OSMinVersion>6.2.0</OSMinVersion>
<OSMaxVersionTested>6.3.0</OSMaxVersionTested>
</Prerequisites>
<Resources>
<Resource Language=\"en\" />
</Resources>
<Applications>
<Application
Id=\"App\"
Executable=\"$${WINRT_MANIFEST.target}.exe\"
EntryPoint=\"$${WINRT_MANIFEST.target}.App\">
<VisualElements
DisplayName=\"$${WINRT_MANIFEST.name}\"
Logo=\"$${WINRT_MANIFEST.logo_large}\"
SmallLogo=\"$${WINRT_MANIFEST.logo_small}\"
Description=\"$${WINRT_MANIFEST.description}\"
BackgroundColor=\"$${WINRT_MANIFEST.background}\"
ForegroundText=\"$${WINRT_MANIFEST.foreground}\">
<SplashScreen Image=\"$${WINRT_MANIFEST.logo_splash}\" />
</VisualElements>
</Application>
</Applications>
<Capabilities>$${WINRT_MANIFEST.capabilities}</Capabilities>
<Dependencies>$${WINRT_MANIFEST.dependencies}</Dependencies>
</Package>
<!-- Generated by qmake using the $$[QMAKE_XSPEC] mkspec. Remove this line to prevent this file from getting overwritten by qmake. -->

View File

@ -0,0 +1,39 @@
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<Deployment xmlns=\"http://schemas.microsoft.com/windowsphone/2012/deployment\" AppPlatformVersion=\"8.0\">
<DefaultLanguage xmlns=\"\" code=\"en-US\" />
<App xmlns=\"\"
ProductID=\"$${WINRT_MANIFEST.identity}\"
Title=\"$${WINRT_MANIFEST.name}\"
RuntimeType=\"Modern Native\"
Version=\"$${WINRT_MANIFEST.version}\"
Genre=\"$${WINRT_MANIFEST.genre}\"
Author=\"$${WINRT_MANIFEST.author}\"
Description=\"$${WINRT_MANIFEST.description}\"
Publisher=\"$${WINRT_MANIFEST.publisher}\"
PublisherID=\"$${WINRT_MANIFEST.publisherid}\">
<IconPath IsRelative=\"true\" IsResource=\"false\">$${WINRT_MANIFEST.logo_medium}</IconPath>
<Capabilities>$${WINRT_MANIFEST.capabilities}</Capabilities>
<Tasks>
<DefaultTask
Name=\"_default\"
ImagePath=\"$${WINRT_MANIFEST.target}.exe\"
ImageParams=\"$${WINRT_MANIFEST.arguments}\" />
</Tasks>
<Tokens>
<PrimaryToken TokenID=\"$${WINRT_MANIFEST.target}\" TaskName=\"_default\">
<TemplateIconic>
<SmallImageURI IsRelative=\"true\" IsResource=\"false\">$${WINRT_MANIFEST.tile_iconic_small}</SmallImageURI>
<IconImageURI IsRelative=\"true\" IsResource=\"false\">$${WINRT_MANIFEST.tile_iconic_medium}</IconImageURI>
<Title>$${WINRT_MANIFEST.name}</Title>
<BackgroundColor>$${WINRT_MANIFEST.background}</BackgroundColor>
</TemplateIconic>
</PrimaryToken>
</Tokens>
<ScreenResolutions>
<ScreenResolution Name=\"ID_RESOLUTION_WVGA\" />
<ScreenResolution Name=\"ID_RESOLUTION_WXGA\" />
<ScreenResolution Name=\"ID_RESOLUTION_HD720P\" />
</ScreenResolutions>
</App>
</Deployment>
<!-- Generated by qmake using the $$[QMAKE_XSPEC] mkspec. Remove this line to prevent this file from getting overwritten by qmake. -->

View File

@ -0,0 +1,44 @@
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<Package xmlns=\"http://schemas.microsoft.com/appx/2010/manifest\" xmlns:v2=\"http://schemas.microsoft.com/appx/2013/manifest\">
<Identity
Name=\"$${WINRT_MANIFEST.identity}\"
ProcessorArchitecture=\"$${WINRT_MANIFEST.architecture}\"
Publisher=\"$${WINRT_MANIFEST.publisherid}\"
Version=\"$${WINRT_MANIFEST.version}\" />
<Properties>
<DisplayName>$${WINRT_MANIFEST.name}</DisplayName>
<PublisherDisplayName>$${WINRT_MANIFEST.publisher}</PublisherDisplayName>
<Logo>$${WINRT_MANIFEST.logo_store}</Logo>
</Properties>
<Prerequisites>
<OSMinVersion>6.3.0</OSMinVersion>
<OSMaxVersionTested>6.3.0</OSMaxVersionTested>
</Prerequisites>
<Resources>
<Resource Language=\"en\" />
</Resources>
<Applications>
<Application
Id=\"App\"
Executable=\"$${WINRT_MANIFEST.target}.exe\"
EntryPoint=\"$${WINRT_MANIFEST.target}.App\">
<v2:VisualElements
DisplayName=\"$${WINRT_MANIFEST.name}\"
Description=\"$${WINRT_MANIFEST.description}\"
BackgroundColor=\"$${WINRT_MANIFEST.background}\"
ForegroundText=\"$${WINRT_MANIFEST.foreground}\"
Square150x150Logo=\"$${WINRT_MANIFEST.logo_large}\"
Square30x30Logo=\"$${WINRT_MANIFEST.logo_small}\">
<v2:DefaultTile>
<v2:ShowNameOnTiles>
<v2:ShowOn Tile=\"square150x150Logo\" />
</v2:ShowNameOnTiles>
</v2:DefaultTile>
<v2:SplashScreen Image=\"$${WINRT_MANIFEST.logo_splash}\" />
</v2:VisualElements>
</Application>
</Applications>
<Capabilities>$${WINRT_MANIFEST.capabilities}</Capabilities>
<Dependencies>$${WINRT_MANIFEST.dependencies}</Dependencies>
</Package>
<!-- Generated by qmake using the $$[QMAKE_XSPEC] mkspec. Remove this line to prevent this file from getting overwritten by qmake. -->

View File

@ -1,16 +1,15 @@
# #
# qmake configuration for winrt and windows phone 8 # qmake configuration for winrt and windows phone 8
# #
# Written for Microsoft Visual C++ 2012 # Written for Microsoft Visual C++
# #
MAKEFILE_GENERATOR = MSBUILD MAKEFILE_GENERATOR = MSBUILD
QMAKE_COMPILER = msvc QMAKE_COMPILER = msvc
QMAKE_PLATFORM = winrt win32 QMAKE_PLATFORM = winrt win32
CONFIG += incremental flat precompile_header autogen_precompile_source debug_and_release debug_and_release_target no_generated_target_info autogen_wmappmanifest rtti CONFIG += incremental flat precompile_header autogen_precompile_source debug_and_release debug_and_release_target no_generated_target_info package_manifest rtti
DEFINES += UNICODE WINRT QT_LARGEFILE_SUPPORT Q_BYTE_ORDER=Q_LITTLE_ENDIAN \ DEFINES += UNICODE WIN32 QT_LARGEFILE_SUPPORT Q_BYTE_ORDER=Q_LITTLE_ENDIAN \
QT_NO_PRINTER QT_NO_PRINTDIALOG # TODO: Remove when printing is re-enabled QT_NO_PRINTER QT_NO_PRINTDIALOG # TODO: Remove when printing is re-enabled
QMAKE_COMPILER_DEFINES += _MSC_VER=1700 WINRT
DEPLOYMENT_PLUGIN += qwinrt DEPLOYMENT_PLUGIN += qwinrt
@ -19,7 +18,6 @@ QMAKE_LEX = flex
QMAKE_LEXFLAGS = QMAKE_LEXFLAGS =
QMAKE_YACC = byacc QMAKE_YACC = byacc
QMAKE_YACCFLAGS = -d QMAKE_YACCFLAGS = -d
#QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t-
QMAKE_CFLAGS = -nologo -Zm200 QMAKE_CFLAGS = -nologo -Zm200
QMAKE_CFLAGS_WARN_ON = -W3 QMAKE_CFLAGS_WARN_ON = -W3
QMAKE_CFLAGS_WARN_OFF = -W0 QMAKE_CFLAGS_WARN_OFF = -W0
@ -64,22 +62,24 @@ QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ $<
QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<< QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_LINK = link QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO /DYNAMICBASE /NXCOMPAT /NODEFAULTLIB:ole32.lib QMAKE_LFLAGS = /NOLOGO /DYNAMICBASE /NXCOMPAT /NODEFAULTLIB:ole32.lib /APPCONTAINER
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF /INCREMENTAL:NO QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF /INCREMENTAL:NO
QMAKE_LFLAGS_DEBUG = /DEBUG QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS
QMAKE_LFLAGS_EXE = /WINMD /MANIFEST:NO QMAKE_LFLAGS_EXE = /MANIFEST:NO
QMAKE_LFLAGS_DLL = /WINMD /MANIFEST:NO /DLL /WINMDFILE:$(DESTDIR_TARGET).winmd QMAKE_LFLAGS_DLL = /MANIFEST:NO /DLL
QMAKE_LFLAGS_LTCG = /LTCG QMAKE_LFLAGS_LTCG = /LTCG
QMAKE_EXTENSION_STATICLIB = lib QMAKE_EXTENSION_STATICLIB = lib
QMAKE_LIBS += runtimeobject.lib
QMAKE_LIBS_CORE = QMAKE_LIBS_CORE =
QMAKE_LIBS_GUI = d3d11.lib QMAKE_LIBS_GUI =
QMAKE_LIBS_NETWORK = QMAKE_LIBS_NETWORK =
QMAKE_LIBS_OPENGL_ES2 = libEGL.lib libGLESv2.lib
QMAKE_LIBS_OPENGL_ES2_DEBUG = libEGLd.lib libGLESv2d.lib
QMAKE_LIBS_QT_ENTRY = -lqtmain /ENTRY:wmainCRTStartup QMAKE_LIBS_QT_ENTRY = -lqtmain
QMAKE_IDL = midl QMAKE_IDL = midl
QMAKE_LIB = lib /NOLOGO QMAKE_LIB = lib /NOLOGO
@ -89,5 +89,6 @@ include(../shell-win32.conf)
VCPROJ_EXTENSION = .vcxproj VCPROJ_EXTENSION = .vcxproj
VCSOLUTION_EXTENSION = .sln VCSOLUTION_EXTENSION = .sln
VCPROJ_KEYWORD = Qt4VSv1.0 VCPROJ_KEYWORD = Qt4VSv1.0
WINRT_ASSETS_PATH = $$PWD/assets
load(qt_config) load(qt_config)

View File

@ -0,0 +1,141 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the qmake spec of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QPLATFORMDEFS_H
#define QPLATFORMDEFS_H
#ifdef UNICODE
#ifndef _UNICODE
#define _UNICODE
#endif
#endif
// Get Qt defines/settings
#include "qglobal.h"
#include "qfunctions_winrt.h"
#define _POSIX_
#include <limits.h>
#undef _POSIX_
#include <tchar.h>
#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/stat.h>
#include <stdlib.h>
#ifdef QT_LARGEFILE_SUPPORT
#define QT_STATBUF struct _stati64 // non-ANSI defs
#define QT_STATBUF4TSTAT struct _stati64 // non-ANSI defs
#define QT_STAT ::_stati64
#define QT_FSTAT ::_fstati64
#else
#define QT_STATBUF struct _stat // non-ANSI defs
#define QT_STATBUF4TSTAT struct _stat // non-ANSI defs
#define QT_STAT ::_stat
#define QT_FSTAT ::_fstat
#endif
#define QT_STAT_REG _S_IFREG
#define QT_STAT_DIR _S_IFDIR
#define QT_STAT_MASK _S_IFMT
#if defined(_S_IFLNK)
# define QT_STAT_LNK _S_IFLNK
#endif
#define QT_FILENO _fileno
#define QT_OPEN ::_open
#define QT_CLOSE ::_close
#ifdef QT_LARGEFILE_SUPPORT
#define QT_LSEEK ::_lseeki64
#define QT_TSTAT ::_tstati64
#else
#define QT_LSEEK ::_lseek
#define QT_TSTAT ::_tstat
#endif
#define QT_READ ::_read
#define QT_WRITE ::_write
#define QT_ACCESS ::_access
#define QT_GETCWD ::_getcwd
#define QT_CHDIR ::_chdir
#define QT_MKDIR ::_mkdir
#define QT_RMDIR ::_rmdir
#define QT_OPEN_LARGEFILE 0
#define QT_OPEN_RDONLY _O_RDONLY
#define QT_OPEN_WRONLY _O_WRONLY
#define QT_OPEN_RDWR _O_RDWR
#define QT_OPEN_CREAT _O_CREAT
#define QT_OPEN_TRUNC _O_TRUNC
#define QT_OPEN_APPEND _O_APPEND
#if defined(O_TEXT)
# define QT_OPEN_TEXT _O_TEXT
# define QT_OPEN_BINARY _O_BINARY
#endif
#include "../common/c89/qplatformdefs.h"
#ifdef QT_LARGEFILE_SUPPORT
#undef QT_FSEEK
#undef QT_FTELL
#undef QT_OFF_T
#define QT_FSEEK ::_fseeki64
#define QT_FTELL ::_ftelli64
#define QT_OFF_T __int64
#endif
#define QT_SIGNAL_ARGS int
#define QT_VSNPRINTF(buffer, count, format, arg) \
vsnprintf_s(buffer, count, count-1, format, arg)
#define QT_SNPRINTF ::_snprintf
# define F_OK 0
# define X_OK 1
# define W_OK 2
# define R_OK 4
typedef int mode_t;
#endif // QPLATFORMDEFS_H

View File

@ -73,7 +73,7 @@
#include <sys/ioctl.h> #include <sys/ioctl.h>
// Cygwin does not provide <sys/ipc.h> and <sys/shm.h> because it // Cygwin does not provide <sys/ipc.h> and <sys/shm.h> because it
// doesn't support SysV IPC or shared memory. See for example: // doesn't support SysV IPC or shared memory. See for example:
// http://afni.nimh.nih.gov/afni/afniboard/messages/1725.html // http://afni.nimh.nih.gov/afni/afniboard/messages/1725.html
#include <sys/time.h> #include <sys/time.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/stat.h> #include <sys/stat.h>
@ -88,8 +88,8 @@
#define QT_OPEN_LARGEFILE 0 #define QT_OPEN_LARGEFILE 0
#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
#define QT_SNPRINTF ::snprintf #define QT_SNPRINTF ::snprintf
#define QT_VSNPRINTF ::vsnprintf #define QT_VSNPRINTF ::vsnprintf
#endif #endif
#endif // QPLATFORMDEFS_H #endif // QPLATFORMDEFS_H

View File

@ -79,7 +79,7 @@
#undef QT_OPEN_LARGEFILE #undef QT_OPEN_LARGEFILE
#define QT_OPEN_LARGEFILE 0 #define QT_OPEN_LARGEFILE 0
#define QT_SNPRINTF ::snprintf #define QT_SNPRINTF ::snprintf
#define QT_VSNPRINTF ::vsnprintf #define QT_VSNPRINTF ::vsnprintf
#endif // QPLATFORMDEFS_H #endif // QPLATFORMDEFS_H

View File

@ -40,7 +40,6 @@
****************************************************************************/ ****************************************************************************/
#include "qeglfshooks.h" #include "qeglfshooks.h"
#include "qeglfscursor.h"
#include <QtDebug> #include <QtDebug>
@ -107,12 +106,6 @@ static void moveDispmanxLayer(EGLNativeWindowType window, const QPoint &pos)
dst_rect.width = size.width(); dst_rect.width = size.width();
dst_rect.height = size.height(); dst_rect.height = size.height();
VC_RECT_T src_rect;
src_rect.x = 0;
src_rect.y = 0;
src_rect.width = size.width() << 16;
src_rect.height = size.height() << 16;
DISPMANX_UPDATE_HANDLE_T dispman_update = vc_dispmanx_update_start(0); DISPMANX_UPDATE_HANDLE_T dispman_update = vc_dispmanx_update_start(0);
vc_dispmanx_element_change_attributes(dispman_update, vc_dispmanx_element_change_attributes(dispman_update,
eglWindow->element, eglWindow->element,

View File

@ -6,9 +6,7 @@
# A typical configure line looks like this: # A typical configure line looks like this:
# <path-to-qt-src>/configure -opensource -confirm-license -make libs -prefix /usr/local/Qt-5.0.0/Qt5-tegra2 # <path-to-qt-src>/configure -opensource -confirm-license -make libs -prefix /usr/local/Qt-5.0.0/Qt5-tegra2
# -device tegra2 -device-option CROSS_COMPILE=<path-to-crosstoolchain>/bin/arm-none-linux-gnueabi- \ # -device tegra2 -device-option CROSS_COMPILE=<path-to-crosstoolchain>/bin/arm-none-linux-gnueabi- \
# -sysroot <path-to-rootfs> -no-neon # -sysroot <path-to-rootfs>
# CAUTION: The Tegra2 chips don't support neon, make sure it will not be used (-no-neon)
include(../common/linux_device_pre.conf) include(../common/linux_device_pre.conf)

View File

@ -53,6 +53,12 @@ defineTest(qtCompileTest) {
# Disable qmake features which are typically counterproductive for tests # Disable qmake features which are typically counterproductive for tests
qmake_configs = "\"CONFIG -= qt debug_and_release app_bundle lib_bundle\"" qmake_configs = "\"CONFIG -= qt debug_and_release app_bundle lib_bundle\""
# On WinRT we need to change the entry point as we cannot create windows
# applications
winrt {
qmake_configs += " \"QMAKE_LFLAGS+=/ENTRY:main\""
}
# Clean up after previous run # Clean up after previous run
exists($$test_out_dir/Makefile):qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE distclean") exists($$test_out_dir/Makefile):qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE distclean")

View File

@ -195,7 +195,7 @@ mac {
CMAKE_LIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.dll CMAKE_LIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}d.dll
CMAKE_LIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.dll CMAKE_LIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.dll
win32-g++ { mingw {
CMAKE_WINMAIN_FILE_LOCATION_DEBUG = libqtmain$${QT_LIBINFIX}d.a CMAKE_WINMAIN_FILE_LOCATION_DEBUG = libqtmain$${QT_LIBINFIX}d.a
CMAKE_WINMAIN_FILE_LOCATION_RELEASE = libqtmain$${QT_LIBINFIX}.a CMAKE_WINMAIN_FILE_LOCATION_RELEASE = libqtmain$${QT_LIBINFIX}.a

View File

@ -51,7 +51,7 @@ load(cmake_functions)
CMAKE_BUILD_TYPE = Debug CMAKE_BUILD_TYPE = Debug
CONFIG(release, debug|release):CMAKE_BUILD_TYPE = Release CONFIG(release, debug|release):CMAKE_BUILD_TYPE = Release
win32-g++*:isEmpty(CROSS_COMPILE):CMAKE_GENERATOR = -G \"MinGW Makefiles\" mingw:isEmpty(CROSS_COMPILE):CMAKE_GENERATOR = -G \"MinGW Makefiles\"
win32:equals(QT_ARCH, x86_64) { win32:equals(QT_ARCH, x86_64) {
win32-msvc2010:CMAKE_GENERATOR = -G \"Visual Studio 10 Win64\" win32-msvc2010:CMAKE_GENERATOR = -G \"Visual Studio 10 Win64\"
win32-msvc2012:CMAKE_GENERATOR = -G \"Visual Studio 11 Win64\" win32-msvc2012:CMAKE_GENERATOR = -G \"Visual Studio 11 Win64\"

View File

@ -82,5 +82,7 @@ breakpad {
!isEmpty(QMAKE_STRIP):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote($$QMAKE_STRIP $$DEBUGFILENAME) !isEmpty(QMAKE_STRIP):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote($$QMAKE_STRIP $$DEBUGFILENAME)
} }
!precompile_header: SOURCES += $$NO_PCH_SOURCES
QMAKE_INCDIR += $$QMAKE_INCDIR_POST QMAKE_INCDIR += $$QMAKE_INCDIR_POST
QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST

View File

@ -15,8 +15,26 @@ qt:!isEmpty(QT_CONFIG) {
contains(QT_CONFIG, x86_64):!contains(QT_CONFIG, x86):CONFIG += x86_64 contains(QT_CONFIG, x86_64):!contains(QT_CONFIG, x86):CONFIG += x86_64
} }
# Ensure that C++11 is always used when linking against a static Qt build contains(QT_CONFIG, static) {
contains(QT_CONFIG, static):contains(QT_CONFIG, c++11): CONFIG += c++11 # C++11 support means using libc++ instead of libstd++. As the
# two libraries are incompatible we need to ensure the end user
# project is built using the same C++11 support/no support as Qt.
contains(QT_CONFIG, c++11) {
CONFIG += c++11
} else: c++11 {
warning("Qt was not built with C++11 enabled, disabling feature")
CONFIG -= c++11
}
!c++11 {
# Explicitly use libstdc++ if C++11 support is not enabled,
# as otherwise the compiler will choose the standard library
# based on the deployment target, which for iOS 7 and OS X 10.9
# is libc++, and we can't mix and match the two.
QMAKE_CXXFLAGS += -stdlib=libstdc++
QMAKE_LFLAGS += -stdlib=libstdc++
}
}
} }
cache(QMAKE_XCODE_DEVELOPER_PATH, stash) cache(QMAKE_XCODE_DEVELOPER_PATH, stash)

View File

@ -5,49 +5,36 @@ isEmpty(MOC_DIR):MOC_DIR = .
isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_ isEmpty(QMAKE_H_MOD_MOC):QMAKE_H_MOD_MOC = moc_
isEmpty(QMAKE_EXT_CPP_MOC):QMAKE_EXT_CPP_MOC = .moc isEmpty(QMAKE_EXT_CPP_MOC):QMAKE_EXT_CPP_MOC = .moc
MOC_INCLUDEPATH =
for (inc, INCLUDEPATH): \
MOC_INCLUDEPATH += $$absolute_path($$inc, $$_PRO_FILE_PWD_)
!no_include_pwd:!isEqual(OUT_PWD, $$_PRO_FILE_PWD_): \
MOC_INCLUDEPATH += .
MOC_INCLUDEPATH = $$QMAKESPEC $$_PRO_FILE_PWD_ $$MOC_INCLUDEPATH $$QMAKE_DEFAULT_INCDIRS
# On Windows, put the includes into a .inc file which moc will read, if the project # On Windows, put the includes into a .inc file which moc will read, if the project
# has too many includes. We do this to overcome a command-line limit on Win < XP # has too many includes. We do this to overcome a command-line limit on Win < XP
INCLUDETEMP=
WIN_INCLUDETEMP= WIN_INCLUDETEMP=
win32:count(INCLUDEPATH, 40, >) { win32:count(MOC_INCLUDEPATH, 40, >) {
INCLUDETEMP = $$MOC_DIR/mocinclude.tmp WIN_INCLUDETEMP = $$MOC_DIR/mocinclude.tmp
WIN_INCLUDETEMP=$$INCLUDETEMP WIN_INCLUDETEMP_CONT =
for (inc, MOC_INCLUDEPATH): \
EOC = $$escape_expand(\\n\\t) WIN_INCLUDETEMP_CONT += -I$$inc
write_file($$absolute_path($$WIN_INCLUDETEMP, $$OUT_PWD), WIN_INCLUDETEMP_CONT)|error("Aborting.")
contains(TEMPLATE, "vc.*") {
# the VCPROJ generator will replace the \r\h with the coded \r\n: &#x0d;&#x0a;
EOC = $$escape_expand(\\r\\h)
}
unset(INCFILELIST)
RET =
for(incfile, INCLUDEPATH) {
INCFILELIST = -I$$incfile
isEmpty(RET): RET += @echo $$INCFILELIST> $$WIN_INCLUDETEMP $$EOC
else: RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC
}
!isEmpty(INCFILELIST):RET += @echo $$INCFILELIST>> $$WIN_INCLUDETEMP $$EOC
build_pass|isEmpty(BUILDS) {
mocinclude.target = $$INCLUDETEMP
mocinclude.commands = $$RET
QMAKE_EXTRA_TARGETS += mocinclude
}
} }
defineReplace(mocCmdBase) { defineReplace(mocCmdBase) {
RET = RET =
!isEmpty(WIN_INCLUDETEMP) { !isEmpty(WIN_INCLUDETEMP) {
contains(TEMPLATE, "vc.*") {
RET += $$mocinclude.commands
}
incvar = @$$WIN_INCLUDETEMP incvar = @$$WIN_INCLUDETEMP
} else { } else {
incvar = $(INCPATH) incvar =
for (inc, MOC_INCLUDEPATH): \
incvar += -I$$shell_quote($$inc)
incvar += $$QMAKE_FRAMEWORKPATH_FLAGS
} }
RET += $$QMAKE_MOC $(DEFINES) $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$incvar $$join(QMAKE_DEFAULT_INCDIRS, " -I", -I) $$QMAKE_MOC_OPTIONS RET += $$QMAKE_MOC $(DEFINES) $$join(QMAKE_COMPILER_DEFINES, " -D", -D) $$incvar $$QMAKE_MOC_OPTIONS
return($$RET) return($$RET)
} }
@ -59,9 +46,7 @@ moc_header.output = $$MOC_DIR/$${QMAKE_H_MOD_MOC}${QMAKE_FILE_BASE}$${first(QMAK
moc_header.input = HEADERS moc_header.input = HEADERS
moc_header.variable_out = SOURCES moc_header.variable_out = SOURCES
moc_header.name = MOC ${QMAKE_FILE_IN} moc_header.name = MOC ${QMAKE_FILE_IN}
!contains(TEMPLATE, "vc.*") { moc_header.depends += $$WIN_INCLUDETEMP
!isEmpty(INCLUDETEMP):moc_header.depends += $$INCLUDETEMP
}
silent:moc_header.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_header.commands silent:moc_header.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_header.commands
QMAKE_EXTRA_COMPILERS += moc_header QMAKE_EXTRA_COMPILERS += moc_header
INCREDIBUILD_XGE += moc_header INCREDIBUILD_XGE += moc_header
@ -73,9 +58,7 @@ moc_source.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_
moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC} moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC}
moc_source.input = SOURCES OBJECTIVE_SOURCES moc_source.input = SOURCES OBJECTIVE_SOURCES
moc_source.name = MOC ${QMAKE_FILE_IN} moc_source.name = MOC ${QMAKE_FILE_IN}
!contains(TEMPLATE, "vc.*") { moc_source.depends += $$WIN_INCLUDETEMP
!isEmpty(INCLUDETEMP):moc_source.depends += $$INCLUDETEMP
}
silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands
QMAKE_EXTRA_COMPILERS += moc_source QMAKE_EXTRA_COMPILERS += moc_source
INCREDIBUILD_XGE += moc_source INCREDIBUILD_XGE += moc_source

View File

@ -0,0 +1,24 @@
#
# W A R N I N G
# -------------
#
# This file is not part of the Qt API. It exists purely as an
# implementation detail. It may change from version to version
# without notice, or even be removed.
#
# We mean it.
#
#
# Set up extra compiler for PCH disabled sources
#
no_pch_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN}
msvc: no_pch_compiler.commands += -Fo${QMAKE_FILE_OUT}
else: no_pch_compiler.commands += -o ${QMAKE_FILE_OUT}
no_pch_compiler.dependency_type = TYPE_C
no_pch_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
no_pch_compiler.input = NO_PCH_SOURCES
no_pch_compiler.variable_out = OBJECTS
no_pch_compiler.name = compiling[no_pch] ${QMAKE_FILE_IN}
silent: no_pch_compiler.commands = @echo compiling[no_pch] ${QMAKE_FILE_IN} && $$no_pch_compiler.commands
QMAKE_EXTRA_COMPILERS += no_pch_compiler

View File

@ -0,0 +1,49 @@
qtPrepareTool(QMAKE_QLALR, qlalr)
isEmpty(QLALR_DIR): QLALR_DIR = .
!isEmpty(QLALRSOURCES) {
INCLUDEPATH += $$absolute_path($$QLALR_DIR, $$OUT_PWD)
}
for (s, QLALRSOURCES) {
sf = $$absolute_path($$s, $$_PRO_FILE_PWD_)
QMAKE_INTERNAL_INCLUDED_FILES += $$sf
sfl = $$cat($$sf, lines)
parser = $$lower($$member($$list($$find(sfl, "^%parser\\s")), 1))
isEmpty(parser): error("Could not extract %parser from $$sf")
decl = $$member($$list($$find(sfl, "^%decl\\s")), 1)
isEmpty(decl): error("Could not extract %decl from $$sf")
impl = $$member($$list($$find(sfl, "^%impl\\s")), 1)
isEmpty(impl): error("Could not extract %impl from $$sf")
base = qlalr_$$replace(sf, ^.*/([^./]+)[^/]*$, \\1)
invar = $$upper($$base)_SOURCES
$$invar = $$sf
$${base}.input = $$invar
$${base}.output = $$QLALR_DIR/$${parser}.cpp
$${base}.variable_out = GENERATED_SOURCES
$${base}.commands = $$QMAKE_QLALR $$QMAKE_QLALRFLAGS ${QMAKE_FILE_IN}
silent: $${base}.commands = @echo qlalr ${QMAKE_FILE_IN} && $${base}.commands
$${base}.name = QLALR ${QMAKE_FILE_IN}
$${base}_h.input = $$invar
$${base}_h.output = $$QLALR_DIR/$${parser}_p.h
$${base}_h.CONFIG = no_link
$${base}_h.depends = $$QLALR_DIR/$${parser}.cpp
$${base}_h.commands = $$escape_expand(\\n) # force creation of rule
$${base}_decl.input = $$invar
$${base}_decl.output = $$QLALR_DIR/$${decl}
$${base}_decl.CONFIG = no_link
$${base}_decl.depends = $$QLALR_DIR/$${parser}.cpp
$${base}_decl.commands = $$escape_expand(\\n) # force creation of rule
$${base}_impl.input = $$invar
$${base}_impl.output = $$QLALR_DIR/$${impl}
$${base}_impl.variable_out = GENERATED_SOURCES
$${base}_impl.depends = $$QLALR_DIR/$${parser}.cpp
$${base}_impl.commands = $$escape_expand(\\n) # force creation of rule
QMAKE_EXTRA_COMPILERS += $$base $${base}_h $${base}_decl $${base}_impl
}

View File

@ -101,7 +101,7 @@ load(qt_common)
load(qml_module) load(qml_module)
unix|win32-g++* { unix|mingw {
!isEmpty(_QMAKE_SUPER_CACHE_): \ !isEmpty(_QMAKE_SUPER_CACHE_): \
lib_replace.match = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]*/lib lib_replace.match = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]*/lib
else: \ else: \

View File

@ -172,6 +172,8 @@ contains(QT_CONFIG, static) {
else: \ else: \
QTPLUGIN += $$QT_DEFAULT_QPA_PLUGIN QTPLUGIN += $$QT_DEFAULT_QPA_PLUGIN
} }
needs_printsupport_plugin: \
QTPLUGIN += $$QT_DEFAULT_PRINTSUPPORTPLUGIN
import_plugins:!isEmpty(QTPLUGIN) { import_plugins:!isEmpty(QTPLUGIN) {
IMPORT_FILE_CONT = \ IMPORT_FILE_CONT = \
"// This file is autogenerated by qmake. It imports static plugin classes for" \ "// This file is autogenerated by qmake. It imports static plugin classes for" \

View File

@ -27,11 +27,15 @@ warnings_are_errors:warning_clean {
# This setting is compiler-dependent anyway because it depends on the version of the # This setting is compiler-dependent anyway because it depends on the version of the
# compiler. # compiler.
clang { clang {
# Apple clang 4.0-4.2 # Apple clang 4.0-4.2,5.0
# Regular clang is not tested # Regular clang 3.3 & 3.4
ver = $${QT_APPLE_CLANG_MAJOR_VERSION}.$${QT_APPLE_CLANG_MINOR_VERSION} apple_ver = $${QT_APPLE_CLANG_MAJOR_VERSION}.$${QT_APPLE_CLANG_MINOR_VERSION}
contains(ver, "4\\.[012]") { reg_ver = $${QT_CLANG_MAJOR_VERSION}.$${QT_CLANG_MINOR_VERSION}
QMAKE_CXXFLAGS += -Werror -Wno-error=\\$${LITERAL_HASH}warnings -Wno-error=deprecated-declarations $$WERROR contains(apple_ver, "4\\.[012]|5\\.0")|contains(reg_ver, "3\\.[34]") {
QMAKE_CXXFLAGS_WARN_ON += -Werror -Wno-error=\\$${LITERAL_HASH}warnings -Wno-error=deprecated-declarations $$WERROR
# glibc's bswap_XX macros use the "register" keyword
linux:equals(reg_ver, "3.4"): QMAKE_CXXFLAGS_WARN_ON += -Wno-error=deprecated-register
} }
} else:intel_icc:linux { } else:intel_icc:linux {
# Intel CC 13.0 - 14.0, on Linux only # Intel CC 13.0 - 14.0, on Linux only
@ -43,20 +47,20 @@ warnings_are_errors:warning_clean {
# 1478: function "entity" (declared at line N) was declared deprecated # 1478: function "entity" (declared at line N) was declared deprecated
# 1881: argument must be a constant null pointer value # 1881: argument must be a constant null pointer value
# (NULL in C++ is usually a literal 0) # (NULL in C++ is usually a literal 0)
QMAKE_CXXFLAGS += -Werror -ww177,1224,1478,1881 $$WERROR QMAKE_CXXFLAGS_WARN_ON += -Werror -ww177,1224,1478,1881 $$WERROR
} }
} else:gcc:!clang:!intel_icc { } else:gcc:!clang:!intel_icc {
# GCC 4.6-4.8 # GCC 4.6-4.8
ver = $${QT_GCC_MAJOR_VERSION}.$${QT_GCC_MINOR_VERSION} ver = $${QT_GCC_MAJOR_VERSION}.$${QT_GCC_MINOR_VERSION}
contains(ver, "4\\.[678]") { contains(ver, "4\\.[678]") {
QMAKE_CXXFLAGS += -Werror -Wno-error=cpp -Wno-error=deprecated-declarations $$WERROR QMAKE_CXXFLAGS_WARN_ON += -Werror -Wno-error=cpp -Wno-error=deprecated-declarations $$WERROR
# GCC prints this bogus warning, after it has inlined a lot of code # GCC prints this bogus warning, after it has inlined a lot of code
# error: assuming signed overflow does not occur when assuming that (X + c) < X is always false # error: assuming signed overflow does not occur when assuming that (X + c) < X is always false
QMAKE_CXXFLAGS += -Wno-error=strict-overflow QMAKE_CXXFLAGS_WARN_ON += -Wno-error=strict-overflow
# Work-around for bug https://code.google.com/p/android/issues/detail?id=58135 # Work-around for bug https://code.google.com/p/android/issues/detail?id=58135
android: QMAKE_CXXFLAGS += -Wno-error=literal-suffix android: QMAKE_CXXFLAGS_WARN_ON += -Wno-error=literal-suffix
} }
} }
unset(ver) unset(ver)

View File

@ -134,6 +134,33 @@ aix-g++* {
QMAKE_CXXFLAGS += -mminimal-toc QMAKE_CXXFLAGS += -mminimal-toc
} }
sse2:!contains(QT_CPU_FEATURES.$$QT_ARCH, sse2):!host_build:!if(static:contains(QT_CONFIG, shared)) {
# If the compiler supports SSE2, enable it unconditionally in all of Qt shared libraries
# (and only the libraries). This is not expected to be a problem because:
# - on Windows, sharing of libraries is uncommon
# - on Mac OS X, all x86 CPUs already have SSE2 support (we won't even reach here)
# - on Linux, the dynamic loader can find the libraries on LIBDIR/sse2/
# The last guarantee does not apply to executables and plugins, so we can't enable for them.
QT_CPU_FEATURES.$$QT_ARCH += sse sse2
QMAKE_CFLAGS += $$QMAKE_CFLAGS_SSE2
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_SSE2
}
clang {
apple_clang_ver = $${QT_APPLE_CLANG_MAJOR_VERSION}.$${QT_APPLE_CLANG_MINOR_VERSION}
reg_clang_ver = $${QT_CLANG_MAJOR_VERSION}.$${QT_CLANG_MINOR_VERSION}
!lessThan(apple_clang_ver, "5.1")|!lessThan(reg_clang_ver, "3.4"): \
CONFIG += compiler_supports_fpmath
} else: gcc {
CONFIG += compiler_supports_fpmath
}
equals(QT_ARCH, i386):contains(QT_CPU_FEATURES.$$QT_ARCH, sse2):compiler_supports_fpmath {
# Turn on SSE-based floating-point math
QMAKE_CFLAGS += -mfpmath=sse
QMAKE_CXXFLAGS += -mfpmath=sse
}
android: CONFIG += qt_android_deps android: CONFIG += qt_android_deps
#install directives #install directives
@ -154,7 +181,7 @@ else: \
lib_replace.CONFIG = path lib_replace.CONFIG = path
QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace
unix|win32-g++* { unix|mingw {
CONFIG += create_pc CONFIG += create_pc
QMAKE_PKGCONFIG_LIBDIR = $$lib_replace.replace QMAKE_PKGCONFIG_LIBDIR = $$lib_replace.replace
QMAKE_PKGCONFIG_INCDIR = $$include_replace.replace QMAKE_PKGCONFIG_INCDIR = $$include_replace.replace
@ -169,7 +196,7 @@ unix {
QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace
} }
unix|win32-g++* { unix|mingw {
QMAKE_PKGCONFIG_NAME = $$replace(TARGET, ^Qt, "Qt$$section(VERSION, ., 0, 0) ") QMAKE_PKGCONFIG_NAME = $$replace(TARGET, ^Qt, "Qt$$section(VERSION, ., 0, 0) ")
QMAKE_PKGCONFIG_FILE = $$replace(TARGET, ^Qt, Qt$$section(VERSION, ., 0, 0)) QMAKE_PKGCONFIG_FILE = $$replace(TARGET, ^Qt, Qt$$section(VERSION, ., 0, 0))
for(i, MODULE_DEPENDS): \ for(i, MODULE_DEPENDS): \

View File

@ -60,7 +60,7 @@ exists($$_PRO_FILE_PWD_/tests/tests.pro) {
sub_tests.CONFIG = no_default_install sub_tests.CONFIG = no_default_install
!contains(QT_BUILD_PARTS, tests) { !contains(QT_BUILD_PARTS, tests) {
sub_tests.CONFIG += no_default_target sub_tests.CONFIG += no_default_target
} else { } else: !ios {
# Make sure these are there in case we need them # Make sure these are there in case we need them
sub_tools.CONFIG -= no_default_target sub_tools.CONFIG -= no_default_target
sub_examples.CONFIG -= no_default_target sub_examples.CONFIG -= no_default_target

View File

@ -55,7 +55,7 @@ load(qt_common)
wince*:LIBS += $$QMAKE_LIBS_GUI wince*:LIBS += $$QMAKE_LIBS_GUI
QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
unix|win32-g++* { unix|mingw {
!isEmpty(_QMAKE_SUPER_CACHE_): \ !isEmpty(_QMAKE_SUPER_CACHE_): \
rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]* rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]*
else: \ else: \

View File

@ -18,7 +18,7 @@ QT_CPU_FEATURES = $$eval(QT_CPU_FEATURES.$$QT_ARCH)
# #
# Set up compilers for SIMD (SSE/AVX, NEON etc) # Set up compilers for SIMD (SSE/AVX, NEON etc)
# #
*-g++*|linux-icc*|*-clang*|*-qcc* { *-g++*|intel_icc|*-clang*|*-qcc* {
sse2 { sse2 {
HEADERS += $$SSE2_HEADERS HEADERS += $$SSE2_HEADERS
@ -289,7 +289,7 @@ QT_CPU_FEATURES = $$eval(QT_CPU_FEATURES.$$QT_ARCH)
avx2 { avx2 {
HEADERS += $$AVX2_HEADERS HEADERS += $$AVX2_HEADERS
avx2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) -D_M_AVX2 avx2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS)
!contains(QT_CPU_FEATURES, avx):avx2_compiler.commands += $$QMAKE_CFLAGS_AVX2 !contains(QT_CPU_FEATURES, avx):avx2_compiler.commands += $$QMAKE_CFLAGS_AVX2
avx2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} avx2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT}
avx2_compiler.dependency_type = TYPE_C avx2_compiler.dependency_type = TYPE_C

View File

@ -0,0 +1,19 @@
# Extra target for running windeployqt
qtPrepareTool(QMAKE_WINDEPLOYQT, windeployqt)
build_pass {
load(resolve_target)
isEmpty(WINDEPLOYQT_OPTIONS): WINDEPLOYQT_OPTIONS = -qmldir $$shell_quote($$shell_path($$_PRO_FILE_PWD_))
WINDEPLOYQT_TARGET = $$shell_quote($$shell_path($$QMAKE_RESOLVED_TARGET))
WINDEPLOYQT_OUTPUT = $$shell_quote($$shell_path($$dirname(QMAKE_RESOLVED_TARGET)/$$basename(TARGET).windeployqt))
windeployqt.target = windeployqt
windeployqt.commands = $$QMAKE_WINDEPLOYQT $$WINDEPLOYQT_OPTIONS -list target $$WINDEPLOYQT_TARGET > $$WINDEPLOYQT_OUTPUT
windeployqt_clean.commands = if exist $$WINDEPLOYQT_OUTPUT for /f %i in ($$WINDEPLOYQT_OUTPUT) do $$QMAKE_DEL_FILE %~fi && $$QMAKE_DEL_DIR %~pi
QMAKE_EXTRA_TARGETS += windeployqt_clean
DISTCLEAN_DEPS += windeployqt_clean
QMAKE_DISTCLEAN += $$WINDEPLOYQT_OUTPUT
} else {
windeployqt.CONFIG += recursive
}
QMAKE_EXTRA_TARGETS += windeployqt

View File

@ -1,7 +1,7 @@
CONFIG -= console CONFIG -= console
contains(TEMPLATE, ".*app"){ contains(TEMPLATE, ".*app"){
QMAKE_LFLAGS += $$QMAKE_LFLAGS_WINDOWS $$QMAKE_LFLAGS_EXE QMAKE_LFLAGS += $$QMAKE_LFLAGS_WINDOWS $$QMAKE_LFLAGS_EXE
win32-g++:DEFINES += QT_NEEDS_QMAIN mingw:DEFINES += QT_NEEDS_QMAIN
qt:for(entryLib, $$list($$unique(QMAKE_LIBS_QT_ENTRY))) { qt:for(entryLib, $$list($$unique(QMAKE_LIBS_QT_ENTRY))) {
isEqual(entryLib, -lqtmain): { isEqual(entryLib, -lqtmain): {

View File

@ -0,0 +1,5 @@
# This is an empty prf file to overwrite the win32 version.
# On Windows RT all applications need to be windows applications
# and also link to winmain. Inside winmain we create the launch
# arguments and also initialize the UI.

View File

@ -0,0 +1,121 @@
# This performs basic variable replacement on the contents of the WinRT manifest template, as
# specified by WINRT_MANIFEST. The resulting manifest file is written to the output directory.
# While the most common options are covered by the default template, the developer is expected
# to make an application-level copy of the template in order to customize the manifest further.
# Afterwards, they can override the default template by assigning their template to WINRT_MANIFEST.
#
# All subkeys in WINRT_MANIFEST will be replaced if defined/found, so new variables can be easily
# added. The following keys have default values and are present in the default templates:
# WINRT_MANIFEST: The name of the input manifest file. Defaults to a file defined by the mkspec.
# WINRT_MANIFEST.target: The name of the target (.exe). Defaults to TARGET.
# WINRT_MANIFEST.identity: The unique ID of the app. Defaults to reusing the existing generated manifest's UUID, or generates a new UUID if none is present.
# WINRT_MANIFEST.name: The name of the package as displayed to the user. Defaults to TARGET.
# WINRT_MANIFEST.architecture: The target architecture. Defaults to VCPROJ_ARCH.
# WINRT_MANIFEST.version: The version number of the package. Defaults to "1.0.0.0".
# WINRT_MANIFEST.arguments: Allows arguments to be passed to the executable.
# WINRT_MANIFEST.publisher: Display name of the publisher. Defaults to "Default publisher display name".
# WINRT_MANIFEST.publisher_id: On Windows 8/RT, the publisher's distinguished name (default: CN=MyCN). On Windows Phone, the publisher's UUID (default: invalid UUID string).
# WINRT_MANIFEST.description: Package description. Defaults to "Default package description".
# WINRT_MANIFEST.author: Package author (Windows Phone only). Defaults to "Default package author".
# WINRT_MANIFEST.genre: Package genre (Windows Phone only). Defaults to "apps.normal".
# WINRT_MANIFEST.background: Tile background color. Defaults to "green".
# WINRT_MANIFEST.foreground: Tile foreground (text) color (Windows 8/RT only). Defaults to "light".
# WINRT_MANIFEST.logo_store: Logo image file for Windows Store. Default provided by the mkspec.
# WINRT_MANIFEST.logo_small: Small logo image file. Default provided by the mkspec.
# WINRT_MANIFEST.logo_medium: Medium logo image file. Default provided by the mkspec.
# WINRT_MANIFEST.logo_large: Large logo image file. Default provided by the mkspec.
# WINRT_MANIFEST.splash_screen: Splash screen image file. Default provided by the mkspec.
# WINRT_MANIFEST.iconic_tile_icon: Image file for the "iconic" tile template icon. Default provided by the mkspec.
# WINRT_MANIFEST.iconic_tile_small: Image file for the small "iconic" tile template logo. Default provided by the mkspec.
# WINRT_MANIFEST.capabilities: Specifies capabilities to add to the capability list.
# WINRT_MANIFEST.dependencies: Specifies dependencies required by the package.
# The manifest is generated for each build pass for normal apps, and only once for vcapps.
# - Normal apps have their package root directory in the same place as the target (one for each build pass).
# - Visual Studio requires a design-mode manifest in the same location as the vcproj.
!isEmpty(WINRT_MANIFEST): \
if(build_pass:equals(TEMPLATE, "app"))| \
if(!build_pass:equals(TEMPLATE, "vcapp")) {
manifest_file.input = $$WINRT_MANIFEST
load(resolve_target)
BUILD_DIR = $$dirname(QMAKE_RESOLVED_TARGET)
winphone: \
manifest_file.output = $$BUILD_DIR/WMAppManifest.xml
else: contains(TEMPLATE, "vc.*"): \
manifest_file.output = $$BUILD_DIR/Package.appxmanifest
else: \
manifest_file.output = $$BUILD_DIR/AppxManifest.xml
# Provide the C-runtime dependency
equals(TEMPLATE, "app") {
VCLIBS = Microsoft.VCLibs.$$replace(MSVC_VER, \\., ).00
CONFIG(debug, debug|release): \
WINRT_MANIFEST.dependencies += $${VCLIBS}.Debug
else: \
WINRT_MANIFEST.dependencies += $$VCLIBS
}
# Provide default values for required variables
isEmpty(WINRT_MANIFEST.target): WINRT_MANIFEST.target = $$TARGET
isEmpty(WINRT_MANIFEST.identity) {
# Reuse the existing UUID if possible
UUID_CACHE = $$OUT_PWD/.qmake.winrt_uuid_$$TARGET
exists($$UUID_CACHE) {
include($$UUID_CACHE)
} else {
WINRT_UUID = "WINRT_MANIFEST.identity = $$system(uuidgen)"
write_file($$UUID_CACHE, WINRT_UUID)|error("Unable to write the UUID cache; aborting.")
eval($$WINRT_UUID)
}
winphone: WINRT_MANIFEST.identity = {$$WINRT_MANIFEST.identity}
}
isEmpty(WINRT_MANIFEST.name): WINRT_MANIFEST.name = $$TARGET
isEmpty(WINRT_MANIFEST.architecture): WINRT_MANIFEST.architecture = $$VCPROJ_ARCH
isEmpty(WINRT_MANIFEST.version): WINRT_MANIFEST.version = 1.0.0.0
isEmpty(WINRT_MANIFEST.publisher): WINRT_MANIFEST.publisher = Default publisher display name
isEmpty(WINRT_MANIFEST.publisherid) {
winphone: WINRT_MANIFEST.publisherid = {00000000-0000-0000-0000-000000000000}
else: WINRT_MANIFEST.publisherid = CN=$$(USERNAME)
}
isEmpty(WINRT_MANIFEST.description): WINRT_MANIFEST.description = Default package description
isEmpty(WINRT_MANIFEST.author): WINRT_MANIFEST.author = Default package author
isEmpty(WINRT_MANIFEST.genre): WINRT_MANIFEST.genre = apps.normal
isEmpty(WINRT_MANIFEST.background): WINRT_MANIFEST.background = green
isEmpty(WINRT_MANIFEST.foreground): WINRT_MANIFEST.foreground = light
winphone: INDENT = "$$escape_expand(\\r\\n) "
else: INDENT = "$$escape_expand(\\r\\n) "
# Capabilities are given as a string list and may change with the configuration (network, sensors, etc.)
WINRT_MANIFEST.capabilities = $$unique(WINRT_MANIFEST.capabilities)
for(CAPABILITY, WINRT_MANIFEST.capabilities): \
MANIFEST_CAPABILITIES += " <Capability Name=\"$$CAPABILITY\" />"
WINRT_MANIFEST.capabilities = $$join(MANIFEST_CAPABILITIES, $$INDENT, $$INDENT, $$INDENT)
# Dependencies are given as a string list. The CRT dependency is added automatically above.
WINRT_MANIFEST.dependencies = $$unique(WINRT_MANIFEST.dependencies)
for(DEPENDENCY, WINRT_MANIFEST.dependencies): \
MANIFEST_DEPENDENCIES += " <PackageDependency Name=\"$$DEPENDENCY\" />"
WINRT_MANIFEST.dependencies = $$join(MANIFEST_DEPENDENCIES, $$INDENT, $$INDENT, $$INDENT)
# Provide default icons where needed
isEmpty(WINRT_ASSETS_PATH): WINRT_ASSETS_PATH = $$[QT_HOST_DATA/get]/mkspecs/common/winrt_winphone/assets
TEMPLATE_CONTENTS = $$cat($$WINRT_MANIFEST, lines)
ICONS_FOUND = $$find(TEMPLATE_CONTENTS, \\\$\\\$\\{WINRT_MANIFEST\\.(logo|tile)_)
ICONS_FOUND ~= s/.*\\\$\\\$\\{WINRT_MANIFEST\\.((logo|tile)_[^\}]+)\\}.*/\\1/g
for (ICON_NAME, ICONS_FOUND) {
ICON_FILE = $$eval(WINRT_MANIFEST.$$ICON_NAME)
isEmpty(ICON_FILE) {
icon_$${ICON_NAME}.input = $$WINRT_ASSETS_PATH/$${ICON_NAME}.png
icon_$${ICON_NAME}.output = $$BUILD_DIR/assets/$${ICON_NAME}.png
WINRT_MANIFEST.$${ICON_NAME} = assets/$${ICON_NAME}.png
} else {
icon_$${ICON_NAME}.input = $$ICON_FILE
icon_$${ICON_NAME}.output = $$BUILD_DIR/$$ICON_FILE
}
icon_$${ICON_NAME}.CONFIG = verbatim
QMAKE_SUBSTITUTES += icon_$${ICON_NAME}
}
QMAKE_SUBSTITUTES += manifest_file
}

View File

@ -82,7 +82,7 @@
#define QT_OPEN_LARGEFILE 0 #define QT_OPEN_LARGEFILE 0
#define QT_SNPRINTF ::snprintf #define QT_SNPRINTF ::snprintf
#define QT_VSNPRINTF ::vsnprintf #define QT_VSNPRINTF ::vsnprintf
#endif // QPLATFORMDEFS_H #endif // QPLATFORMDEFS_H

Some files were not shown because too many files have changed in this diff Show More