Merge master into api_changes

Change-Id: I93551e4d13a1b0815b359b9415060e9089477db1
This commit is contained in:
Kent Hansen 2012-03-23 13:36:29 +01:00
commit 3b512ae142
404 changed files with 4802 additions and 1822831 deletions

4
.gitignore vendored
View File

@ -172,6 +172,10 @@ src/3rdparty/webkit/WebCore/mocinclude.tmp
src/3rdparty/webkit/includes.txt
src/3rdparty/webkit/includes2.txt
# generated files in configure.exe bootstrapping
tools/configure/configure.intermediate.manifest
tools/configure/configure_pch.pch
# Symlinks generated by configure
tools/qvfb/qvfbhdr.h
tools/qvfb/qlock_p.h

View File

@ -55,29 +55,29 @@
#undef sparc
#undef unknown
#if defined(Q_PROCESSOR_ALPHA)
alpha
Architecture: alpha
#elif defined(Q_PROCESSOR_ARM)
arm
Architecture: arm
#elif defined(Q_PROCESSOR_AVR32)
avr32
Architecture: avr32
#elif defined(Q_PROCESSOR_BLACKFIN)
bfin
Architecture: bfin
#elif defined(Q_PROCESSOR_X86_32)
i386
Architecture: i386
#elif defined(Q_PROCESSOR_X86_64)
x86_64
Architecture: x86_64
#elif defined(Q_PROCESSOR_IA64)
ia64
Architecture: ia64
#elif defined(Q_PROCESSOR_MIPS)
mips
Architecture: mips
#elif defined(Q_PROCESSOR_POWER)
power
Architecture: power
#elif defined(Q_PROCESSOR_S390)
s390
Architecture: s390
#elif defined(Q_PROCESSOR_SH)
sh
Architecture: sh
#elif defined(Q_PROCESSOR_SPARC)
sparc
Architecture: sparc
#else
unknown
Architecture: unknown
#endif

View File

@ -1,7 +1,7 @@
CONFIG -= qt debug_and_release
# Detect target by preprocessing a file that uses Q_PROCESSOR_* macros from qprocessordetection.h
COMMAND = $$QMAKE_CXX $$QMAKE_CXXFLAGS -E $$PWD/arch.cpp
# 'false' as second argument to system() prevents qmake from stripping newlines
COMPILER_ARCH = $$system($$COMMAND, false)
# system function converts newline in output into spaces
COMPILER_ARCH = $$system($$COMMAND)
# Message back to configure so that it can set QT_ARCH and QT_HOST_ARCH
message($$COMPILER_ARCH)

View File

@ -58,5 +58,8 @@ int main(int, char **)
xcb_connection_t *connection = xcb_connect("", &primaryScreen);
// This won't compile unless libxcb >= 1.5 which defines XCB_ATOM_PRIMARY.
int xcbAtomPrimary = XCB_ATOM_PRIMARY;
return 0;
}

View File

@ -9,7 +9,12 @@ cat >>bsymbolic_functions.c << EOF
int main() { return 0; }
EOF
$COMPILER $SYSROOT_FLAG -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c >/dev/null 2>&1 && BSYMBOLIC_FUNCTIONS_SUPPORT=yes
if [ "$VERBOSE" = "yes" ] ; then
echo $COMPILER $SYSROOT_FLAG -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c
$COMPILER $SYSROOT_FLAG -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c && BSYMBOLIC_FUNCTIONS_SUPPORT=yes
else
$COMPILER $SYSROOT_FLAG -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c >/dev/null 2>&1 && BSYMBOLIC_FUNCTIONS_SUPPORT=yes
fi
rm -f bsymbolic_functions.c libtest.so
# done

View File

@ -25,6 +25,7 @@ __global void blah();
EOF
if [ "$VERBOSE" = "yes" ] ; then
echo $COMPILER -c $CMDLINE fvisibility.c
$COMPILER -c $CMDLINE fvisibility.c && FVISIBILITY_SUPPORT=yes
else
$COMPILER -c $CMDLINE fvisibility.c >/dev/null 2>&1 && FVISIBILITY_SUPPORT=yes

View File

@ -49,6 +49,7 @@ templates for common STL container classes.
#include <vector>
#include <algorithm>
#include <iostream>
#include <cstddef>
// something mean to see if the compiler and C++ standard lib are good enough
template<class K, class T>

259
configure vendored
View File

@ -679,8 +679,7 @@ CFG_OPENVG=auto
CFG_OPENVG_LC_INCLUDES=no
CFG_OPENVG_SHIVA=auto
CFG_OPENVG_ON_OPENGL=auto
CFG_EGL=no
CFG_EGL_GLES_INCLUDES=no
CFG_EGL=auto
CFG_SSE=auto
CFG_FONTCONFIG=auto
CFG_LIBFREETYPE=auto
@ -708,6 +707,7 @@ CFG_XINPUT=runtime
CFG_XKB=auto
CFG_XCB=auto
CFG_XCB_LIMITED=yes
CFG_EGLFS=auto
CFG_LIBUDEV=auto
CFG_OBSOLETE_WAYLAND=no
CFG_EVDEV=auto
@ -739,6 +739,8 @@ CFG_NAS=no
CFG_ACCESSIBILITY=auto
CFG_IWMMXT=no
CFG_NEON=auto
CFG_MIPS_DSP=yes
CFG_MIPS_DSPR2=yes
CFG_CLOCK_GETTIME=auto
CFG_CLOCK_MONOTONIC=auto
CFG_MREMAP=auto
@ -893,7 +895,7 @@ while [ "$#" -gt 0 ]; do
VAL=no
;;
#Qt style yes options
-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-xinput2|-egl|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-xcb|-nis|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-debug-and-release|-exceptions|-harfbuzz|-prefix-install|-silent|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-phonon-backend|-audio-backend|-declarative-debug|-javascript-jit|-rpath|-force-pkg-config|-icu|-force-asserts|-testcocoon)
-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-xinput2|-egl|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-xcb|-eglfs|-nis|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-debug-and-release|-exceptions|-harfbuzz|-prefix-install|-silent|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-phonon-backend|-audio-backend|-declarative-debug|-javascript-jit|-rpath|-force-pkg-config|-icu|-force-asserts|-testcocoon)
VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
VAL=yes
;;
@ -1165,9 +1167,6 @@ while [ "$#" -gt 0 ]; do
[ "$VAL" = "yes" ] || [ "$VAL" = "no" ] ||
[ "$VAL" = "es2" ]; then
CFG_OPENGL="$VAL"
if [ "$VAL" = "es2" ]; then
CFG_EGL="yes"
fi
else
UNKNOWN_OPT=yes
fi
@ -1175,9 +1174,6 @@ while [ "$#" -gt 0 ]; do
openvg)
if [ "$VAL" = "auto" ] || [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_OPENVG="$VAL"
if [ "$CFG_EGL" = "no" ] && [ "$VAL" != "no" ]; then
CFG_EGL=auto
fi
else
UNKNOWN_OPT=yes
fi
@ -1548,6 +1544,20 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes
fi
;;
mips_dsp)
if [ "$VAL" = "no" ]; then
CFG_MIPS_DSP="$VAL"
else
UNKNOWN_OPT=yes
fi
;;
mips_dspr2)
if [ "$VAL" = "no" ]; then
CFG_MIPS_DSPR2="$VAL"
else
UNKNOWN_OPT=yes
fi
;;
reduce-relocations)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_REDUCE_RELOCATIONS="$VAL"
@ -1654,6 +1664,13 @@ while [ "$#" -gt 0 ]; do
wayland)
CFG_OBSOLETE_WAYLAND=yes
;;
eglfs)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_EGLFS="$VAL"
else
UNKNOWN_OPT=yes
fi
;;
libudev)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_LIBUDEV="$VAL"
@ -2600,8 +2617,13 @@ if [ "$CFG_SEPARATE_DEBUG_INFO" != "no" ] && [ "$CFG_SHARED" = "yes" ]; then
fi
# auto-detect -fvisibility support
if [ "$CFG_REDUCE_EXPORTS" = "auto" ]; then
if [ "$CFG_REDUCE_EXPORTS" != "no" ]; then
if "$unixtests/fvisibility.test" "$TEST_COMPILER" "$OPT_VERBOSE"; then
if [ "$CFG_REDUCE_EXPORTS" = "yes" ]; then
echo "-reduce-exports was requested but this compiler does not support it"
echo "Re-run configure with -v for more information"
exit 1
fi
CFG_REDUCE_EXPORTS=no
else
CFG_REDUCE_EXPORTS=yes
@ -2611,6 +2633,11 @@ fi
# detect the availability of the -Bsymbolic-functions linker optimization
if [ "$CFG_REDUCE_RELOCATIONS" != "no" ]; then
if "$unixtests/bsymbolic_functions.test" "$TEST_COMPILER" "$OPT_VERBOSE"; then
if [ "$CFG_REDUCE_RELOCATIONS" = "yes" ]; then
echo "-reduce-relocations was requested but this compiler does not support it"
echo "Re-run configure with -v for more information"
exit 1
fi
CFG_REDUCE_RELOCATIONS=no
else
CFG_REDUCE_RELOCATIONS=yes
@ -2869,6 +2896,14 @@ if [ "$OPT_HELP" = "yes" ]; then
XCBN=" "
fi
if [ "$CFG_EGLFS" = "no" ]; then
EGLFSY=" "
EGLFSN="*"
else
EGLFSY="*"
EGLFSN=" "
fi
if [ "$CFG_XINPUT2" = "no" ]; then
X2Y=" "
X2N="*"
@ -3074,6 +3109,8 @@ cat << EOF
-no-sse4.2.......... Do not compile with use of SSE4.2 instructions.
-no-avx ............ Do not compile with use of AVX 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_dspr2 ..... Do not compile with use of MIPS DSP rev2 instructions.
-qtnamespace <name> Wraps all Qt library code in 'namespace <name> {...}'.
-qtlibinfix <infix> Renames all libQt*.so to libQt*<infix>.so.
@ -3191,6 +3228,9 @@ if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
$XCBN -no-xcb ............ Do not compile Xcb (X protocol C-language Binding) support.
$XCBY -xcb ............... Compile Xcb support.
$EGLFSN -no-eglfs .......... Do not compile EGLFS (EGL Full Screen/Single Surface) support.
$EGLFSY -eglfs ............. Compile EGLFS support.
EOF
fi # X11
@ -3309,12 +3349,6 @@ Qt/X11 only:
-system-nas-sound .. Use NAS libaudio from the operating system.
See http://radscan.com/nas.html
-egl ............... Use EGL instead of GLX to manage contexts.
When building for desktop OpenGL, this option will
make Qt use EGL to manage contexts rather than the
GLX, which is the default. Note: For OpenGL ES, EGL
is always used.
-no-opengl ......... Do not support OpenGL.
+ -opengl <api> ...... Enable OpenGL support.
With no parameter, this will auto-detect the "best"
@ -3899,11 +3933,12 @@ fi # Build qmake
#-------------------------------------------------------------------------------
# Use config.tests/arch/arch.pro to has the compiler tell us what the target architecture is
CFG_ARCH=`"$outpath/bin/qmake" -spec "$XQMAKESPEC" -o /dev/null "$relpath/config.tests/arch/arch.pro" 2>&1 | sed -e "s,^Project MESSAGE: ,," -e "s,^#.*$,,g" | grep -v "^$"`
CFG_ARCH=`"$outpath/bin/qmake" -spec "$XQMAKESPEC" -o /dev/null "$relpath/config.tests/arch/arch.pro" 2>&1 | sed -n -e 's,^Project MESSAGE:.*Architecture: \([a-zA-Z0-9_]*\).*,\1,p'`
[ -z "$CFG_ARCH" ] && CFG_ARCH="unknown"
if [ "$QMAKESPEC" != "$XQMAKESPEC" ]; then
# Do the same test again, using the host compiler
CFG_HOST_ARCH=`"$outpath/bin/qmake" -spec "$QMAKESPEC" -o /dev/null "$relpath/config.tests/arch/arch.pro" 2>&1 | sed -e "s,^Project MESSAGE: ,," -e "s,^#.*$,,g" | grep -v "^$"`
CFG_HOST_ARCH=`"$outpath/bin/qmake" -spec "$QMAKESPEC" -o /dev/null "$relpath/config.tests/arch/arch.pro" 2>&1 | sed -n -e 's,^Project MESSAGE:.*Architecture: \([a-zA-Z0-9]*\).*,\1,p'`
[ -z "$CFG_HOST_ARCH" ] && CFG_HOST_ARCH="unknown"
else
# not cross compiling, host == target
@ -4030,6 +4065,20 @@ elif [ "$CFG_ARCH" != "arm" ]; then
CFG_NEON=no
fi
# detect mips_dsp support
if [ "${CFG_ARCH}" = "mips" ] && [ "${CFG_MIPS_DSP}" = "yes" ]; then
CFG_MIPS_DSP=yes
else
CFG_MIPS_DSP=no
fi
# detect mips_dspr2 support
if [ "${CFG_ARCH}" = "mips" ] && [ "${CFG_MIPS_DSPR2}" = "yes" ]; then
CFG_MIPS_DSPR2=yes
else
CFG_MIPS_DSPR2=no
fi
[ "$XPLATFORM_MINGW" = "yes" ] && QMakeVar add styles "windowsxp windowsvista"
# detect zlib
@ -4103,6 +4152,14 @@ if [ "$CFG_ACCESSIBILITY" = "auto" ]; then
CFG_ACCESSIBILITY=yes
fi
if [ "$CFG_EGLFS" = "yes" ]; then
if [ "$CFG_EGL" = "no" ]; then
echo "The EGLFS plugin requires EGL support and cannot be built"
exit 101
fi
CFG_EGL=yes
fi
# auto-detect SQL-modules support
for _SQLDR in $CFG_SQL_AVAILABLE; do
case $_SQLDR in
@ -4570,9 +4627,6 @@ if [ "$PLATFORM_X11" = "yes" -o "$XPLATFORM_MINGW" = "yes" ]; then
CFG_OPENGL=desktop
elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengles2 "OpenGL ES 2.x" $L_FLAGS $I_FLAGS $l_FLAGS; then
CFG_OPENGL=es2
if [ "$CFG_EGL" = "no" ]; then
CFG_EGL=auto
fi
else
if [ "$CFG_OPENGL" = "yes" ]; then
echo "All the OpenGL functionality tests failed!"
@ -4723,33 +4777,6 @@ if [ "$PLATFORM_X11" = "yes" ]; then
fi
fi
# auto-detect FontConfig support
if [ "$CFG_FONTCONFIG" != "no" ]; then
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists fontconfig --exists freetype2 2>/dev/null; then
QT_CFLAGS_FONTCONFIG=`$PKG_CONFIG --cflags fontconfig --cflags freetype2 2>/dev/null`
QT_LIBS_FONTCONFIG=`$PKG_CONFIG --libs fontconfig --libs freetype2 2>/dev/null`
else
QT_CFLAGS_FONTCONFIG=
QT_LIBS_FONTCONFIG="-lfreetype -lfontconfig"
fi
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/fontconfig "FontConfig" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS $QT_CFLAGS_FONTCONFIG $QT_LIBS_FONTCONFIG; then
CFG_FONTCONFIG=yes
QMakeVar set QMAKE_CFLAGS_X11 "$QT_CFLAGS_FONTCONFIG \$\$QMAKE_CFLAGS_X11"
QMakeVar set QMAKE_LIBS_X11 "$QT_LIBS_FONTCONFIG \$\$QMAKE_LIBS_X11"
CFG_LIBFREETYPE=system
else
if [ "$CFG_FONTCONFIG" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
echo "FontConfig 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_FONTCONFIG=no
fi
fi
fi
# auto-detect Session Management support
if [ "$CFG_SM" = "auto" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/sm "Session Management" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then
@ -4898,6 +4925,33 @@ if [ "$PLATFORM_X11" = "yes" ]; then
fi
fi # X11
# auto-detect FontConfig support
if [ "$CFG_FONTCONFIG" != "no" ]; then
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists fontconfig --exists freetype2 2>/dev/null; then
QT_CFLAGS_FONTCONFIG=`$PKG_CONFIG --cflags fontconfig --cflags freetype2 2>/dev/null`
QT_LIBS_FONTCONFIG=`$PKG_CONFIG --libs fontconfig --libs freetype2 2>/dev/null`
else
QT_CFLAGS_FONTCONFIG=
QT_LIBS_FONTCONFIG="-lfreetype -lfontconfig"
fi
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/fontconfig "FontConfig" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS $QT_CFLAGS_FONTCONFIG $QT_LIBS_FONTCONFIG; then
CFG_FONTCONFIG=yes
QMakeVar set QMAKE_CFLAGS_X11 "$QT_CFLAGS_FONTCONFIG \$\$QMAKE_CFLAGS_X11"
QMakeVar set QMAKE_LIBS_X11 "$QT_LIBS_FONTCONFIG \$\$QMAKE_LIBS_X11"
CFG_LIBFREETYPE=system
else
if [ "$CFG_FONTCONFIG" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
echo "FontConfig 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_FONTCONFIG=no
fi
fi
fi
if [ "$BUILD_ON_MAC" = "yes" ]; then
if [ "$CFG_PHONON" != "no" ]; then
@ -4914,7 +4968,6 @@ if [ "$BUILD_ON_MAC" = "yes" ]; then
fi
fi
if [ "$PLATFORM_QPA" = "yes" ]; then
# auto-detect OpenGL support (es2 = OpenGL ES 2.x)
if [ "$CFG_OPENGL" = "auto" ] || [ "$CFG_OPENGL" = "yes" ]; then
@ -4984,6 +5037,7 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
# Save these for a check later
ORIG_CFG_XCB="$CFG_XCB"
ORIG_CFG_EGLFS="$CFG_EGLFS"
if [ "$CFG_LIBUDEV" != "no" ]; then
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists libudev 2>/dev/null; then
@ -5041,7 +5095,7 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
fi
if [ "$CFG_XCB" != "no" ]; then
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists xcb 2>/dev/null; then
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists "xcb >= 1.5" 2>/dev/null; then
QMAKE_CFLAGS_XCB="`$PKG_CONFIG --cflags xcb 2>/dev/null`"
QMAKE_LIBS_XCB="`$PKG_CONFIG --libs xcb 2>/dev/null`"
fi
@ -5101,6 +5155,31 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
QMAKE_DEFINES_XCB=QT_NO_XCB_XKB
fi
# EGL Support
if [ "$CFG_EGL" != "no" ]; then
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists egl 2>/dev/null; then
QMAKE_INCDIR_EGL=`$PKG_CONFIG --cflags-only-I egl 2>/dev/null | sed -e 's,^-I,,g' -e 's, -I, ,g'`
QMAKE_LIBS_EGL=`$PKG_CONFIG --libs egl 2>/dev/null`
QMAKE_CFLAGS_EGL=`$PKG_CONFIG --cflags egl 2>/dev/null`
QMakeVar set QMAKE_INCDIR_EGL "$QMAKE_INCDIR_EGL"
QMakeVar set QMAKE_LIBS_EGL "$QMAKE_LIBS_EGL"
fi # detect EGL support
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/qpa/egl" "EGL" $L_FLAGS $I_FLAGS $l_FLAGS $QMAKE_CFLAGS_EGL $QMAKE_LIBS_EGL; then
CFG_EGL=yes
elif [ "$CFG_EGL" = "yes" ]; then
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 " QMAKE_INCDIR_EGL, QMAKE_LIBDIR_EGL and QMAKE_LIBS_EGL in ${XQMAKESPEC}."
exit 1
else
CFG_EGL=no
fi
fi
if [ "$CFG_EGLFS" != "no" ]; then
CFG_EGLFS="$CFG_EGL"
fi
if [ -n "$QMAKE_CFLAGS_XCB" ] || [ -n "$QMAKE_LIBS_XCB" ]; then
QMakeVar set QMAKE_CFLAGS_XCB "$QMAKE_CFLAGS_XCB"
QMakeVar set QMAKE_LIBS_XCB "$QMAKE_LIBS_XCB"
@ -5116,13 +5195,13 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
fi
if [ "$PLATFORM_QPA" = "yes" ] && [ "$BUILD_ON_MAC" = "no" ] && [ "$XPLATFORM_MINGW" = "no" ]; then
if [ "$CFG_XCB" = "no" ]; then
if [ "$CFG_XCB" = "no" ] && [ "$CFG_EGLFS" = "no" ]; then
if [ "$QPA_PLATFORM_GUARD" = "yes" ] &&
( [ "$ORIG_CFG_XCB" = "auto" ] ); then
( [ "$ORIG_CFG_XCB" = "auto" ] || [ "$ORIG_CFG_EGLFS" = "auto" ] ); then
echo "No QPA platform plugin enabled!"
echo " If you really want to build without a QPA platform plugin you must pass"
echo " -no-xcb. Doing this will produce a Qt that"
echo " cannot run GUI applications."
echo " -no-xcb and -no-eglfs to configure. Doing this will"
echo " produce a Qt that cannot run GUI applications."
echo " The dependencies needed for xcb to build are listed in"
echo " src/plugins/platforms/xcb/README"
exit 1
@ -5132,35 +5211,6 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
fi
EGL_VARIANT=none
# EGL Support
if [ "$PLATFORM_X11" = "yes" ]; then
if [ "$CFG_EGL" != "no" ]; then
# detect EGL support
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/egl" "EGL (EGL/egl.h)" $L_FLAGS $I_FLAGS $l_FLAGS; then
# EGL specified by QMAKE_*_EGL, included with <EGL/egl.h>
EGL_VARIANT=regular
CFG_EGL=yes
fi
if [ "$EGL_VARIANT" = "none" ]; then
if [ "$CFG_EGL" = "yes" ]; then
echo "The EGL functionality test failed!"
echo " EGL is required for OpenGL ES to manage contexts & surfaces."
echo " You might need to modify the include and library search paths by editing"
echo " QMAKE_INCDIR_EGL, QMAKE_LIBDIR_EGL and QMAKE_LIBS_EGL in"
echo " ${XQMAKESPEC}."
exit 1
fi
CFG_EGL=no
# If QtOpenGL would be built against OpenGL ES, disable it as we can't to that if EGL is missing
if [ "$CFG_OPENGL" = "es2" ]; then
CFG_OPENGL=no
fi
fi
fi
fi
[ "$XPLATFORM_MINGW" = "yes" ] && [ "$CFG_PHONON" != "no" ] && CFG_PHONON="yes"
# freetype support
@ -5413,7 +5463,7 @@ if [ "$CFG_MAC_DWARF2" = "yes" ]; then
fi
# Detect the default arch (x86 or x86_64) on Mac OS X
if [ "$BUILD_ON_MAC" = "yes" ]; then
if [ "$BUILD_ON_MAC" = "yes" ] && [ "$QT_CROSS_COMPILE" = "no" ]; then
DEFAULT_ARCH=
case `file "${outpath}/bin/qmake"` in
*i?86)
@ -5448,19 +5498,18 @@ else
QT_CONFIG="$QT_CONFIG accessibility"
fi
# egl stuff does not belong in lighthouse, but rather in plugins
if [ "$PLATFORM_QPA" = "yes" ]; then
CFG_EGL="no"
# enable egl
if [ "$CFG_EGL" = "yes" ]; then
QT_CONFIG="$QT_CONFIG egl"
else
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGL"
fi
# enable egl
if [ "$CFG_EGL" = "no" ]; then
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGL"
# enable eglfs
if [ "$CFG_EGLFS" = "yes" ]; then
QT_CONFIG="$QT_CONFIG eglfs"
else
QT_CONFIG="$QT_CONFIG egl"
if [ "$CFG_EGL_GLES_INCLUDES" = "yes" ]; then
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_GLES_EGL"
fi
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGLFS"
fi
# enable openvg
@ -5565,6 +5614,10 @@ fi
[ "$CFG_AVX" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG avx"
[ "$CFG_IWMMXT" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG iwmmxt"
[ "$CFG_NEON" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG neon"
if [ "$CFG_ARCH" = "mips" ]; then
[ "$CFG_MIPS_DSP" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG mips_dsp"
[ "$CFG_MIPS_DSPR2" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG mips_dspr2"
fi
if [ "$CFG_CLOCK_GETTIME" = "yes" ]; then
QT_CONFIG="$QT_CONFIG clock-gettime"
fi
@ -5719,7 +5772,7 @@ fi
[ '!' -z "$L_FLAGS" ] && QMakeVar add QMAKE_LIBDIR_FLAGS "$L_FLAGS"
[ '!' -z "$l_FLAGS" ] && QMakeVar add LIBS "$l_FLAGS"
if [ "$PLATFORM_MAC" = "yes" ]; then
if [ "$PLATFORM_MAC" = "yes" ] && [ "$QT_CROSS_COMPILE" = "no" ]; then
if [ "$CFG_RPATH" = "yes" ]; then
QMAKE_CONFIG="$QMAKE_CONFIG absolute_library_soname"
# set the default rpath to the library installation directory
@ -6519,6 +6572,9 @@ elif [ "$CFG_ARCH" = "arm" ]; then
echo "iWMMXt support ......... ${CFG_IWMMXT}"
echo "NEON support ........... ${CFG_NEON}"
fi
if [ "$CFG_ARCH" = "mips" ]; then
echo "MIPS_DSP/MIPS_DSPR2..... ${CFG_MIPS_DSP}/${CFG_MIPS_DSPR2}"
fi
echo "IPv6 ifname support .... $CFG_IPV6IFNAME"
echo "getaddrinfo support .... $CFG_GETADDRINFO"
echo "getifaddrs support ..... $CFG_GETIFADDRS"
@ -6552,13 +6608,7 @@ elif [ "$CFG_OPENGL" = "es2" ]; then
else
echo "OpenGL support ......... no"
fi
if [ "$CFG_EGL" != "no" ]; then
if [ "$CFG_EGL_GLES_INCLUDES" = "yes" ]; then
echo "EGL support ............ yes <GLES/egl.h>"
else
echo "EGL support ............ yes <EGL/egl.h>"
fi
fi
if [ "$CFG_OPENVG" ]; then
if [ "$CFG_OPENVG_SHIVA" = "yes" ]; then
echo "OpenVG support ......... ShivaVG"
@ -6614,6 +6664,7 @@ echo "Xrender support ........ $CFG_XRENDER"
if [ "$XPLATFORM_MAEMO" = "yes" ] && [ "$CFG_XCB" = "yes" ]; then
echo "XInput2 support ........ $CFG_XINPUT2"
fi
echo "EGLFS support .......... $CFG_EGLFS"
echo
# complain about not being able to use dynamic plugins if we are using a static build
@ -6964,6 +7015,10 @@ fi'`
[ -f "$outpath/config.status" ] && rm -f "$outpath/config.status"
echo "#!/bin/sh" > "$outpath/config.status"
[ -n "$PKG_CONFIG_SYSROOT_DIR" ] && \
echo "export PKG_CONFIG_SYSROOT_DIR=$PKG_CONFIG_SYSROOT_DIR" >> "$outpath/config.status"
[ -n "$PKG_CONFIG_LIBDIR" ] && \
echo "export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR" >> "$outpath/config.status"
echo "if [ \"\$#\" -gt 0 ]; then" >> "$outpath/config.status"
echo " $CONFIG_STATUS \"\$@\"" >> "$outpath/config.status"
echo "else" >> "$outpath/config.status"

View File

@ -15,7 +15,6 @@ SUBDIRS = \
effects \
graphicsview \
ipc \
itemviews \
layouts \
linguist \
mainwindows \
@ -25,9 +24,13 @@ SUBDIRS = \
sql \
tools \
tutorials \
widgets \
touch \
gestures
!contains(QT_CONFIG, no-widgets) {
SUBDIRS += widgets \
itemviews
}
}
wince*|embedded|x11:!contains(QT_CONFIG, no-gui): SUBDIRS += embedded

View File

@ -3,7 +3,7 @@ SUBDIRS = \
factorial \
pingpong
!contains(QT_CONFIG, no-gui) {
!contains(QT_CONFIG, no-widgets) {
SUBDIRS += \
eventtransitions \
rogue \

View File

@ -7,7 +7,7 @@
# as it's on by default in qcc (and has an analogous -nopipe option)
#
QMAKE_CFLAGS +=
QMAKE_CFLAGS += -Wno-psabi
QMAKE_CFLAGS_DEPS += -M
QMAKE_CFLAGS_WARN_ON += -Wall -W
QMAKE_CFLAGS_WARN_OFF += -w

View File

@ -1,4 +1,4 @@
QT += xml uilib
QT += xml
!isEmpty(QT.script.name): QT += script
!isEmpty(QT.designer.name): QT += designer
qt:load(qt)

View File

@ -144,7 +144,7 @@ defineTest(installTestHelperApp) {
subPath = $${subInstall}.path
win32: extension = .exe
$$subTarget = $${2}/$${3}$${extension}
$$subFiles = $${1}$${extension}
$$subFiles = $${OUT_PWD}/$${1}$${extension}
$$subPath = $${target.path}/$${2}
$$subConfig += no_check_exist executable
INSTALLS += $${subInstall}

View File

@ -39,7 +39,7 @@
**
****************************************************************************/
#include "../linux-g++/qplatformdefs.h"
#include "../linux-arm-gnueabi-g++/qplatformdefs.h"
#define QT_GUI_DOUBLE_CLICK_RADIUS 20
#define QT_GUI_DRAG_DISTANCE 16

View File

@ -1,14 +1,6 @@
#
# qmake configuration for linux-icc
#
# Written for Intel C++ Compiler versions 10.x for GNU/Linux
#
# Note: Some of the remarks from the Intel compiler are disabled (even
# with 'warn_on' specified):
#
# warning #654: overloaded virtual function "T::f" is only partially overridden in class "U"
# warning #1572: floating-point equality and inequality comparisons are unreliable
#
MAKEFILE_GENERATOR = UNIX
TARGET_PLATFORM = unix
@ -104,5 +96,5 @@ QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
include(../common/unix.conf)
include(../common/linux.conf)
load(qt_config)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
Copyright (c) 2000 XFree86, Inc.

View File

@ -1,19 +0,0 @@
Copyright 1984-1989, 1994 Adobe Systems Incorporated.
Copyright 1988, 1994 Digital Equipment Corporation.
Adobe is a trademark of Adobe Systems Incorporated which may be
registered in certain jurisdictions.
Permission to use these trademarks is hereby granted only in
association with the images described in this file.
Permission to use, copy, modify, distribute and sell this software
and its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notices appear in all
copies and that both those copyright notices and this permission
notice appear in supporting documentation, and that the names of
Adobe Systems and Digital Equipment Corporation not be used in
advertising or publicity pertaining to distribution of the software
without specific, written prior permission. Adobe Systems and
Digital Equipment Corporation make no representations about the
suitability of this software for any purpose. It is provided "as
is" without express or implied warranty.

View File

@ -1,16 +0,0 @@
Permission to use, reproduce, display and distribute the listed typefaces
is hereby granted, provided that the Adobe Copyright notice appears in all
whole and partial copies of the software and that the following trademark
symbol and attribution appear in all unmodified copies of the software:
Copyright (c) 1989 Adobe Systems Incorporated
Utopia (R)
Utopia is a registered trademark of Adobe Systems Incorporated
The Adobe typefaces (Type 1 font program, bitmaps and Adobe Font Metric
files) donated are:
Utopia Regular
Utopia Italic
Utopia Bold
Utopia Bold Italic

View File

@ -1,42 +0,0 @@
Luxi fonts copyright (c) 2001 by Bigelow & Holmes Inc. Luxi font
instruction code copyright (c) 2001 by URW++ GmbH. All Rights
Reserved. Luxi is a registered trademark of Bigelow & Holmes Inc.
Permission is hereby granted, free of charge, to any person obtaining
a copy of these Fonts and associated documentation files (the "Font
Software"), to deal in the Font Software, including without
limitation the rights to use, copy, merge, publish, distribute,
sublicense, and/or sell copies of the Font Software, and to permit
persons to whom the Font Software is furnished to do so, subject to
the following conditions:
The above copyright and trademark notices and this permission notice
shall be included in all copies of one or more of the Font Software.
The Font Software may not be modified, altered, or added to, and in
particular the designs of glyphs or characters in the Fonts may not
be modified nor may additional glyphs or characters be added to the
Fonts. This License becomes null and void when the Fonts or Font
Software have been modified.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
BIGELOW & HOLMES INC. OR URW++ GMBH. BE LIABLE FOR ANY CLAIM, DAMAGES
OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT,
INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT
SOFTWARE.
Except as contained in this notice, the names of Bigelow & Holmes
Inc. and URW++ GmbH. shall not be used in advertising or otherwise to
promote the sale, use or other dealings in this Font Software without
prior written authorization from Bigelow & Holmes Inc. and URW++ GmbH.
For further information, contact:
info@urwpp.de
or
design@bigelowandholmes.com

View File

@ -1,11 +0,0 @@
(c) Copyright 1989-1992, Bitstream Inc., Cambridge, MA.
You are hereby granted permission under all Bitstream propriety rights
to use, copy, modify, sublicense, sell, and redistribute the 4 Bitstream
Charter (r) Type 1 outline fonts and the 4 Courier Type 1 outline fonts
for any purpose and without restriction; provided, that this notice is
left intact on all copies of such fonts and that Bitstream's trademark
is acknowledged as shown below on all unmodified copies of the 4 Charter
Type 1 fonts.
BITSTREAM CHARTER is a registered trademark of Bitstream Inc.

View File

@ -1,11 +0,0 @@
(c) Copyright 1989-1992, Bitstream Inc., Cambridge, MA.
You are hereby granted permission under all Bitstream propriety rights
to use, copy, modify, sublicense, sell, and redistribute the 4 Bitstream
Charter (r) Type 1 outline fonts and the 4 Courier Type 1 outline fonts
for any purpose and without restriction; provided, that this notice is
left intact on all copies of such fonts and that Bitstream's trademark
is acknowledged as shown below on all unmodified copies of the 4 Charter
Type 1 fonts.
BITSTREAM CHARTER is a registered trademark of Bitstream Inc.

View File

@ -1,98 +0,0 @@
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below)
Bitstream Vera Fonts Copyright
------------------------------
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
a trademark of Bitstream, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of the fonts accompanying this license ("Fonts") and associated
documentation files (the "Font Software"), to reproduce and distribute the
Font Software, including without limitation the rights to use, copy, merge,
publish, distribute, and/or sell copies of the Font Software, and to permit
persons to whom the Font Software is furnished to do so, subject to the
following conditions:
The above copyright and trademark notices and this permission notice shall
be included in all copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular
the designs of glyphs or characters in the Fonts may be modified and
additional glyphs or characters may be added to the Fonts, only if the fonts
are renamed to names not containing either the words "Bitstream" or the word
"Vera".
This License becomes null and void to the extent applicable to Fonts or Font
Software that has been modified and is distributed under the "Bitstream
Vera" names.
The Font Software may be sold as part of a larger software package but no
copy of one or more of the Font Software typefaces may be sold by itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
FONT SOFTWARE.
Except as contained in this notice, the names of Gnome, the Gnome
Foundation, and Bitstream Inc., shall not be used in advertising or
otherwise to promote the sale, use or other dealings in this Font Software
without prior written authorization from the Gnome Foundation or Bitstream
Inc., respectively. For further information, contact: fonts at gnome dot
org.
Arev Fonts Copyright
------------------------------
Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining
a copy of the fonts accompanying this license ("Fonts") and
associated documentation files (the "Font Software"), to reproduce
and distribute the modifications to the Bitstream Vera Font Software,
including without limitation the rights to use, copy, merge, publish,
distribute, and/or sell copies of the Font Software, and to permit
persons to whom the Font Software is furnished to do so, subject to
the following conditions:
The above copyright and trademark notices and this permission notice
shall be included in all copies of one or more of the Font Software
typefaces.
The Font Software may be modified, altered, or added to, and in
particular the designs of glyphs or characters in the Fonts may be
modified and additional glyphs or characters may be added to the
Fonts, only if the fonts are renamed to names not containing either
the words "Tavmjong Bah" or the word "Arev".
This License becomes null and void to the extent applicable to Fonts
or Font Software that has been modified and is distributed under the
"Tavmjong Bah Arev" names.
The Font Software may be sold as part of a larger software package but
no copy of one or more of the Font Software typefaces may be sold by
itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
Except as contained in this notice, the name of Tavmjong Bah shall not
be used in advertising or otherwise to promote the sale, use or other
dealings in this Font Software without prior written authorization
from Tavmjong Bah. For further information, contact: tavmjong @ free
. fr.
$Id: LICENSE 778 2006-04-20 18:14:24Z moyogo $

View File

@ -1,9 +0,0 @@
IBM Courier - Copyright (c) IBM Corporation 1990, 1991
You are hereby granted permission under the terms of the IBM/MIT X Consortium
Courier Typefont agreement to execute, reproduce, distribute, display, market,
sell and otherwise transfer copies of the IBM Courier font to third parties.
The font is provided "AS IS" without charge. NO WARRANTIES OR INDEMNIFICATION
ARE GIVEN, WHETHER EXPRESS OR IMPLIED INCLUDING, BUT LIMITED TO THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

View File

@ -1,7 +0,0 @@
The Unifont font was originally obtained from http://www.czyborra.com/ under
the following license:
All of my works you find here are freeware. You may freely copy, use, quote,
modify or redistribute them as long as you properly attribute my contribution
and have given a quick thought about whether Roman might perhaps be interested
to read what you did with his stuff. Horizontal rules don't apply.

View File

@ -1,124 +0,0 @@
Bitstream Vera Fonts Copyright
The fonts have a generous copyright, allowing derivative works (as
long as "Bitstream" or "Vera" are not in the names), and full
redistribution (so long as they are not *sold* by themselves). They
can be be bundled, redistributed and sold with any software.
The fonts are distributed under the following copyright:
Copyright
=========
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream
Vera is a trademark of Bitstream, Inc.
Permission is hereby granted, free of charge, to any person obtaining
a copy of the fonts accompanying this license ("Fonts") and associated
documentation files (the "Font Software"), to reproduce and distribute
the Font Software, including without limitation the rights to use,
copy, merge, publish, distribute, and/or sell copies of the Font
Software, and to permit persons to whom the Font Software is furnished
to do so, subject to the following conditions:
The above copyright and trademark notices and this permission notice
shall be included in all copies of one or more of the Font Software
typefaces.
The Font Software may be modified, altered, or added to, and in
particular the designs of glyphs or characters in the Fonts may be
modified and additional glyphs or characters may be added to the
Fonts, only if the fonts are renamed to names not containing either
the words "Bitstream" or the word "Vera".
This License becomes null and void to the extent applicable to Fonts
or Font Software that has been modified and is distributed under the
"Bitstream Vera" names.
The Font Software may be sold as part of a larger software package but
no copy of one or more of the Font Software typefaces may be sold by
itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL,
OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT
SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
Except as contained in this notice, the names of Gnome, the Gnome
Foundation, and Bitstream Inc., shall not be used in advertising or
otherwise to promote the sale, use or other dealings in this Font
Software without prior written authorization from the Gnome Foundation
or Bitstream Inc., respectively. For further information, contact:
fonts at gnome dot org.
Copyright FAQ
=============
1. I don't understand the resale restriction... What gives?
Bitstream is giving away these fonts, but wishes to ensure its
competitors can't just drop the fonts as is into a font sale system
and sell them as is. It seems fair that if Bitstream can't make money
from the Bitstream Vera fonts, their competitors should not be able to
do so either. You can sell the fonts as part of any software package,
however.
2. I want to package these fonts separately for distribution and
sale as part of a larger software package or system. Can I do so?
Yes. A RPM or Debian package is a "larger software package" to begin
with, and you aren't selling them independently by themselves.
See 1. above.
3. Are derivative works allowed?
Yes!
4. Can I change or add to the font(s)?
Yes, but you must change the name(s) of the font(s).
5. Under what terms are derivative works allowed?
You must change the name(s) of the fonts. This is to ensure the
quality of the fonts, both to protect Bitstream and Gnome. We want to
ensure that if an application has opened a font specifically of these
names, it gets what it expects (though of course, using fontconfig,
substitutions could still could have occurred during font
opening). You must include the Bitstream copyright. Additional
copyrights can be added, as per copyright law. Happy Font Hacking!
6. If I have improvements for Bitstream Vera, is it possible they might get
adopted in future versions?
Yes. The contract between the Gnome Foundation and Bitstream has
provisions for working with Bitstream to ensure quality additions to
the Bitstream Vera font family. Please contact us if you have such
additions. Note, that in general, we will want such additions for the
entire family, not just a single font, and that you'll have to keep
both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add
glyphs to the font, they must be stylistically in keeping with Vera's
design. Vera cannot become a "ransom note" font. Jim Lyles will be
providing a document describing the design elements used in Vera, as a
guide and aid for people interested in contributing to Vera.
7. I want to sell a software package that uses these fonts: Can I do so?
Sure. Bundle the fonts with your software and sell your software
with the fonts. That is the intent of the copyright.
8. If applications have built the names "Bitstream Vera" into them,
can I override this somehow to use fonts of my choosing?
This depends on exact details of the software. Most open source
systems and software (e.g., Gnome, KDE, etc.) are now converting to
use fontconfig (see www.fontconfig.org) to handle font configuration,
selection and substitution; it has provisions for overriding font
names and subsituting alternatives. An example is provided by the
supplied local.conf file, which chooses the family Bitstream Vera for
"sans", "serif" and "monospace". Other software (e.g., the XFree86
core server) has other mechanisms for font substitution.

View File

@ -1,59 +0,0 @@
DejaVu fonts 2.12 (c)2004-2006 DejaVu fonts team
-----------------------------------------------
The DejaVu fonts are a font family based on the Bitstream Vera Fonts
(http://gnome.org/fonts/). Its purpose is to provide a wider range of
characters (see status.txt for more information) while maintaining the
original look and feel.
DejaVu fonts are based on Bitstream Vera fonts version 1.10.
Available fonts (Sans = sans serif, Mono = monospaced):
DejaVu Sans Mono
DejaVu Sans Mono Bold
DejaVu Sans Mono Bold Oblique
DejaVu Sans Mono Oblique
DejaVu Sans
DejaVu Sans Bold
DejaVu Sans Bold Oblique
DejaVu Sans Oblique
DejaVu Sans ExtraLight (experimental)
DejaVu Serif
DejaVu Serif Bold
DejaVu Serif Bold Oblique (experimental)
DejaVu Serif Oblique (experimental)
DejaVu Sans Condensed (experimental)
DejaVu Sans Condensed Bold (experimental)
DejaVu Sans Condensed Bold Oblique (experimental)
DejaVu Sans Condensed Oblique (experimental)
DejaVu Serif Condensed (experimental)
DejaVu Serif Condensed Bold (experimental)
DejaVu Serif Condensed Bold Oblique (experimental)
DejaVu Serif Condensed Oblique (experimental)
All fonts are also available as derivative called DejaVu LGC with support
only for Latin, Greek and Cyrillic scripts.
For license information see LICENSE. What's new is described in NEWS. Known
bugs are in BUGS. All authors are mentioned in AUTHORS.
Fonts are published in source form as SFD files (Spline Font Database from
FontForge - http://fontforge.sf.net/) and in compiled form as TTF files
(TrueType fonts).
For more information go to http://dejavu.sourceforge.net/.
Characters from Arev fonts, Copyright (c) 2006 by Tavmjong Bah:
---------------------------
U+01ba, U+01bf, U+01f7, U+021c, U+021d, U+0220, U+0222, U+0223,
U+02b9, U+02ba, U+02bd, U+02c2, U+02c3, U+02c4, U+02c5, U+02d4,
U+02d5, U+02d7, U+02ec, U+02ed, U+02ee, U+0346-034e, U+0360, U+0362,
U+03e2-03ef, U+0460-0463, U+0466-0486, U+0488-0489, U+04a8-04a9,
U+0500-050f, U+2055-205e, U+20B0, U+20B2-20B3, U+2102, U+210D, U+210f,
U+2111, U+2113, U+2115, U+2118-U+211A, U+211c-211d, U+2124,U+2135,
U+213C-U+2140, U+2295-2298, U+2308-230b, U+26A2-U+26B1, U+2701-2704,
U+2706-2709, U+270c-274b, U+2758-275a, U+2761-2775, U+2780-2794,
U+2798-27af, U+27b1-27be, U+fb05-fb06
$Id: README 1288 2006-11-19 14:22:52Z ben_laenen $

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1187,13 +1187,14 @@ static HB_Error Load_PairSet ( HB_PairSet* ps,
for ( n = 0; n < count; n++ )
{
if ( ACCESS_Frame( 2L ) )
goto Fail;
for ( m = 0; m < record_size; m++ ) {
if ( ACCESS_Frame( 2L ) )
goto Fail;
for ( m = 0; m < record_size; m++ )
*(vr++) = GET_Short();
FORGET_Frame();
FORGET_Frame();
}
}
#endif

View File

@ -1302,30 +1302,52 @@ HB_Bool HB_OpenTypePosition(HB_ShaperItem *item, int availableGlyphs, HB_Bool do
glyphs[i] = face->buffer->in_string[i].gindex;
attributes[i] = face->tmpAttributes[face->buffer->in_string[i].cluster];
if (i && face->buffer->in_string[i].cluster == face->buffer->in_string[i-1].cluster)
attributes[i].clusterStart = false;
attributes[i].clusterStart = false; //FIXME - Shouldn't we otherwise set this to true, rather than leaving it?
}
item->num_glyphs = face->buffer->in_length;
if (doLogClusters && face->glyphs_substituted) {
// we can't do this for indic, as we pass the stuf in syllables and it's easier to do it in the shaper.
unsigned short *logClusters = item->log_clusters;
int clusterStart = 0;
int oldCi = 0;
// #### the reconstruction of the logclusters currently does not work if the original string
// contains surrogate pairs
unsigned short *logClusters = item->log_clusters;
int clusterStart = 0;
int oldIntermediateIndex = 0;
// This code makes a mapping, logClusters, between the original utf16 string (item->string) and the final
// set of glyphs (in_string).
//
// The code sets the value of logClusters[i] to the index of in_string containing the glyph that will render
// item->string[i].
//
// This is complicated slightly because in_string[i].cluster is an index to an intermediate
// array of glyphs - the array that we were passed as the original value of item->glyphs.
// To map from the original string to the intermediate array of glyphs we have tmpLogClusters.
//
// So we have three groups of indexes:
//
// i,clusterStart = index to in_length, the final set of glyphs. Also an index to attributes
// intermediateIndex = index to the glyphs originally passed in.
// stringIndex = index to item->string, the original string.
int stringIndex = 0;
// Iterate over the final set of glyphs...
for (unsigned int i = 0; i < face->buffer->in_length; ++i) {
int ci = face->buffer->in_string[i].cluster;
// DEBUG(" ci[%d] = %d mark=%d, cmb=%d, cs=%d",
// i, ci, glyphAttributes[i].mark, glyphAttributes[i].combiningClass, glyphAttributes[i].clusterStart);
if (!attributes[i].mark && attributes[i].clusterStart && ci != oldCi) {
for (int j = oldCi; j < ci; j++)
logClusters[j] = clusterStart;
// Get the index into the intermediate string for the start of the cluster of chars
int intermediateIndex = face->buffer->in_string[i].cluster;
if (intermediateIndex != oldIntermediateIndex) {
// We have found the end of the cluster of chars in the intermediate string
while (face->tmpLogClusters[stringIndex] < intermediateIndex) {
logClusters[stringIndex++] = clusterStart;
}
clusterStart = i;
oldCi = ci;
oldIntermediateIndex = intermediateIndex;
}
}
for (int j = oldCi; j < face->length; j++)
logClusters[j] = clusterStart;
while (stringIndex < face->length) {
logClusters[stringIndex++] = clusterStart;
}
}
// calulate the advances for the shaped glyphs

View File

@ -602,6 +602,11 @@
#define QT_NO_DATAWIDGETMAPPER
#endif
// QIdentityProxyModel
#if !defined(QT_NO_IDENTITYPROXYMODEL) && (defined(QT_NO_PROXYMODEL))
#define QT_NO_IDENTITYPROXYMODEL
#endif
// QListWidget
#if !defined(QT_NO_LISTWIDGET) && (defined(QT_NO_LISTVIEW))
#define QT_NO_LISTWIDGET

View File

@ -704,6 +704,13 @@ Requires: PROXYMODEL
Name: QSortFilterProxyModel
SeeAlso: ???
Feature: IDENTITYPROXYMODEL
Description: Supports proxying a source model unmodified.
Section: ItemViews
Requires: PROXYMODEL
Name: QIdentityProxyModel
SeeAlso: ???
Feature: STRINGLISTMODEL
Description: Supports a model that supplies strings to views.
Section: ItemViews

View File

@ -217,14 +217,14 @@ QLibraryInfo::isDebugBuild()
static const struct {
char key[14], value[13];
} qtConfEntries[] = {
{ "Prefix", "" },
{ "Prefix", "." },
{ "Documentation", "doc" },
{ "Headers", "include" },
{ "Libraries", "lib" },
{ "Binaries", "bin" },
{ "Plugins", "plugins" },
{ "Imports", "imports" },
{ "Data", "" },
{ "Data", "." },
{ "Translations", "translations" },
{ "Examples", "examples" },
{ "Tests", "tests" },
@ -232,7 +232,7 @@ static const struct {
{ "Sysroot", "" },
{ "HostPrefix", "" },
{ "HostBinaries", "bin" },
{ "HostData", "" },
{ "HostData", "." },
#endif
};
@ -295,6 +295,12 @@ QLibraryInfo::rawLocation(LibraryLocation loc)
ret = config->value(key, defaultValue).toString();
#ifdef QT_BUILD_QMAKE
if (ret.isEmpty() && loc == HostPrefixPath)
ret = config->value(QLatin1String(qtConfEntries[PrefixPath].key),
QLatin1String(qtConfEntries[PrefixPath].value)).toString();
#endif
// expand environment variables in the form $(ENVVAR)
int rep;
QRegExp reg_var(QLatin1String("\\$\\(.*\\)"));
@ -309,16 +315,14 @@ QLibraryInfo::rawLocation(LibraryLocation loc)
}
}
if (QDir::isRelativePath(ret)) {
if (!ret.isEmpty() && QDir::isRelativePath(ret)) {
QString baseDir;
#ifdef QT_BUILD_QMAKE
if (loc == HostPrefixPath || loc == PrefixPath) {
// We make the prefix path absolute to the executable's directory.
if (loc == HostPrefixPath || loc == PrefixPath || loc == SysrootPath) {
// We make the prefix/sysroot path absolute to the executable's directory.
// loc == PrefixPath while a sysroot is set would make no sense here.
// loc == SysrootPath only makes sense if qmake lives inside the sysroot itself.
baseDir = QFileInfo(qmake_libraryInfoFile()).absolutePath();
} else if (loc == SysrootPath) {
// The sysroot is bare
return ret;
} else if (loc > SysrootPath && loc <= LastHostPath) {
// We make any other host path absolute to the host prefix directory.
baseDir = rawLocation(HostPrefixPath);

View File

@ -717,10 +717,10 @@ void qt_message_output(QtMsgType msgType, const QMessageLogContext &context, con
int reportMode = _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW);
_CrtSetReportMode(_CRT_ERROR, reportMode);
#if !defined(Q_OS_WINCE)
int ret = _CrtDbgReport(_CRT_ERROR, __FILE__, __LINE__, QT_VERSION_STR, buf);
int ret = _CrtDbgReport(_CRT_ERROR, context.file, context.line, QT_VERSION_STR, buf);
#else
int ret = _CrtDbgReportW(_CRT_ERROR, _CRT_WIDE(__FILE__),
__LINE__, _CRT_WIDE(QT_VERSION_STR),
int ret = _CrtDbgReportW(_CRT_ERROR, _CRT_WIDE(context.file),
context.line, _CRT_WIDE(QT_VERSION_STR),
reinterpret_cast<const wchar_t *> (
QString::fromLatin1(buf).utf16()));
#endif

View File

@ -56,6 +56,13 @@
QT_BEGIN_NAMESPACE
// #define WINQFSW_DEBUG
#ifdef WINQFSW_DEBUG
# define DEBUG qDebug
#else
# define DEBUG if (false) qDebug
#endif
QWindowsFileSystemWatcherEngine::Handle::Handle()
: handle(INVALID_HANDLE_VALUE), flags(0u)
{
@ -74,7 +81,7 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
QStringList *files,
QStringList *directories)
{
// qDebug()<<"Adding"<<paths.count()<<"to existing"<<(files->count() + directories->count())<<"watchers";
DEBUG() << "Adding" << paths.count() << "to existing" << (files->count() + directories->count()) << "watchers";
QStringList p = paths;
QMutableListIterator<QString> it(p);
while (it.hasNext()) {
@ -101,7 +108,7 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
continue;
}
// qDebug()<<"Looking for a thread/handle for"<<normalPath;
DEBUG() << "Looking for a thread/handle for" << normalPath;
const QString absolutePath = isDir ? fileInfo.absoluteFilePath() : fileInfo.absolutePath();
const uint flags = isDir
@ -132,7 +139,7 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
handle = thread->handleForDir.value(absolutePath);
if (handle.handle != INVALID_HANDLE_VALUE && handle.flags == flags) {
// found a thread now insert...
// qDebug()<<" Found a thread"<<thread;
DEBUG() << "Found a thread" << thread;
QHash<QString, QWindowsFileSystemWatcherEngine::PathInfo> &h
= thread->pathInfoForHandle[handle.handle];
@ -151,7 +158,7 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
// no thread found, first create a handle
if (handle.handle == INVALID_HANDLE_VALUE || handle.flags != flags) {
// qDebug()<<" No thread found";
DEBUG() << "No thread found";
// Volume and folder paths need a trailing slash for proper notification
// (e.g. "c:" -> "c:/").
const QString effectiveAbsolutePath =
@ -167,8 +174,8 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
foreach(QWindowsFileSystemWatcherEngineThread *thread, threads) {
QMutexLocker(&(thread->mutex));
if (thread->handles.count() < MAXIMUM_WAIT_OBJECTS) {
// qDebug() << " Added handle" << handle.handle << "for" << absolutePath << "to watch" << fileInfo.absoluteFilePath();
// qDebug()<< " to existing thread"<<thread;
DEBUG() << "Added handle" << handle.handle << "for" << absolutePath << "to watch" << fileInfo.absoluteFilePath()
<< "to existing thread " << thread;
thread->handles.append(handle.handle);
thread->handleForDir.insert(absolutePath, handle);
@ -186,7 +193,7 @@ QStringList QWindowsFileSystemWatcherEngine::addPaths(const QStringList &paths,
}
if (!found) {
QWindowsFileSystemWatcherEngineThread *thread = new QWindowsFileSystemWatcherEngineThread();
//qDebug()<<" ###Creating new thread"<<thread<<"("<<(threads.count()+1)<<"threads)";
DEBUG() << " ###Creating new thread" << thread << "(" << (threads.count()+1) << "threads)";
thread->handles.append(handle.handle);
thread->handleForDir.insert(absolutePath, handle);
@ -215,7 +222,7 @@ QStringList QWindowsFileSystemWatcherEngine::removePaths(const QStringList &path
QStringList *files,
QStringList *directories)
{
// qDebug()<<"removePaths"<<paths;
DEBUG() << "removePaths" << paths;
QStringList p = paths;
QMutableListIterator<QString> it(p);
while (it.hasNext()) {
@ -224,7 +231,7 @@ QStringList QWindowsFileSystemWatcherEngine::removePaths(const QStringList &path
if (normalPath.endsWith(QLatin1Char('/')) || normalPath.endsWith(QLatin1Char('\\')))
normalPath.chop(1);
QFileInfo fileInfo(normalPath.toLower());
// qDebug()<<"removing"<<normalPath;
DEBUG() << "removing" << normalPath;
QString absolutePath = fileInfo.absoluteFilePath();
QList<QWindowsFileSystemWatcherEngineThread *>::iterator jt, end;
end = threads.end();
@ -250,7 +257,7 @@ QStringList QWindowsFileSystemWatcherEngine::removePaths(const QStringList &path
directories->removeAll(path);
if (h.isEmpty()) {
// qDebug() << "Closing handle" << handle.handle;
DEBUG() << "Closing handle" << handle.handle;
FindCloseChangeNotification(handle.handle); // This one might generate a notification
int indexOfHandle = thread->handles.indexOf(handle.handle);
@ -263,7 +270,7 @@ QStringList QWindowsFileSystemWatcherEngine::removePaths(const QStringList &path
it.remove();
if (thread->handleForDir.isEmpty()) {
// qDebug()<<"Stopping thread "<<thread;
DEBUG() << "Stopping thread " << thread;
locker.unlock();
thread->stop();
thread->wait();
@ -336,7 +343,7 @@ void QWindowsFileSystemWatcherEngineThread::run()
forever {
QVector<HANDLE> handlesCopy = handles;
locker.unlock();
// qDebug() << "QWindowsFileSystemWatcherThread"<<this<<"waiting on" << handlesCopy.count() << "handles";
DEBUG() << "QWindowsFileSystemWatcherThread" << this << "waiting on" << handlesCopy.count() << "handles";
DWORD r = WaitForMultipleObjects(handlesCopy.count(), handlesCopy.constData(), false, INFINITE);
locker.relock();
do {
@ -344,12 +351,11 @@ void QWindowsFileSystemWatcherEngineThread::run()
int m = msg;
msg = 0;
if (m == 'q') {
// qDebug() << "thread"<<this<<"told to quit";
DEBUG() << "thread" << this << "told to quit";
return;
}
if (m != '@') {
qDebug("QWindowsFileSystemWatcherEngine: unknown message '%c' send to thread", char(m));
}
if (m != '@')
DEBUG() << "QWindowsFileSystemWatcherEngine: unknown message sent to thread: " << char(m);
break;
} else if (r > WAIT_OBJECT_0 && r < WAIT_OBJECT_0 + uint(handlesCopy.count())) {
int at = r - WAIT_OBJECT_0;
@ -359,10 +365,20 @@ void QWindowsFileSystemWatcherEngineThread::run()
// When removing a path, FindCloseChangeNotification might actually fire a notification
// for some reason, so we must check if the handle exist in the handles vector
if (handles.contains(handle)) {
// qDebug()<<"thread"<<this<<"Acknowledged handle:"<<at<<handle;
DEBUG() << "thread" << this << "Acknowledged handle:" << at << handle;
QHash<QString, QWindowsFileSystemWatcherEngine::PathInfo> &h = pathInfoForHandle[handle];
bool fakeRemove = false;
if (!FindNextChangeNotification(handle)) {
const DWORD error = GetLastError();
if (error == ERROR_ACCESS_DENIED) {
// for directories, our object's handle appears to be woken up when the target of a
// watch is deleted, before the watched thing is actually deleted...
// anyway.. we're given an error code of ERROR_ACCESS_DENIED in that case.
fakeRemove = true;
}
qErrnoWarning(error, "%s", qPrintable(msgFindNextFailed(h)));
}
QMutableHashIterator<QString, QWindowsFileSystemWatcherEngine::PathInfo> it(h);
@ -370,9 +386,12 @@ void QWindowsFileSystemWatcherEngineThread::run()
QHash<QString, QWindowsFileSystemWatcherEngine::PathInfo>::iterator x = it.next();
QString absolutePath = x.value().absolutePath;
QFileInfo fileInfo(x.value().path);
// qDebug() << "checking" << x.key();
if (!fileInfo.exists()) {
// qDebug() << x.key() << "removed!";
DEBUG() << "checking" << x.key();
// i'm not completely sure the fileInfo.exist() check will ever work... see QTBUG-2331
// ..however, I'm not completely sure enough to remove it.
if (fakeRemove || !fileInfo.exists()) {
DEBUG() << x.key() << "removed!";
if (x.value().isDir)
emit directoryChanged(x.value().path, true);
else
@ -381,7 +400,7 @@ void QWindowsFileSystemWatcherEngineThread::run()
// close the notification handle if the directory has been removed
if (h.isEmpty()) {
// qDebug() << "Thread closing handle" << handle;
DEBUG() << "Thread closing handle" << handle;
FindCloseChangeNotification(handle); // This one might generate a notification
int indexOfHandle = handles.indexOf(handle);
@ -392,11 +411,11 @@ void QWindowsFileSystemWatcherEngineThread::run()
// h is now invalid
}
} else if (x.value().isDir) {
// qDebug() << x.key() << "directory changed!";
DEBUG() << x.key() << "directory changed!";
emit directoryChanged(x.value().path, false);
x.value() = fileInfo;
} else if (x.value() != fileInfo) {
// qDebug() << x.key() << "file changed!";
DEBUG() << x.key() << "file changed!";
emit fileChanged(x.value().path, false);
x.value() = fileInfo;
}

View File

@ -267,6 +267,48 @@ QString QStandardPaths::findExecutable(const QString &executableName, const QStr
an empty QString if no relevant location can be found.
*/
#ifndef Q_OS_MAC
QString QStandardPaths::displayName(StandardLocation type)
{
switch (type) {
case DesktopLocation:
return QCoreApplication::translate("QStandardPaths", "Desktop");
case DocumentsLocation:
return QCoreApplication::translate("QStandardPaths", "Documents");
case FontsLocation:
return QCoreApplication::translate("QStandardPaths", "Fonts");
case ApplicationsLocation:
return QCoreApplication::translate("QStandardPaths", "Applications");
case MusicLocation:
return QCoreApplication::translate("QStandardPaths", "Music");
case MoviesLocation:
return QCoreApplication::translate("QStandardPaths", "Movies");
case PicturesLocation:
return QCoreApplication::translate("QStandardPaths", "Pictures");
case TempLocation:
return QCoreApplication::translate("QStandardPaths", "Temporary Directory");
case HomeLocation:
return QCoreApplication::translate("QStandardPaths", "Home");
case DataLocation:
return QCoreApplication::translate("QStandardPaths", "Application Data");
case CacheLocation:
return QCoreApplication::translate("QStandardPaths", "Cache");
case GenericDataLocation:
return QCoreApplication::translate("QStandardPaths", "Shared Data");
case RuntimeLocation:
return QCoreApplication::translate("QStandardPaths", "Runtime");
case ConfigLocation:
return QCoreApplication::translate("QStandardPaths", "Configuration");
case GenericCacheLocation:
return QCoreApplication::translate("QStandardPaths", "Shared Cache");
case DownloadLocation:
return QCoreApplication::translate("QStandardPaths", "Download");
}
// not reached
return QString();
}
#endif
QT_END_NAMESPACE
#endif // QT_NO_STANDARDPATHS

View File

@ -173,12 +173,6 @@ QStringList QStandardPaths::standardLocations(StandardLocation type)
return dirs;
}
QString QStandardPaths::displayName(StandardLocation type)
{
Q_UNUSED(type);
return QString();
}
QT_END_NAMESPACE
#endif // QT_NO_STANDARDPATHS

View File

@ -53,6 +53,16 @@
QT_BEGIN_NAMESPACE
static void appendOrganizationAndApp(QString &path)
{
const QString org = QCoreApplication::organizationName();
if (!org.isEmpty())
path += QLatin1Char('/') + org;
const QString appName = QCoreApplication::applicationName();
if (!appName.isEmpty())
path += QLatin1Char('/') + appName;
}
QString QStandardPaths::writableLocation(StandardLocation type)
{
switch (type) {
@ -67,12 +77,8 @@ QString QStandardPaths::writableLocation(StandardLocation type)
QString xdgCacheHome = QFile::decodeName(qgetenv("XDG_CACHE_HOME"));
if (xdgCacheHome.isEmpty())
xdgCacheHome = QDir::homePath() + QLatin1String("/.cache");
if (type == QStandardPaths::CacheLocation) {
if (!QCoreApplication::organizationName().isEmpty())
xdgCacheHome += QLatin1Char('/') + QCoreApplication::organizationName();
if (!QCoreApplication::applicationName().isEmpty())
xdgCacheHome += QLatin1Char('/') + QCoreApplication::applicationName();
}
if (type == QStandardPaths::CacheLocation)
appendOrganizationAndApp(xdgCacheHome);
return xdgCacheHome;
}
case DataLocation:
@ -81,12 +87,8 @@ QString QStandardPaths::writableLocation(StandardLocation type)
QString xdgDataHome = QFile::decodeName(qgetenv("XDG_DATA_HOME"));
if (xdgDataHome.isEmpty())
xdgDataHome = QDir::homePath() + QLatin1String("/.local/share");
if (type == QStandardPaths::DataLocation) {
if (!QCoreApplication::organizationName().isEmpty())
xdgDataHome += QLatin1Char('/') + QCoreApplication::organizationName();
if (!QCoreApplication::applicationName().isEmpty())
xdgDataHome += QLatin1Char('/') + QCoreApplication::applicationName();
}
if (type == QStandardPaths::DataLocation)
appendOrganizationAndApp(xdgDataHome);
return xdgDataHome;
}
case ConfigLocation:
@ -229,36 +231,55 @@ QString QStandardPaths::writableLocation(StandardLocation type)
return path;
}
static QStringList xdgDataDirs()
{
QStringList dirs;
// http://standards.freedesktop.org/basedir-spec/latest/
QString xdgDataDirsEnv = QFile::decodeName(qgetenv("XDG_DATA_DIRS"));
if (xdgDataDirsEnv.isEmpty()) {
dirs.append(QString::fromLatin1("/usr/local/share"));
dirs.append(QString::fromLatin1("/usr/share"));
} else {
dirs = xdgDataDirsEnv.split(QLatin1Char(':'));
}
return dirs;
}
QStringList QStandardPaths::standardLocations(StandardLocation type)
{
QStringList dirs;
if (type == ConfigLocation) {
switch (type) {
case ConfigLocation:
{
// http://standards.freedesktop.org/basedir-spec/latest/
QString xdgConfigDirs = QFile::decodeName(qgetenv("XDG_CONFIG_DIRS"));
const QString xdgConfigDirs = QFile::decodeName(qgetenv("XDG_CONFIG_DIRS"));
if (xdgConfigDirs.isEmpty())
dirs.append(QString::fromLatin1("/etc/xdg"));
else
dirs = xdgConfigDirs.split(QLatin1Char(':'));
} else if (type == GenericDataLocation) {
// http://standards.freedesktop.org/basedir-spec/latest/
QString xdgConfigDirs = QFile::decodeName(qgetenv("XDG_DATA_DIRS"));
if (xdgConfigDirs.isEmpty()) {
dirs.append(QString::fromLatin1("/usr/local/share"));
dirs.append(QString::fromLatin1("/usr/share"));
} else
dirs = xdgConfigDirs.split(QLatin1Char(':'));
}
break;
case GenericDataLocation:
dirs = xdgDataDirs();
break;
case ApplicationsLocation:
dirs = xdgDataDirs();
for (int i = 0; i < dirs.count(); ++i)
dirs[i].append(QLatin1String("/applications"));
break;
case DataLocation:
dirs = xdgDataDirs();
for (int i = 0; i < dirs.count(); ++i)
appendOrganizationAndApp(dirs[i]);
break;
default:
break;
}
const QString localDir = writableLocation(type);
dirs.prepend(localDir);
return dirs;
}
QString QStandardPaths::displayName(StandardLocation type)
{
Q_UNUSED(type);
return QString();
}
QT_END_NAMESPACE
#endif // QT_NO_STANDARDPATHS

View File

@ -206,12 +206,6 @@ QStringList QStandardPaths::standardLocations(StandardLocation type)
return dirs;
}
QString QStandardPaths::displayName(StandardLocation type)
{
Q_UNUSED(type);
return QString();
}
QT_END_NAMESPACE
#endif // QT_NO_STANDARDPATHS

View File

@ -241,14 +241,6 @@ bool Entry::operator ==(const QString &key) const
return (shallowKey() == key);
}
bool Entry::operator >=(const QString &key) const
{
if (value.latinKey)
return (shallowLatin1Key() >= key);
else
return (shallowKey() >= key);
}
bool Entry::operator ==(const Entry &other) const
{
if (value.latinKey) {

View File

@ -620,15 +620,24 @@ public:
bool operator ==(const QString &key) const;
inline bool operator !=(const QString &key) const { return !operator ==(key); }
bool operator >=(const QString &key) const;
inline bool operator >=(const QString &key) const;
bool operator ==(const Entry &other) const;
bool operator >=(const Entry &other) const;
};
inline bool Entry::operator >=(const QString &key) const
{
if (value.latinKey)
return (shallowLatin1Key() >= key);
else
return (shallowKey() >= key);
}
inline bool operator <(const QString &key, const Entry &e)
{ return e >= key; }
class Header {
public:
qle_uint tag; // 'qbjs'
@ -735,7 +744,15 @@ public:
Data *clone(Base *b, int reserve = 0)
{
int size = sizeof(Header) + b->size + reserve;
int size = sizeof(Header) + b->size;
if (ref.load() == 1 && alloc >= size + reserve)
return this;
if (reserve) {
if (reserve < 128)
reserve = 128;
size = qMax(size + reserve, size *2);
}
char *raw = (char *)malloc(size);
Q_CHECK_PTR(raw);
memcpy(raw + sizeof(Header), b, b->size);

View File

@ -75,6 +75,7 @@ public:
KeyRelease = 7, // key released
FocusIn = 8, // keyboard focus received
FocusOut = 9, // keyboard focus lost
FocusAboutToChange = 23, // keyboard focus is about to be lost
Enter = 10, // mouse enters widget
Leave = 11, // mouse leaves widget
Paint = 12, // paint widget

View File

@ -4091,6 +4091,8 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa
{
if (!sender || !signal || !slotObj || !senderMetaObject) {
qWarning("QObject::connect: invalid null parametter");
if (slotObj && !slotObj->ref.deref())
delete slotObj;
return QMetaObject::Connection();
}
int signal_index = -1;
@ -4098,6 +4100,8 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa
senderMetaObject->static_metacall(QMetaObject::IndexOfMethod, 0, args);
if (signal_index < 0 || signal_index >= QMetaObjectPrivate::get(senderMetaObject)->signalCount) {
qWarning("QObject::connect: signal not found in %s", senderMetaObject->className());
if (!slotObj->ref.deref())
delete slotObj;
return QMetaObject::Connection(0);
}
int signalOffset, methodOffset;
@ -4117,8 +4121,11 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa
(*connectionLists)[signal_index].first;
while (c2) {
if (c2->receiver == receiver && c2->isSlotObject && c2->slotObj->compare(slot))
if (c2->receiver == receiver && c2->isSlotObject && c2->slotObj->compare(slot)) {
if (!slotObj->ref.deref())
delete slotObj;
return QMetaObject::Connection();
}
c2 = c2->nextConnectionList;
}
}

View File

@ -282,7 +282,8 @@ QString QMimeType::comment() const
QStringList languageList;
languageList << QLocale::system().name();
languageList << QLocale::system().uiLanguages();
Q_FOREACH (const QString &lang, languageList) {
Q_FOREACH (const QString &language, languageList) {
const QString lang = language == QLatin1String("C") ? QLatin1String("en_US") : language;
const QString comm = d->localeComments.value(lang);
if (!comm.isEmpty())
return comm;

View File

@ -46,13 +46,6 @@
#include "qglobal.h"
#ifndef QT_NO_SYSTEMLOCALE
QT_BEGIN_NAMESPACE
class QSystemLocale;
static QSystemLocale *QSystemLocale_globalSystemLocale();
QT_END_NAMESPACE
#endif
#include "qplatformdefs.h"
#include "qdatastream.h"
@ -78,7 +71,13 @@ QT_BEGIN_NAMESPACE
#ifndef QT_NO_SYSTEMLOCALE
static QSystemLocale *_systemLocale = 0;
Q_GLOBAL_STATIC_WITH_ARGS(QSystemLocale, QSystemLocale_globalSystemLocale, (true))
class QSystemLocaleSingleton: public QSystemLocale
{
public:
QSystemLocaleSingleton() : QSystemLocale(true) {}
};
Q_GLOBAL_STATIC(QSystemLocaleSingleton, QSystemLocale_globalSystemLocale)
static QLocalePrivate *system_lp = 0;
Q_GLOBAL_STATIC(QLocalePrivate, globalLocalePrivate)
#endif

View File

@ -122,7 +122,7 @@ public:
private:
QSystemLocale(bool);
friend QSystemLocale *QSystemLocale_globalSystemLocale();
friend class QSystemLocaleSingleton;
};
#endif

View File

@ -45,6 +45,7 @@
#include "qdatetime.h"
#include "qstringlist.h"
#include "qvariant.h"
#include "qreadwritelock.h"
QT_BEGIN_NAMESPACE
@ -57,29 +58,13 @@ struct QSystemLocaleData
,lc_monetary(QLocale::C)
,lc_messages(QLocale::C)
{
QByteArray all = qgetenv("LC_ALL");
QByteArray numeric = all.isEmpty() ? qgetenv("LC_NUMERIC") : all;
QByteArray time = all.isEmpty() ? qgetenv("LC_TIME") : all;
QByteArray monetary = all.isEmpty() ? qgetenv("LC_MONETARY") : all;
lc_messages_var = all.isEmpty() ? qgetenv("LC_MESSAGES") : all;
lc_measurement_var = all.isEmpty() ? qgetenv("LC_MEASUREMENT") : all;
QByteArray lang = qgetenv("LANG");
if (lang.isEmpty())
lang = QByteArray("C");
if (numeric.isEmpty())
numeric = lang;
if (monetary.isEmpty())
monetary = lang;
if (lc_messages_var.isEmpty())
lc_messages_var = lang;
if (lc_measurement_var.isEmpty())
lc_measurement_var = lang;
lc_numeric = QLocale(QString::fromLatin1(numeric));
lc_time = QLocale(QString::fromLatin1(time));
lc_monetary = QLocale(QString::fromLatin1(monetary));
lc_messages = QLocale(QString::fromLatin1(lc_messages_var));
readEnvironment();
}
void readEnvironment();
QReadWriteLock lock;
QLocale lc_numeric;
QLocale lc_time;
QLocale lc_monetary;
@ -87,10 +72,43 @@ struct QSystemLocaleData
QByteArray lc_messages_var;
QByteArray lc_measurement_var;
};
void QSystemLocaleData::readEnvironment()
{
QWriteLocker locker(&lock);
QByteArray all = qgetenv("LC_ALL");
QByteArray numeric = all.isEmpty() ? qgetenv("LC_NUMERIC") : all;
QByteArray time = all.isEmpty() ? qgetenv("LC_TIME") : all;
QByteArray monetary = all.isEmpty() ? qgetenv("LC_MONETARY") : all;
lc_messages_var = all.isEmpty() ? qgetenv("LC_MESSAGES") : all;
lc_measurement_var = all.isEmpty() ? qgetenv("LC_MEASUREMENT") : all;
QByteArray lang = qgetenv("LANG");
if (lang.isEmpty())
lang = QByteArray("C");
if (numeric.isEmpty())
numeric = lang;
if (time.isEmpty())
time = lang;
if (monetary.isEmpty())
monetary = lang;
if (lc_messages_var.isEmpty())
lc_messages_var = lang;
if (lc_measurement_var.isEmpty())
lc_measurement_var = lang;
lc_numeric = QLocale(QString::fromLatin1(numeric));
lc_time = QLocale(QString::fromLatin1(time));
lc_monetary = QLocale(QString::fromLatin1(monetary));
lc_messages = QLocale(QString::fromLatin1(lc_messages_var));
}
Q_GLOBAL_STATIC(QSystemLocaleData, qSystemLocaleData)
#endif
#ifndef QT_NO_SYSTEMLOCALE
QLocale QSystemLocale::fallbackLocale() const
{
QByteArray lang = qgetenv("LC_ALL");
@ -104,6 +122,14 @@ QLocale QSystemLocale::fallbackLocale() const
QVariant QSystemLocale::query(QueryType type, QVariant in) const
{
QSystemLocaleData *d = qSystemLocaleData();
if (type == LocaleChanged) {
d->readEnvironment();
return QVariant();
}
QReadLocker locker(&d->lock);
const QLocale &lc_numeric = d->lc_numeric;
const QLocale &lc_time = d->lc_time;
const QLocale &lc_monetary = d->lc_monetary;
@ -216,6 +242,8 @@ QVariant QSystemLocale::query(QueryType type, QVariant in) const
return lc_messages.quoteString(in.value<QStringRef>(), QLocale::AlternateQuotation);
case ListToSeparatedString:
return lc_messages.createSeparatedList(in.value<QStringList>());
case LocaleChanged:
Q_ASSERT(false);
default:
break;
}

View File

@ -320,12 +320,6 @@ static inline uint detectProcessorFeatures()
return features;
}
#elif defined(__ia64__)
static inline uint detectProcessorFeatures()
{
return MMX|SSE|SSE2;
}
#else
static inline uint detectProcessorFeatures()
{

View File

@ -122,11 +122,11 @@ static inline int qt_find_latin1_string(const QChar *hay, int size, const QLatin
static inline bool qt_starts_with(const QChar *haystack, int haystackLen,
const QChar *needle, int needleLen, Qt::CaseSensitivity cs);
static inline bool qt_starts_with(const QChar *haystack, int haystackLen,
const QLatin1String &needle, Qt::CaseSensitivity cs);
QLatin1String needle, Qt::CaseSensitivity cs);
static inline bool qt_ends_with(const QChar *haystack, int haystackLen,
const QChar *needle, int needleLen, Qt::CaseSensitivity cs);
static inline bool qt_ends_with(const QChar *haystack, int haystackLen,
const QLatin1String &needle, Qt::CaseSensitivity cs);
QLatin1String needle, Qt::CaseSensitivity cs);
// Unicode case-insensitive comparison
static int ucstricmp(const ushort *a, const ushort *ae, const ushort *b, const ushort *be)
@ -2753,7 +2753,7 @@ int QString::lastIndexOf(const QLatin1String &str, int from, Qt::CaseSensitivity
int QString::lastIndexOf(QChar ch, int from, Qt::CaseSensitivity cs) const
{
return qt_last_index_of(unicode(), size(), ch, from, cs);
}
}
/*!
\since 4.8
@ -8988,7 +8988,7 @@ static inline bool qt_starts_with(const QChar *haystack, int haystackLen,
}
static inline bool qt_starts_with(const QChar *haystack, int haystackLen,
const QLatin1String &needle, Qt::CaseSensitivity cs)
QLatin1String needle, Qt::CaseSensitivity cs)
{
if (!haystack)
return !needle.latin1();
@ -9039,7 +9039,7 @@ static inline bool qt_ends_with(const QChar *haystack, int haystackLen,
static inline bool qt_ends_with(const QChar *haystack, int haystackLen,
const QLatin1String &needle, Qt::CaseSensitivity cs)
QLatin1String needle, Qt::CaseSensitivity cs)
{
if (!haystack)
return !needle.latin1();

View File

@ -29,6 +29,7 @@ HEADERS += \
tools/qmargins.h \
tools/qcontiguouscache.h \
tools/qpodlist_p.h \
tools/qpair.h \
tools/qpoint.h \
tools/qqueue.h \
tools/qrect.h \

View File

@ -124,19 +124,23 @@ void QDBusMarshaller::append(const QString &arg)
inline void QDBusMarshaller::append(const QDBusObjectPath &arg)
{
QByteArray data = arg.path().toUtf8();
if (!ba && data.isEmpty())
if (!ba && data.isEmpty()) {
error(QLatin1String("Invalid object path passed in arguments"));
const char *cdata = data.constData();
qIterAppend(&iterator, ba, DBUS_TYPE_OBJECT_PATH, &cdata);
} else {
const char *cdata = data.constData();
qIterAppend(&iterator, ba, DBUS_TYPE_OBJECT_PATH, &cdata);
}
}
inline void QDBusMarshaller::append(const QDBusSignature &arg)
{
QByteArray data = arg.signature().toUtf8();
if (!ba && data.isEmpty())
if (!ba && data.isEmpty()) {
error(QLatin1String("Invalid signature passed in arguments"));
const char *cdata = data.constData();
qIterAppend(&iterator, ba, DBUS_TYPE_SIGNATURE, &cdata);
} else {
const char *cdata = data.constData();
qIterAppend(&iterator, ba, DBUS_TYPE_SIGNATURE, &cdata);
}
}
inline void QDBusMarshaller::append(const QDBusUnixFileDescriptor &arg)

View File

@ -268,16 +268,16 @@ QT_BEGIN_NAMESPACE
row's header, has been changed.
\value TableRowHeaderChanged A table row header has been changed.
\value TableSummaryChanged The summary of a table has been changed.
\value TextAttributeChanged
\value TextCaretMoved The caret has moved in an editable widget.
\omitvalue TextAttributeChanged
\omitvalue TextCaretMoved The caret has moved in an editable widget.
The caret represents the cursor position in an editable
widget with the input focus.
\value TextColumnChanged A text column has been changed.
\value TextInserted Text has been inserted into an editable widget.
\value TextRemoved Text has been removed from an editable widget.
\value TextSelectionChanged The selected text has changed in an editable widget.
\value TextUpdated The text has been update in an editable widget.
\value ValueChanged The QAccessible::Value of an object has changed.
\omitvalue TextInserted Text has been inserted into an editable widget.
\omitvalue TextRemoved Text has been removed from an editable widget.
\omitvalue TextSelectionChanged The selected text has changed in an editable widget.
\omitvalue TextUpdated The text has been update in an editable widget.
\omitvalue ValueChanged The QAccessible::Value of an object has changed.
\value VisibleDataChanged
The values for this enum are defined to be the same as those defined in the
@ -648,7 +648,8 @@ void QAccessible::setRootObject(QObject *object)
void QAccessible::updateAccessibility(QObject *object, int child, Event reason)
{
Q_ASSERT(object);
QAccessibleEvent ev(reason, object, child);
QAccessibleEvent ev(object, reason);
updateAccessibility(&ev);
}

View File

@ -145,7 +145,9 @@ public:
ParentChanged = 0x800F,
HelpChanged = 0x80A0,
DefaultActionChanged = 0x80B0,
AcceleratorChanged = 0x80C0
AcceleratorChanged = 0x80C0,
InvalidEvent
};
// 64 bit enums seem hard on some platforms (windows...)
@ -432,10 +434,19 @@ class Q_GUI_EXPORT QAccessibleEvent
{
Q_DISABLE_COPY(QAccessibleEvent)
public:
inline QAccessibleEvent(QAccessible::Event typ, QObject *obj, int chld = -1)
: m_type(typ), m_object(obj), m_child(chld)
inline QAccessibleEvent(QObject *obj, QAccessible::Event typ)
: m_type(typ), m_object(obj), m_child(-1)
{
Q_ASSERT(obj);
// All events below have a subclass of QAccessibleEvent.
// Use the subclass, since it's expected that it's possible to cast to that.
Q_ASSERT(m_type != QAccessible::ValueChanged);
Q_ASSERT(m_type != QAccessible::StateChanged);
Q_ASSERT(m_type != QAccessible::TextCaretMoved);
Q_ASSERT(m_type != QAccessible::TextSelectionChanged);
Q_ASSERT(m_type != QAccessible::TextInserted);
Q_ASSERT(m_type != QAccessible::TextRemoved);
Q_ASSERT(m_type != QAccessible::TextUpdated);
}
virtual ~QAccessibleEvent()
@ -443,12 +454,13 @@ public:
QAccessible::Event type() const { return m_type; }
QObject *object() const { return m_object; }
void setChild(int chld) { m_child = chld; }
int child() const { return m_child; }
QAccessibleInterface *accessibleInterface() const;
protected:
QAccessible::Event m_type;
QObject *m_object;
int m_child;
@ -457,9 +469,11 @@ protected:
class Q_GUI_EXPORT QAccessibleStateChangeEvent :public QAccessibleEvent
{
public:
inline QAccessibleStateChangeEvent(QAccessible::State state, QObject *obj, int chld = -1)
: QAccessibleEvent(QAccessible::StateChanged, obj, chld), m_changedStates(state)
{}
inline QAccessibleStateChangeEvent(QObject *obj, QAccessible::State state)
: QAccessibleEvent(obj, QAccessible::InvalidEvent), m_changedStates(state)
{
m_type = QAccessible::StateChanged;
}
QAccessible::State changedStates() const {
return m_changedStates;
@ -469,6 +483,133 @@ protected:
QAccessible::State m_changedStates;
};
// Update the cursor and optionally the selection.
class Q_GUI_EXPORT QAccessibleTextCursorEvent : public QAccessibleEvent
{
public:
inline QAccessibleTextCursorEvent(QObject *obj, int cursorPos)
: QAccessibleEvent(obj, QAccessible::InvalidEvent)
, m_cursorPosition(cursorPos)
{
m_type = QAccessible::TextCaretMoved;
}
void setCursorPosition(int position) { m_cursorPosition = position; }
int cursorPosition() const { return m_cursorPosition; }
protected:
int m_cursorPosition;
};
// Updates the cursor position simultaneously. By default the cursor is set to the end of the selection.
class Q_GUI_EXPORT QAccessibleTextSelectionEvent : public QAccessibleTextCursorEvent
{
public:
inline QAccessibleTextSelectionEvent(QObject *obj, int start, int end)
: QAccessibleTextCursorEvent(obj, (start == -1) ? 0 : end)
, m_selectionStart(start), m_selectionEnd(end)
{
m_type = QAccessible::TextSelectionChanged;
}
void setSelection(int start, int end) {
m_selectionStart = start;
m_selectionEnd = end;
}
int selectionStart() const { return m_selectionStart; }
int selectionEnd() const { return m_selectionEnd; }
protected:
int m_selectionStart;
int m_selectionEnd;
};
class Q_GUI_EXPORT QAccessibleTextInsertEvent : public QAccessibleTextCursorEvent
{
public:
inline QAccessibleTextInsertEvent(QObject *obj, int position, const QString &text)
: QAccessibleTextCursorEvent(obj, position + text.length())
, m_position(position), m_text(text)
{
m_type = QAccessible::TextInserted;
}
QString textInserted() const {
return m_text;
}
int changePosition() const {
return m_position;
}
protected:
int m_position;
QString m_text;
};
class Q_GUI_EXPORT QAccessibleTextRemoveEvent : public QAccessibleTextCursorEvent
{
public:
inline QAccessibleTextRemoveEvent(QObject *obj, int position, const QString &text)
: QAccessibleTextCursorEvent(obj, position)
, m_position(position), m_text(text)
{
m_type = QAccessible::TextRemoved;
}
QString textRemoved() const {
return m_text;
}
int changePosition() const {
return m_position;
}
protected:
int m_position;
QString m_text;
};
class Q_GUI_EXPORT QAccessibleTextUpdateEvent : public QAccessibleTextCursorEvent
{
public:
inline QAccessibleTextUpdateEvent(QObject *obj, int position, const QString &oldText, const QString &text)
: QAccessibleTextCursorEvent(obj, position + text.length())
, m_position(position), m_oldText(oldText), m_text(text)
{
m_type = QAccessible::TextUpdated;
}
QString textRemoved() const {
return m_oldText;
}
QString textInserted() const {
return m_text;
}
int changePosition() const {
return m_position;
}
protected:
int m_position;
QString m_oldText;
QString m_text;
};
class Q_GUI_EXPORT QAccessibleValueChangeEvent : public QAccessibleEvent
{
public:
inline QAccessibleValueChangeEvent(QObject *obj, const QVariant &val)
: QAccessibleEvent(obj, QAccessible::InvalidEvent)
, m_value(val)
{
m_type = QAccessible::ValueChanged;
}
void setValue(const QVariant & val) { m_value= val; }
QVariant value() const { return m_value; }
protected:
QVariant m_value;
};
#define QAccessibleInterface_iid "org.qt-project.Qt.QAccessibleInterface"
Q_DECLARE_INTERFACE(QAccessibleInterface, QAccessibleInterface_iid)

View File

@ -151,4 +151,24 @@ win32:!contains(QT_CONFIG, directwrite) {
sse2: SOURCES += $$SSE2_SOURCES
ssse3: SOURCES += $$SSSE3_SOURCES
iwmmxt: SOURCES += $$IWMMXT_SOURCES
}
}
mips_dsp:*-g++* {
DEFINES += QT_HAVE_MIPS_DSP
HEADERS += $$MIPS_DSP_HEADERS
DRAWHELPER_MIPS_DSP_ASM_FILES = $$MIPS_DSP_ASM
mips_dspr2 {
DEFINES += QT_HAVE_MIPS_DSPR2
DRAWHELPER_MIPS_DSP_ASM_FILES += $$MIPS_DSPR2_ASM
}
mips_dsp_compiler.commands = $$QMAKE_CXX -c
mips_dsp_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
mips_dsp_compiler.dependency_type = TYPE_C
mips_dsp_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
mips_dsp_compiler.input = DRAWHELPER_MIPS_DSP_ASM_FILES MIPS_DSP_SOURCES
mips_dsp_compiler.variable_out = OBJECTS
mips_dsp_compiler.name = compiling[mips_dsp] ${QMAKE_FILE_IN}
silent:mips_dsp_compiler.commands = @echo compiling[mips_dsp] ${QMAKE_FILE_IN} && $$mips_dsp_compiler.commands
QMAKE_EXTRA_COMPILERS += mips_dsp_compiler
}

View File

@ -1698,6 +1698,7 @@ void QInputMethodEvent::setCommitString(const QString &commitString, int replace
The tentative commit string is what the preedit string is expected to be committed as.
The string can be used within the editor to trigger code that reacts on text changes such as validators.
\deprecated
*/
void QInputMethodEvent::setTentativeCommitString(const QString &tentativeCommitString)
{
@ -1758,6 +1759,7 @@ void QInputMethodEvent::setTentativeCommitString(const QString &tentativeCommitS
Returns the text as which preedit string is expected to be committed as.
The string can be used within the editor to trigger code that reacts on text changes such as validators.
\deprecated
\sa setTentativeCommitString()
*/

View File

@ -444,7 +444,7 @@ public:
QInputMethodEvent();
QInputMethodEvent(const QString &preeditText, const QList<Attribute> &attributes);
void setCommitString(const QString &commitString, int replaceFrom = 0, int replaceLength = 0);
void setTentativeCommitString(const QString &tentativeCommitString);
QT_DEPRECATED void setTentativeCommitString(const QString &tentativeCommitString);
inline const QList<Attribute> &attributes() const { return attrs; }
inline const QString &preeditString() const { return preedit; }
@ -452,7 +452,7 @@ public:
inline const QString &commitString() const { return commit; }
inline int replacementStart() const { return replace_from; }
inline int replacementLength() const { return replace_length; }
inline const QString &tentativeCommitString() const { return tentativeCommit; }
QT_DEPRECATED inline const QString &tentativeCommitString() const { return tentativeCommit; }
QInputMethodEvent(const QInputMethodEvent &other);

View File

@ -475,7 +475,6 @@ QWindow *QGuiApplication::topLevelAt(const QPoint &pos)
/*!
\property QGuiApplication::platformName
\brief The name of the underlying platform plugin.
\since 5.0
*/
QString QGuiApplication::platformName()
@ -503,10 +502,14 @@ static void init_platform(const QString &pluginArgument, const QString &platform
const QString defaultPlatform = QLatin1String("cocoa");
#elif defined (Q_OS_WIN)
const QString defaultPlatform = QLatin1String("windows");
#elif defined (Q_OS_QNX)
const QString defaultPlatform = QLatin1String("qnx");
#elif !defined (QT_NO_XCB)
const QString defaultPlatform = QLatin1String("xcb");
#elif !defined (QT_NO_WAYLAND)
const QString defaultPlatform = QLatin1String("wayland");
#elif !defined (QT_NO_EGLFS)
const QString defaultPlatform = QLatin1String("eglfs");
#else
const QString defaultPlatform = QLatin1String("minimal");
#endif
@ -1143,13 +1146,20 @@ void QGuiApplicationPrivate::processLeaveEvent(QWindowSystemInterfacePrivate::Le
void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent *e)
{
QWindow *previous = QGuiApplicationPrivate::focus_window;
QGuiApplicationPrivate::focus_window = e->activated.data();
QWindow *newFocus = e->activated.data();
if (previous == QGuiApplicationPrivate::focus_window)
if (previous == newFocus)
return;
QObject *previousFocusObject = previous ? previous->focusObject() : 0;
if (previous) {
QFocusEvent focusAboutToChange(QEvent::FocusAboutToChange);
QCoreApplication::sendSpontaneousEvent(previous, &focusAboutToChange);
}
QGuiApplicationPrivate::focus_window = newFocus;
if (previous) {
QFocusEvent focusOut(QEvent::FocusOut);
QCoreApplication::sendSpontaneousEvent(previous, &focusOut);
@ -1944,8 +1954,6 @@ void QGuiApplication::restoreOverrideCursor()
#endif// QT_NO_CURSOR
/*!
\since 5.0
Returns the application's style hints.
The style hints encapsulate a set of platform dependent properties
@ -1999,8 +2007,6 @@ QInputMethod *QGuiApplication::inputMethod() const
}
/*!
\since 5.0
returns the input panel.
The input panel returns properties about the state and position of
@ -2015,7 +2021,6 @@ QInputPanel *QGuiApplication::inputPanel() const
}
/*!
\since 4.5
\fn void QGuiApplication::fontDatabaseChanged()
This signal is emitted when application fonts are loaded or removed.

View File

@ -215,7 +215,7 @@ void QInputMethod::hide()
\sa show(), hide()
*/
bool QInputMethod::visible() const
bool QInputMethod::isVisible() const
{
Q_D(const QInputMethod);
QPlatformInputContext *ic = d->platformInputContext();

View File

@ -62,7 +62,7 @@ class Q_GUI_EXPORT QInputMethod : public QObject
Q_PROPERTY(QObject *inputItem READ inputItem WRITE setInputItem NOTIFY inputItemChanged)
Q_PROPERTY(QRectF cursorRectangle READ cursorRectangle NOTIFY cursorRectangleChanged)
Q_PROPERTY(QRectF keyboardRectangle READ keyboardRectangle NOTIFY keyboardRectangleChanged)
Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged)
Q_PROPERTY(bool visible READ isVisible NOTIFY visibleChanged)
Q_PROPERTY(bool animating READ isAnimating NOTIFY animatingChanged)
Q_PROPERTY(QLocale locale READ locale NOTIFY localeChanged)
Q_PROPERTY(Qt::LayoutDirection inputDirection READ inputDirection NOTIFY inputDirectionChanged)
@ -89,7 +89,11 @@ public:
ContextMenu
};
bool visible() const;
#if QT_DEPRECATED_SINCE(5,0)
QT_DEPRECATED bool visible() const { return isVisible(); }
#endif
bool isVisible() const;
void setVisible(bool visible);
bool isAnimating() const;

View File

@ -524,6 +524,7 @@ QPalette::QPalette()
} else {
init();
qt_palette_from_color(*this, Qt::black);
resolve_mask = 0;
}
}

View File

@ -578,7 +578,6 @@ void QScreenPrivate::updatePrimaryOrientation()
\warning In general, grabbing an area outside the screen is not
safe. This depends on the underlying window system.
\since 5.0
*/
QPixmap QScreen::grabWindow(WId window, int x, int y, int w, int h) const

View File

@ -224,7 +224,6 @@ QWindow::SurfaceType QWindow::surfaceType() const
/*!
\property QWindow::visible
\brief whether the window is visible or not
\since 5.0
This property controls the visibility of the window in the windowing system.
@ -496,7 +495,6 @@ Qt::WindowType QWindow::windowType() const
/*!
\property QWindow::windowTitle
\brief the window's title in the windowing system
\since 5.0
The window title might appear in the title area of the window decorations,
depending on the windowing system and the window flags. It might also
@ -625,7 +623,6 @@ bool QWindow::isActive() const
/*!
\property QWindow::contentOrientation
\since 5.0
\brief the orientation of the window's contents
This is a hint to the window manager in case it needs to display
@ -945,25 +942,21 @@ void QWindow::setGeometry(const QRect &rect)
/*!
\property QWindow::x
\since 5.0
\brief the x position of the window's geometry
*/
/*!
\property QWindow::y
\since 5.0
\brief the y position of the window's geometry
*/
/*!
\property QWindow::width
\since 5.0
\brief the width of the window's geometry
*/
/*!
\property QWindow::height
\since 5.0
\brief the height of the window's geometry
*/

View File

@ -226,7 +226,7 @@ void QWindowSystemInterface::handleWheelEvent(QWindow *w, const QPointF & local,
void QWindowSystemInterface::handleWheelEvent(QWindow *tlw, ulong timestamp, const QPointF & local, const QPointF & global, int d, Qt::Orientation o, Qt::KeyboardModifiers mods)
{
QPoint point = (o == Qt::Vertical) ? QPoint(0, d) : QPoint(d, 0);
handleWheelEvent(tlw, timestamp, local, global, point, point, mods);
handleWheelEvent(tlw, timestamp, local, global, QPoint(), point, mods);
}
void QWindowSystemInterface::handleWheelEvent(QWindow *w, const QPointF & local, const QPointF & global, QPoint pixelDelta, QPoint angleDelta, Qt::KeyboardModifiers mods)

View File

@ -109,4 +109,9 @@ NEON_SOURCES += painting/qdrawhelper_neon.cpp
NEON_HEADERS += painting/qdrawhelper_neon_p.h
NEON_ASM += ../3rdparty/pixman/pixman-arm-neon-asm.S painting/qdrawhelper_neon_asm.S
MIPS_DSP_SOURCES += painting/qdrawhelper_mips_dsp.cpp
MIPS_DSP_HEADERS += painting/qdrawhelper_mips_dsp_p.h painting/qt_mips_asm_dsp.h
MIPS_DSP_ASM += painting/qdrawhelper_mips_dsp_asm.S
MIPS_DSPR2_ASM += painting/qdrawhelper_mips_dspr2_asm.S
include($$PWD/../../3rdparty/zlib_dependency.pri)

View File

@ -47,6 +47,9 @@
#include <private/qdrawhelper_arm_simd_p.h>
#endif
#include <private/qdrawhelper_neon_p.h>
#ifdef QT_HAVE_MIPS_DSP
#include <private/qdrawhelper_mips_dsp_p.h>
#endif
#include <private/qmath_p.h>
#include <qmath.h>
@ -55,18 +58,6 @@ QT_BEGIN_NAMESPACE
#define MASK(src, a) src = BYTE_MUL(src, a)
#if defined(Q_OS_IRIX) && defined(Q_CC_GNU) && __GNUC__ == 3 && __GNUC__ < 4 && QT_POINTER_SIZE == 8
#define Q_IRIX_GCC3_3_WORKAROUND
//
// work around http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14484
//
static uint gccBug(uint value) __attribute__((noinline));
static uint gccBug(uint value)
{
return value;
}
#endif
/*
constants and structures
*/
@ -6057,6 +6048,22 @@ void qInitDrawhelperAsm()
}
#endif
#if defined(QT_HAVE_MIPS_DSP)
functionForMode_C[QPainter::CompositionMode_SourceOver] = comp_func_SourceOver_asm_mips_dsp;
functionForMode_C[QPainter::CompositionMode_Source] = comp_func_Source_mips_dsp;
qt_memfill32 = qt_memfill32_asm_mips_dsp;
qBlendFunctions[QImage::Format_RGB32][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_mips_dsp;
qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_mips_dsp;
qBlendFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_mips_dsp;
qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_mips_dsp;
destFetchProc[QImage::Format_ARGB32] = qt_destFetchARGB32_mips_dsp;
destStoreProc[QImage::Format_ARGB32] = qt_destStoreARGB32_mips_dsp;
#endif // QT_HAVE_MIPS_DSP
if (functionForModeSolidAsm) {
const int destinationMode = QPainter::CompositionMode_Destination;
functionForModeSolidAsm[destinationMode] = functionForModeSolid_C[destinationMode];

View File

@ -0,0 +1,176 @@
/****************************************************************************
**
** Copyright (C) 2012 MIPS Technologies, www.mips.com, author Damir Tatalovic <dtatalovic@mips.com>
** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** 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, Nokia gives you certain additional
** rights. These rights are described in the Nokia 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.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <private/qdrawhelper_p.h>
#include <private/qdrawhelper_mips_dsp_p.h>
#include <private/qpaintengine_raster_p.h>
QT_BEGIN_NAMESPACE
#if defined(QT_HAVE_MIPS_DSP)
extern "C" uint INTERPOLATE_PIXEL_255_asm_mips_dsp(uint x, uint a, uint y, uint b);
extern "C" uint BYTE_MUL_asm_mips_dsp(uint x, uint a);
extern "C" uint * destfetchARGB32_asm_mips_dsp(uint *buffer, const uint *data, int length);
extern "C" uint * qt_destStoreARGB32_asm_mips_dsp(uint *buffer, const uint *data, int length);
#if defined(QT_HAVE_MIPS_DSPR2)
extern "C" uint INTERPOLATE_PIXEL_255_asm_mips_dspr2(uint x, uint a, uint y, uint b);
extern "C" uint BYTE_MUL_asm_mips_dspr2(uint x, uint a);
#endif // QT_HAVE_MIPS_DSPR2
void qt_blend_argb32_on_argb32_mips_dsp(uchar *destPixels, int dbpl,
const uchar *srcPixels, int sbpl,
int w, int h,
int const_alpha)
{
#ifdef QT_DEBUG_DRAW
fprintf(stdout,
"qt_blend_argb32_on_argb32: dst=(%p, %d), src=(%p, %d), dim=(%d, %d) alpha=%d\n",
destPixels, dbpl, srcPixels, sbpl, w, h, const_alpha);
fflush(stdout);
#endif
const uint *src = (const uint *) srcPixels;
uint *dst = (uint *) destPixels;
if (const_alpha == 256) {
for (int y=0; y<h; ++y) {
for (int x=0; x<w; ++x) {
uint s = src[x];
if (s >= 0xff000000)
dst[x] = s;
else if (s != 0)
#if !defined(QT_HAVE_MIPS_DSPR2)
dst[x] = s + BYTE_MUL_asm_mips_dsp(dst[x], qAlpha(~s));
#else
dst[x] = s + BYTE_MUL_asm_mips_dspr2(dst[x], qAlpha(~s));
#endif
}
dst = (quint32 *)(((uchar *) dst) + dbpl);
src = (const quint32 *)(((const uchar *) src) + sbpl);
}
} else if (const_alpha != 0) {
const_alpha = (const_alpha * 255) >> 8;
for (int y=0; y<h; ++y) {
for (int x=0; x<w; ++x) {
#if !defined(QT_HAVE_MIPS_DSPR2)
uint s = BYTE_MUL_asm_mips_dsp(src[x], const_alpha);
dst[x] = s + BYTE_MUL_asm_mips_dsp(dst[x], qAlpha(~s));
#else
uint s = BYTE_MUL_asm_mips_dspr2(src[x], const_alpha);
dst[x] = s + BYTE_MUL_asm_mips_dspr2(dst[x], qAlpha(~s));
#endif
}
dst = (quint32 *)(((uchar *) dst) + dbpl);
src = (const quint32 *)(((const uchar *) src) + sbpl);
}
}
}
void qt_blend_rgb32_on_rgb32_mips_dsp(uchar *destPixels, int dbpl,
const uchar *srcPixels, int sbpl,
int w, int h,
int const_alpha)
{
#ifdef QT_DEBUG_DRAW
fprintf(stdout,
"qt_blend_rgb32_on_rgb32: dst=(%p, %d), src=(%p, %d), dim=(%d, %d) alpha=%d\n",
destPixels, dbpl, srcPixels, sbpl, w, h, const_alpha);
fflush(stdout);
#endif
if (const_alpha != 256) {
qt_blend_argb32_on_argb32_mips_dsp(destPixels, dbpl, srcPixels, sbpl, w, h, const_alpha);
return;
}
const uint *src = (const uint *) srcPixels;
uint *dst = (uint *) destPixels;
int len = w * 4;
for (int y=0; y<h; ++y) {
memcpy(dst, src, len);
dst = (quint32 *)(((uchar *) dst) + dbpl);
src = (const quint32 *)(((const uchar *) src) + sbpl);
}
}
void comp_func_Source_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha)
{
if (const_alpha == 255) {
::memcpy(dest, src, length * sizeof(uint));
} else {
int ialpha = 255 - const_alpha;
for (int i = 0; i < length; ++i) {
#if !defined(QT_HAVE_MIPS_DSPR2)
dest[i] = INTERPOLATE_PIXEL_255_asm_mips_dsp(src[i], const_alpha, dest[i], ialpha);
#else
dest[i] = INTERPOLATE_PIXEL_255_asm_mips_dspr2(src[i], const_alpha, dest[i], ialpha);
#endif
}
}
}
uint * QT_FASTCALL qt_destFetchARGB32_mips_dsp(uint *buffer,
QRasterBuffer *rasterBuffer,
int x, int y, int length)
{
const uint *data = (const uint *)rasterBuffer->scanLine(y) + x;
buffer = destfetchARGB32_asm_mips_dsp(buffer, data, length);
return buffer;
}
void QT_FASTCALL qt_destStoreARGB32_mips_dsp(QRasterBuffer *rasterBuffer, int x, int y,
const uint *buffer, int length)
{
uint *data = (uint *)rasterBuffer->scanLine(y) + x;
qt_destStoreARGB32_asm_mips_dsp(data, buffer, length);
}
#endif // QT_HAVE_MIPS_DSP
QT_END_NAMESPACE

View File

@ -0,0 +1,424 @@
/****************************************************************************
**
** Copyright (C) 2012 MIPS Technologies, www.mips.com, author Damir Tatalovic <dtatalovic@mips.com>
** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** 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, Nokia gives you certain additional
** rights. These rights are described in the Nokia 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.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qt_mips_asm_dsp.h"
LEAF_MIPS_DSP(INTERPOLATE_PIXEL_255_asm_mips_dsp)
/*
* a0 - uint x (First value to multiply)
* a1 - uint a (Multiplicator byte for first value)
* a2 - uint y (Second value to multiply)
* a3 - uint b (Multiplicator byte for second value)
*/
.set reorder
li t4, 8388736
preceu.ph.qbra t0, a0 /* (x & 0xff00ff) */
mul t0, t0, a1 /* (x & 0xff00ff) * a */
preceu.ph.qbra t1, a2 /* (y & 0xff00ff) */
mul t1, t1, a3 /* (y & 0xff00ff) * b */
addu t0, t0, t1 /* (x & 0xff00ff) * a +
* (y & 0xff00ff) * b
*/
preceu.ph.qbla t1, t0 /* (t >> 8) & 0xff00ff */
addu t0, t0, t1 /* t + ((t >> 8) & 0xff00ff */
addu t0, t0, t4 /* t + ((t >> 8) & 0xff00ff) + 0x800080 */
preceu.ph.qbla t0, t0 /* t >> 8 and t&=0xff00ff */
preceu.ph.qbla t2, a0 /* (x>>8) & 0xff00ff */
mul t2, t2, a1 /* ((x>>8) & 0xff00ff) * a */
preceu.ph.qbla t3, a2 /* ((y>>8) & 0xff00ff) */
mul t3, t3, a3 /* ((y>>8) & 0xff00ff) * b */
addu t2, t2, t3 /* ((x>>8) & 0xff00ff) * a +
* ((y >> 8) & 0xff00ff) * b
*/
preceu.ph.qbla t3, t2 /* (x>>8) & 0xff00ff */
addu t2, t2, t3 /* (x>>8) & 0xff00ff) + 0x800080 */
addu t2, t2, t4 /* x + ((x>>8) & 0xff00ff) + 0x800080 */
and t2, t2, 0xff00ff00
or t1, t0, t2
move v0, t1
j ra
END(INTERPOLATE_PIXEL_255_asm_mips_dsp)
LEAF_MIPS_DSP(BYTE_MUL_asm_mips_dsp)
/*
* a0 - uint x (Value to multiply)
* a1 - uint a (Multiplicator byte)
*/
.set reorder
replv.ph a1, a1 /* a1 = 0x00a00a */
li t4, 8388736 /* t4 = 0x800080 */
muleu_s.ph.qbl t0, a0, a1
muleu_s.ph.qbr t2, a0, a1
preceu.ph.qbla t1, t0
addu t0, t0, t1
addu t0, t0, t4
preceu.ph.qbla t3, t2
addu t2, t2, t3
addu t2, t2, t4
precrq.qb.ph t4, t0, t2
move v0, t4
j ra
END(BYTE_MUL_asm_mips_dsp)
LEAF_MIPS_DSP(destfetchARGB32_asm_mips_dsp)
/*
* a0 - buffer address (dst)
* a1 - data address (src)
* a2 - length
*/
beqz a2, 2f
move v0, a0 /* just return the address of buffer
* for storing returning values */
move v0, a0
andi t1, a2, 0x1
li t7, 8388736 /* t7 = 0x800080 */
beqz t1, 1f
nop
lw t8, 0(a1)
addiu a2, a2, -1
srl t6, t8, 24 /* t6 = alpha */
preceu.ph.qbra t0, t8
mul t1, t0, t6
preceu.ph.qbla t4, t8
mul t5, t4, t6
preceu.ph.qbla t2, t1
addq.ph t3, t1, t2
addq.ph t3, t3, t7
preceu.ph.qbla t1, t3 /* t1 holds R & B blended with alpha
* | 0 | dRab | 0 | dBab | */
preceu.ph.qbla t2, t5
addq.ph t3, t2, t5
addq.ph t4, t3, t7
preceu.ph.qbla t2, t4 /* t2 holds A & G blended with alpha
* | 0 | dAab | 0 | dGab | */
andi t2, t2, 255 /* t2 = 0xff */
sll t0, t6, 24
sll t3, t2, 8
or t4, t0, t3
or t0, t1, t4
sw t0, 0(a0)
addiu a0, a0, 4
addiu a1, a1, 4
beqz a2, 2f /* there was only one member */
nop
1:
lw t0, 0(a1) /* t0 = src1 */
lw t1, 4(a1) /* t1 = src2 */
precrq.qb.ph t4, t0, t1 /* t4 = a1 G1 a2 G2 */
preceu.ph.qbra t3, t4 /* t3 = 0 G1 0 G2 */
preceu.ph.qbla t2, t4 /* t2 = | 0 | a1 | 0 | a2 | */
srl t5, t2, 8
or t8, t2, t5 /* t8 = 0 a1 a1 a2 */
muleu_s.ph.qbr t5, t8, t3
addiu a2, a2, -2
addiu a1, a1, 8
precrq.ph.w t9, t0, t1
preceu.ph.qbra t9, t9
preceu.ph.qbla t6, t5
addq.ph t5, t5, t6
addq.ph t2, t5, t7
muleu_s.ph.qbr t6, t8, t9
sll t3, t1, 16
packrl.ph t3, t0, t3
preceu.ph.qbra t3, t3
muleu_s.ph.qbr t8, t8, t3
preceu.ph.qbla t3, t6
addq.ph t3, t6, t3
addq.ph t3, t3, t7
preceu.ph.qbla t5, t8
addq.ph t5, t8, t5
addq.ph t5, t5, t7
precrq.ph.w t0, t4, t3 /* t0 = | 0 | a1 | 0 | dR1 | */
precrq.ph.w t1, t2, t5 /* t1 = | 0 | dG1 | 0 | dB1 | */
precrq.qb.ph t6, t0, t1 /* t6 = | a1 | dR1 | dG1 | dB1 | */
sll t3, t3, 16
sll t5, t5, 16
packrl.ph t0, t4, t3
packrl.ph t1, t2, t5
precrq.qb.ph t8, t0, t1 /* t8 = | a2 | dR2 | dG2 | dB2 | */
sw t6, 0(a0)
sw t8, 4(a0)
bnez a2, 1b
addiu a0, a0, 8
2:
j ra
nop
END(destfetchARGB32_asm_mips_dsp)
LEAF_MIPS_DSP(qt_memfill32_asm_mips_dsp)
/*
* a0 - destination address (dst)
* a1 - value
* a2 - count
*/
beqz a2, 5f
nop
li t8, 8
andi t0, a2, 0x7 /* t0 holds how many counts exceeds 8 */
beqzl t0, 2f /* count is multiple of 8 (8, 16, 24, ....) */
addiu a2, a2, -8
subu a2, a2, t0
1:
sw a1, 0(a0)
addiu t0, t0, -1
bnez t0, 1b
addiu a0, a0, 4
bgeu a2, t8, 2f
addiu a2, a2, -8
b 5f
nop
2:
beqz a2, 4f
nop
3:
pref 30, 32(a0)
addiu a2, a2, -8
sw a1, 0( a0)
sw a1, 4(a0)
sw a1, 8(a0)
sw a1, 12(a0)
addiu a0, a0, 32
sw a1, -16(a0)
sw a1, -12(a0)
sw a1, -8(a0)
bnez a2, 3b
sw a1, -4(a0)
4:
sw a1, 0(a0)
sw a1, 4(a0)
sw a1, 8(a0)
sw a1, 12(a0)
addiu a0, a0, 32
sw a1, -16(a0)
sw a1, -12(a0)
sw a1, -8(a0)
sw a1, -4(a0)
5:
jr ra
nop
END(qt_memfill32_asm_mips_dsp)
LEAF_MIPS_DSP(comp_func_SourceOver_asm_mips_dsp)
/*
* a0 - uint *dest
* a1 - const uint *src
* a2 - int length
* a3 - uint const_alpha
*/
beqz a2, 5f
nop
li t8, 0xff
li t7, 8388736 /* t7 = 0x800080 */
bne a3, t8, 4f
nop
/* part where const_alpha = 255 */
b 2f
nop
1:
addiu a0, a0, 4
addiu a2, a2, -1
beqz a2, 5f
nop
2:
lw t0, 0(a1) /* t0 = s = src[i] */
addiu a1, a1, 4
nor t1, t0, zero
srl t1, t1, 24 /* t1 = ~qAlpha(s) */
bnez t1, 3f
nop
sw t0, 0(a0) /* dst[i] = src[i] */
addiu a2, a2, -1
bnez a2, 2b
addiu a0, a0, 4
b 5f
nop
3:
beqz t0, 1b
nop
lw t4, 0(a0)
replv.ph t6, t1
muleu_s.ph.qbl t2, t4, t6
muleu_s.ph.qbr t3, t4, t6
addiu a2, a2, -1
preceu.ph.qbla t4, t2
addq.ph t4, t2, t4
addq.ph t4, t4, t7
preceu.ph.qbla t5, t3
addq.ph t5, t5, t3
addq.ph t5, t5, t7
precrq.qb.ph t8, t4, t5 /* t8 = | dsA | dsR | dsG | dsB | */
addu t8, t0, t8 /* dst[i] =
* s + BYTE_MUL(dst[i],~qAlpha(s)) */
sw t8, 0(a0)
bnez a2, 2b
addiu a0, a0, 4
b 5f
nop
4:
lw t0, 0(a0) /* t0 - dst[i] "1" */
lw t1, 0(a1) /* t1 - src[i] "2" */
addiu a1, a1, 4
addiu a2, a2, -1
replv.ph t6, a3 /* a1 = 0x00a00a */
muleu_s.ph.qbl t2, t1, t6
muleu_s.ph.qbr t3, t1, t6
preceu.ph.qbla t4, t2
addq.ph t4, t2, t4
addq.ph t4, t4, t7
preceu.ph.qbla t5, t3
addq.ph t5, t5, t3
addq.ph t5, t5, t7
precrq.qb.ph t8, t4, t5 /* t8 = | dsA | dsR | dsG | dsB | */
nor t6, t8, zero
srl t6, t6, 24
replv.ph t6, t6
muleu_s.ph.qbl t2, t0, t6
muleu_s.ph.qbr t3, t0, t6
preceu.ph.qbla t4, t2
addq.ph t4, t2, t4
addq.ph t4, t4, t7
preceu.ph.qbla t5, t3
addq.ph t5, t5, t3
addq.ph t5, t5, t7
precrq.qb.ph t6, t4, t5 /* t6 = | ddA | ddR | ddG | ddB | */
addu t0, t8, t6
sw t0, 0(a0)
bnez a2, 4b
addiu a0, a0, 4
5:
jr ra
nop
END(comp_func_SourceOver_asm_mips_dsp)
LEAF_MIPS_DSP(qt_destStoreARGB32_asm_mips_dsp)
/*
* a0 - uint * data
* a1 - const uint *buffer
* a2 - int length
*/
blez a2, 6f
move v1, zero
li t0, 255
lui a3, 0xff
j 2f
lui t2, 0xff00
1:
addiu v1, v1, 1
sw zero, 0(a0)
addiu a1, a1, 4
beq v1, a2, 6f
addiu a0, a0, 4
2:
lw v0, 0(a1)
srl t3, v0, 0x18
beql t3, t0, 5f
addiu v1, v1, 1
beqz t3, 1b
srl t1, v0, 0x8
andi t1, t1, 0xff
teq t3, zero, 0x7
div zero, a3, t3
move t8, t3
andi t6, v0, 0xff
srl t3,v0,0x10
andi t3,t3,0xff
and t5, v0, t2
mflo t4
mult $ac0, t4, t6
mult $ac1, t1, t4
mul t4, t3, t4
sltiu t8, t8, 2
beqz t8, 3f
nop
mflo t6, $ac0
mflo t1, $ac1
sra t6, t6, 0x10
sra t1, t1, 0x8
b 4f
nop
3:
extr.w t6, $ac0, 0x10
extr.w t1, $ac1, 0x8
4:
and v0, t4, a3
or v0, v0, t6
or v0, v0, t5
andi t1, t1, 0xff00
or v0, v0, t1
addiu v1, v1, 1
5:
sw v0, 0(a0)
addiu a1, a1, 4
bne v1, a2, 2b
addiu a0, a0, 4
6:
jr ra
nop
END(qt_destStoreARGB32_asm_mips_dsp)

View File

@ -1,9 +1,9 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
** Copyright (C) 2012 MIPS Technologies, www.mips.com, author Damir Tatalovic <dtatalovic@mips.com>
** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
** This file is part of the QtGui module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
@ -39,61 +39,40 @@
**
****************************************************************************/
/*
pagegenerator.h
*/
#ifndef QDRAWHELPER_MIPS_P_H
#define QDRAWHELPER_MIPS_P_H
#ifndef PAGEGENERATOR_H
#define PAGEGENERATOR_H
#include <QStack>
#include <qtextstream.h>
#include "generator.h"
#include "location.h"
#include <private/qdrawhelper_p.h>
QT_BEGIN_NAMESPACE
class QTextCodec;
class ClassNode;
class InnerNode;
class NamespaceNode;
class NameCollisionNode;
#if defined(QT_HAVE_MIPS_DSP)
class PageGenerator : public Generator
{
public:
PageGenerator();
~PageGenerator();
extern "C" void qt_memfill32_asm_mips_dsp(quint32 *dest, quint32 value, int count);
virtual void generateTree(const Tree *tree);
virtual void generateDisambiguationPages() { }
extern "C" void comp_func_SourceOver_asm_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha);
protected:
virtual QString fileBase(const Node* node) const;
virtual QString fileExtension(const Node* node) const = 0;
QString fileName(const Node* node) const;
QString outFileName();
virtual void beginSubPage(const InnerNode* node, const QString& fileName);
virtual void endSubPage();
virtual void generateInnerNode(const InnerNode *node);
QTextStream& out();
void qt_blend_argb32_on_argb32_mips_dsp(uchar *destPixels, int dbpl,
const uchar *srcPixels, int sbpl,
int w, int h,
int const_alpha);
QString naturalLanguage;
QString outputEncoding;
QTextCodec* outputCodec;
bool parseArg(const QString& src,
const QString& tag,
int* pos,
int n,
QStringRef* contents,
QStringRef* par1 = 0,
bool debug = false);
void qt_blend_rgb32_on_rgb32_mips_dsp(uchar *destPixels, int dbpl,
const uchar *srcPixels, int sbpl,
int w, int h,
int const_alpha);
protected:
QStack<QTextStream*> outStreamStack;
QList<NameCollisionNode*> collisionNodes;
};
void comp_func_Source_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha);
uint * QT_FASTCALL qt_destFetchARGB32_mips_dsp(uint *buffer,
QRasterBuffer *rasterBuffer,
int x, int y, int length);
void QT_FASTCALL qt_destStoreARGB32_mips_dsp(QRasterBuffer *rasterBuffer, int x, int y,
const uint *buffer, int length);
#endif // QT_HAVE_MIPS_DSP
QT_END_NAMESPACE
#endif
#endif // QDRAWHELPER_MIPS_P_H

View File

@ -0,0 +1,95 @@
/****************************************************************************
**
** Copyright (C) 2012 MIPS Technologies, www.mips.com, author Damir Tatalovic <dtatalovic@mips.com>
** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** 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, Nokia gives you certain additional
** rights. These rights are described in the Nokia 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.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qt_mips_asm_dsp.h"
LEAF_MIPS_DSPR2(INTERPOLATE_PIXEL_255_asm_mips_dspr2)
/*
* a0 - uint x (First value to multiply)
* a1 - uint a (Multiplicator byte for first value)
* a2 - uint y (Second value to multiply)
* a3 - uint b (Multiplicator byte for second value)
*/
.set reorder
replv.ph a1, a1
replv.ph a3, a3
li t8, 8388736
muleu_s.ph.qbl t0, a0, a1
muleu_s.ph.qbl t1, a2, a3
muleu_s.ph.qbr t2, a0, a1
muleu_s.ph.qbr t3, a2, a3
addu.ph t4, t0, t1
addu.ph t5, t2, t3
preceu.ph.qbla t0, t4
addu t1, t0, t8
addu t1, t4, t1
preceu.ph.qbla t6, t5
addu t7, t6, t8
addu t7, t5, t7
precrq.qb.ph t2, t1, t7
move v0, t2
j ra
END(INTERPOLATE_PIXEL_255_asm_mips_dspr2)
LEAF_MIPS_DSPR2(BYTE_MUL_asm_mips_dspr2)
/*
* a0 - uint x (Value to multiply)
* a1 - uint a (Multiplicator byte)
*/
.set reorder
replv.ph a1, a1 /* a1 = 0x00a00a */
li t4, 8388736 /* t4 = 0x800080 */
muleu_s.ph.qbl t0, a0, a1
muleu_s.ph.qbr t2, a0, a1
preceu.ph.qbla t1, t0
addu t0, t0, t1
addu t0, t0, t4
preceu.ph.qbla t3, t2
addu t2, t2, t3
addu t2, t2, t4
precrq.qb.ph t4, t0, t2
move v0, t4
j ra
END(BYTE_MUL_asm_mips_dspr2)

View File

@ -870,7 +870,7 @@ void QPaintEngineEx::drawPoints(const QPointF *points, int pointCount)
}
} else {
for (int i=0; i<pointCount; ++i) {
qreal pts[] = { points[i].x(), points[i].y(), points[i].x() + 1/63., points[i].y() };
qreal pts[] = { points[i].x(), points[i].y(), points[i].x() + qreal(1/63.), points[i].y() };
QVectorPath path(pts, 2, 0);
stroke(path, pen);
}

View File

@ -2399,7 +2399,7 @@ QDataStream &operator>>(QDataStream &s, QPainterPath &p)
#endif
continue;
}
QPainterPath::Element elm = { x, y, QPainterPath::ElementType(type) };
QPainterPath::Element elm = { qreal(x), qreal(y), QPainterPath::ElementType(type) };
p.d_func()->elements.append(elm);
}
s >> p.d_func()->cStart;

View File

@ -268,7 +268,7 @@ inline void QPainterPathData::maybeMoveTo()
}
}
#define KAPPA 0.5522847498
#define KAPPA qreal(0.5522847498)
QT_END_NAMESPACE

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