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/includes.txt
src/3rdparty/webkit/includes2.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 # Symlinks generated by configure
tools/qvfb/qvfbhdr.h tools/qvfb/qvfbhdr.h
tools/qvfb/qlock_p.h tools/qvfb/qlock_p.h

View File

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

View File

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

View File

@ -58,5 +58,8 @@ int main(int, char **)
xcb_connection_t *connection = xcb_connect("", &primaryScreen); 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; return 0;
} }

View File

@ -9,7 +9,12 @@ cat >>bsymbolic_functions.c << EOF
int main() { return 0; } int main() { return 0; }
EOF 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 rm -f bsymbolic_functions.c libtest.so
# done # done

View File

@ -25,6 +25,7 @@ __global void blah();
EOF EOF
if [ "$VERBOSE" = "yes" ] ; then if [ "$VERBOSE" = "yes" ] ; then
echo $COMPILER -c $CMDLINE fvisibility.c
$COMPILER -c $CMDLINE fvisibility.c && FVISIBILITY_SUPPORT=yes $COMPILER -c $CMDLINE fvisibility.c && FVISIBILITY_SUPPORT=yes
else else
$COMPILER -c $CMDLINE fvisibility.c >/dev/null 2>&1 && FVISIBILITY_SUPPORT=yes $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 <vector>
#include <algorithm> #include <algorithm>
#include <iostream> #include <iostream>
#include <cstddef>
// something mean to see if the compiler and C++ standard lib are good enough // something mean to see if the compiler and C++ standard lib are good enough
template<class K, class T> template<class K, class T>

259
configure vendored
View File

@ -679,8 +679,7 @@ CFG_OPENVG=auto
CFG_OPENVG_LC_INCLUDES=no CFG_OPENVG_LC_INCLUDES=no
CFG_OPENVG_SHIVA=auto CFG_OPENVG_SHIVA=auto
CFG_OPENVG_ON_OPENGL=auto CFG_OPENVG_ON_OPENGL=auto
CFG_EGL=no CFG_EGL=auto
CFG_EGL_GLES_INCLUDES=no
CFG_SSE=auto CFG_SSE=auto
CFG_FONTCONFIG=auto CFG_FONTCONFIG=auto
CFG_LIBFREETYPE=auto CFG_LIBFREETYPE=auto
@ -708,6 +707,7 @@ CFG_XINPUT=runtime
CFG_XKB=auto CFG_XKB=auto
CFG_XCB=auto CFG_XCB=auto
CFG_XCB_LIMITED=yes CFG_XCB_LIMITED=yes
CFG_EGLFS=auto
CFG_LIBUDEV=auto CFG_LIBUDEV=auto
CFG_OBSOLETE_WAYLAND=no CFG_OBSOLETE_WAYLAND=no
CFG_EVDEV=auto CFG_EVDEV=auto
@ -739,6 +739,8 @@ CFG_NAS=no
CFG_ACCESSIBILITY=auto CFG_ACCESSIBILITY=auto
CFG_IWMMXT=no CFG_IWMMXT=no
CFG_NEON=auto CFG_NEON=auto
CFG_MIPS_DSP=yes
CFG_MIPS_DSPR2=yes
CFG_CLOCK_GETTIME=auto CFG_CLOCK_GETTIME=auto
CFG_CLOCK_MONOTONIC=auto CFG_CLOCK_MONOTONIC=auto
CFG_MREMAP=auto CFG_MREMAP=auto
@ -893,7 +895,7 @@ while [ "$#" -gt 0 ]; do
VAL=no VAL=no
;; ;;
#Qt style yes options #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,"` VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
VAL=yes VAL=yes
;; ;;
@ -1165,9 +1167,6 @@ while [ "$#" -gt 0 ]; do
[ "$VAL" = "yes" ] || [ "$VAL" = "no" ] || [ "$VAL" = "yes" ] || [ "$VAL" = "no" ] ||
[ "$VAL" = "es2" ]; then [ "$VAL" = "es2" ]; then
CFG_OPENGL="$VAL" CFG_OPENGL="$VAL"
if [ "$VAL" = "es2" ]; then
CFG_EGL="yes"
fi
else else
UNKNOWN_OPT=yes UNKNOWN_OPT=yes
fi fi
@ -1175,9 +1174,6 @@ while [ "$#" -gt 0 ]; do
openvg) openvg)
if [ "$VAL" = "auto" ] || [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then if [ "$VAL" = "auto" ] || [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_OPENVG="$VAL" CFG_OPENVG="$VAL"
if [ "$CFG_EGL" = "no" ] && [ "$VAL" != "no" ]; then
CFG_EGL=auto
fi
else else
UNKNOWN_OPT=yes UNKNOWN_OPT=yes
fi fi
@ -1548,6 +1544,20 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes UNKNOWN_OPT=yes
fi 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) reduce-relocations)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_REDUCE_RELOCATIONS="$VAL" CFG_REDUCE_RELOCATIONS="$VAL"
@ -1654,6 +1664,13 @@ while [ "$#" -gt 0 ]; do
wayland) wayland)
CFG_OBSOLETE_WAYLAND=yes CFG_OBSOLETE_WAYLAND=yes
;; ;;
eglfs)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_EGLFS="$VAL"
else
UNKNOWN_OPT=yes
fi
;;
libudev) libudev)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_LIBUDEV="$VAL" CFG_LIBUDEV="$VAL"
@ -2600,8 +2617,13 @@ if [ "$CFG_SEPARATE_DEBUG_INFO" != "no" ] && [ "$CFG_SHARED" = "yes" ]; then
fi fi
# auto-detect -fvisibility support # 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 "$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 CFG_REDUCE_EXPORTS=no
else else
CFG_REDUCE_EXPORTS=yes CFG_REDUCE_EXPORTS=yes
@ -2611,6 +2633,11 @@ fi
# detect the availability of the -Bsymbolic-functions linker optimization # detect the availability of the -Bsymbolic-functions linker optimization
if [ "$CFG_REDUCE_RELOCATIONS" != "no" ]; then if [ "$CFG_REDUCE_RELOCATIONS" != "no" ]; then
if "$unixtests/bsymbolic_functions.test" "$TEST_COMPILER" "$OPT_VERBOSE"; 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 CFG_REDUCE_RELOCATIONS=no
else else
CFG_REDUCE_RELOCATIONS=yes CFG_REDUCE_RELOCATIONS=yes
@ -2869,6 +2896,14 @@ if [ "$OPT_HELP" = "yes" ]; then
XCBN=" " XCBN=" "
fi fi
if [ "$CFG_EGLFS" = "no" ]; then
EGLFSY=" "
EGLFSN="*"
else
EGLFSY="*"
EGLFSN=" "
fi
if [ "$CFG_XINPUT2" = "no" ]; then if [ "$CFG_XINPUT2" = "no" ]; then
X2Y=" " X2Y=" "
X2N="*" X2N="*"
@ -3074,6 +3109,8 @@ cat << EOF
-no-sse4.2.......... Do not compile with use of SSE4.2 instructions. -no-sse4.2.......... Do not compile with use of SSE4.2 instructions.
-no-avx ............ Do not compile with use of AVX instructions. -no-avx ............ Do not compile with use of AVX instructions.
-no-neon ........... Do not compile with use of NEON 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> {...}'. -qtnamespace <name> Wraps all Qt library code in 'namespace <name> {...}'.
-qtlibinfix <infix> Renames all libQt*.so to libQt*<infix>.so. -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. $XCBN -no-xcb ............ Do not compile Xcb (X protocol C-language Binding) support.
$XCBY -xcb ............... Compile Xcb 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 EOF
fi # X11 fi # X11
@ -3309,12 +3349,6 @@ Qt/X11 only:
-system-nas-sound .. Use NAS libaudio from the operating system. -system-nas-sound .. Use NAS libaudio from the operating system.
See http://radscan.com/nas.html 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. -no-opengl ......... Do not support OpenGL.
+ -opengl <api> ...... Enable OpenGL support. + -opengl <api> ...... Enable OpenGL support.
With no parameter, this will auto-detect the "best" 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 # 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" [ -z "$CFG_ARCH" ] && CFG_ARCH="unknown"
if [ "$QMAKESPEC" != "$XQMAKESPEC" ]; then if [ "$QMAKESPEC" != "$XQMAKESPEC" ]; then
# Do the same test again, using the host compiler # 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" [ -z "$CFG_HOST_ARCH" ] && CFG_HOST_ARCH="unknown"
else else
# not cross compiling, host == target # not cross compiling, host == target
@ -4030,6 +4065,20 @@ elif [ "$CFG_ARCH" != "arm" ]; then
CFG_NEON=no CFG_NEON=no
fi 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" [ "$XPLATFORM_MINGW" = "yes" ] && QMakeVar add styles "windowsxp windowsvista"
# detect zlib # detect zlib
@ -4103,6 +4152,14 @@ if [ "$CFG_ACCESSIBILITY" = "auto" ]; then
CFG_ACCESSIBILITY=yes CFG_ACCESSIBILITY=yes
fi 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 # auto-detect SQL-modules support
for _SQLDR in $CFG_SQL_AVAILABLE; do for _SQLDR in $CFG_SQL_AVAILABLE; do
case $_SQLDR in case $_SQLDR in
@ -4570,9 +4627,6 @@ if [ "$PLATFORM_X11" = "yes" -o "$XPLATFORM_MINGW" = "yes" ]; then
CFG_OPENGL=desktop 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 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 CFG_OPENGL=es2
if [ "$CFG_EGL" = "no" ]; then
CFG_EGL=auto
fi
else else
if [ "$CFG_OPENGL" = "yes" ]; then if [ "$CFG_OPENGL" = "yes" ]; then
echo "All the OpenGL functionality tests failed!" echo "All the OpenGL functionality tests failed!"
@ -4723,33 +4777,6 @@ if [ "$PLATFORM_X11" = "yes" ]; then
fi fi
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 # auto-detect Session Management support
if [ "$CFG_SM" = "auto" ]; then 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 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
fi # X11 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 [ "$BUILD_ON_MAC" = "yes" ]; then
if [ "$CFG_PHONON" != "no" ]; then if [ "$CFG_PHONON" != "no" ]; then
@ -4914,7 +4968,6 @@ if [ "$BUILD_ON_MAC" = "yes" ]; then
fi fi
fi fi
if [ "$PLATFORM_QPA" = "yes" ]; then if [ "$PLATFORM_QPA" = "yes" ]; then
# auto-detect OpenGL support (es2 = OpenGL ES 2.x) # auto-detect OpenGL support (es2 = OpenGL ES 2.x)
if [ "$CFG_OPENGL" = "auto" ] || [ "$CFG_OPENGL" = "yes" ]; then if [ "$CFG_OPENGL" = "auto" ] || [ "$CFG_OPENGL" = "yes" ]; then
@ -4984,6 +5037,7 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
# Save these for a check later # Save these for a check later
ORIG_CFG_XCB="$CFG_XCB" ORIG_CFG_XCB="$CFG_XCB"
ORIG_CFG_EGLFS="$CFG_EGLFS"
if [ "$CFG_LIBUDEV" != "no" ]; then if [ "$CFG_LIBUDEV" != "no" ]; then
if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists libudev 2>/dev/null; then if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists libudev 2>/dev/null; then
@ -5041,7 +5095,7 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
fi fi
if [ "$CFG_XCB" != "no" ]; then 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_CFLAGS_XCB="`$PKG_CONFIG --cflags xcb 2>/dev/null`"
QMAKE_LIBS_XCB="`$PKG_CONFIG --libs xcb 2>/dev/null`" QMAKE_LIBS_XCB="`$PKG_CONFIG --libs xcb 2>/dev/null`"
fi fi
@ -5101,6 +5155,31 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
QMAKE_DEFINES_XCB=QT_NO_XCB_XKB QMAKE_DEFINES_XCB=QT_NO_XCB_XKB
fi 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 if [ -n "$QMAKE_CFLAGS_XCB" ] || [ -n "$QMAKE_LIBS_XCB" ]; then
QMakeVar set QMAKE_CFLAGS_XCB "$QMAKE_CFLAGS_XCB" QMakeVar set QMAKE_CFLAGS_XCB "$QMAKE_CFLAGS_XCB"
QMakeVar set QMAKE_LIBS_XCB "$QMAKE_LIBS_XCB" QMakeVar set QMAKE_LIBS_XCB "$QMAKE_LIBS_XCB"
@ -5116,13 +5195,13 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
fi fi
if [ "$PLATFORM_QPA" = "yes" ] && [ "$BUILD_ON_MAC" = "no" ] && [ "$XPLATFORM_MINGW" = "no" ]; then 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" ] && 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 "No QPA platform plugin enabled!"
echo " If you really want to build without a QPA platform plugin you must pass" 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 " -no-xcb and -no-eglfs to configure. Doing this will"
echo " cannot run GUI applications." echo " produce a Qt that cannot run GUI applications."
echo " The dependencies needed for xcb to build are listed in" echo " The dependencies needed for xcb to build are listed in"
echo " src/plugins/platforms/xcb/README" echo " src/plugins/platforms/xcb/README"
exit 1 exit 1
@ -5132,35 +5211,6 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
fi 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" [ "$XPLATFORM_MINGW" = "yes" ] && [ "$CFG_PHONON" != "no" ] && CFG_PHONON="yes"
# freetype support # freetype support
@ -5413,7 +5463,7 @@ if [ "$CFG_MAC_DWARF2" = "yes" ]; then
fi fi
# Detect the default arch (x86 or x86_64) on Mac OS X # 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= DEFAULT_ARCH=
case `file "${outpath}/bin/qmake"` in case `file "${outpath}/bin/qmake"` in
*i?86) *i?86)
@ -5448,19 +5498,18 @@ else
QT_CONFIG="$QT_CONFIG accessibility" QT_CONFIG="$QT_CONFIG accessibility"
fi fi
# egl stuff does not belong in lighthouse, but rather in plugins # enable egl
if [ "$PLATFORM_QPA" = "yes" ]; then if [ "$CFG_EGL" = "yes" ]; then
CFG_EGL="no" QT_CONFIG="$QT_CONFIG egl"
else
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGL"
fi fi
# enable egl # enable eglfs
if [ "$CFG_EGL" = "no" ]; then if [ "$CFG_EGLFS" = "yes" ]; then
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGL" QT_CONFIG="$QT_CONFIG eglfs"
else else
QT_CONFIG="$QT_CONFIG egl" QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EGLFS"
if [ "$CFG_EGL_GLES_INCLUDES" = "yes" ]; then
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_GLES_EGL"
fi
fi fi
# enable openvg # enable openvg
@ -5565,6 +5614,10 @@ fi
[ "$CFG_AVX" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG avx" [ "$CFG_AVX" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG avx"
[ "$CFG_IWMMXT" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG iwmmxt" [ "$CFG_IWMMXT" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG iwmmxt"
[ "$CFG_NEON" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG neon" [ "$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 if [ "$CFG_CLOCK_GETTIME" = "yes" ]; then
QT_CONFIG="$QT_CONFIG clock-gettime" QT_CONFIG="$QT_CONFIG clock-gettime"
fi fi
@ -5719,7 +5772,7 @@ fi
[ '!' -z "$L_FLAGS" ] && QMakeVar add QMAKE_LIBDIR_FLAGS "$L_FLAGS" [ '!' -z "$L_FLAGS" ] && QMakeVar add QMAKE_LIBDIR_FLAGS "$L_FLAGS"
[ '!' -z "$l_FLAGS" ] && QMakeVar add LIBS "$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 if [ "$CFG_RPATH" = "yes" ]; then
QMAKE_CONFIG="$QMAKE_CONFIG absolute_library_soname" QMAKE_CONFIG="$QMAKE_CONFIG absolute_library_soname"
# set the default rpath to the library installation directory # set the default rpath to the library installation directory
@ -6519,6 +6572,9 @@ elif [ "$CFG_ARCH" = "arm" ]; then
echo "iWMMXt support ......... ${CFG_IWMMXT}" echo "iWMMXt support ......... ${CFG_IWMMXT}"
echo "NEON support ........... ${CFG_NEON}" echo "NEON support ........... ${CFG_NEON}"
fi 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 "IPv6 ifname support .... $CFG_IPV6IFNAME"
echo "getaddrinfo support .... $CFG_GETADDRINFO" echo "getaddrinfo support .... $CFG_GETADDRINFO"
echo "getifaddrs support ..... $CFG_GETIFADDRS" echo "getifaddrs support ..... $CFG_GETIFADDRS"
@ -6552,13 +6608,7 @@ elif [ "$CFG_OPENGL" = "es2" ]; then
else else
echo "OpenGL support ......... no" echo "OpenGL support ......... no"
fi 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" ]; then
if [ "$CFG_OPENVG_SHIVA" = "yes" ]; then if [ "$CFG_OPENVG_SHIVA" = "yes" ]; then
echo "OpenVG support ......... ShivaVG" echo "OpenVG support ......... ShivaVG"
@ -6614,6 +6664,7 @@ echo "Xrender support ........ $CFG_XRENDER"
if [ "$XPLATFORM_MAEMO" = "yes" ] && [ "$CFG_XCB" = "yes" ]; then if [ "$XPLATFORM_MAEMO" = "yes" ] && [ "$CFG_XCB" = "yes" ]; then
echo "XInput2 support ........ $CFG_XINPUT2" echo "XInput2 support ........ $CFG_XINPUT2"
fi fi
echo "EGLFS support .......... $CFG_EGLFS"
echo echo
# complain about not being able to use dynamic plugins if we are using a static build # 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" [ -f "$outpath/config.status" ] && rm -f "$outpath/config.status"
echo "#!/bin/sh" > "$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 "if [ \"\$#\" -gt 0 ]; then" >> "$outpath/config.status"
echo " $CONFIG_STATUS \"\$@\"" >> "$outpath/config.status" echo " $CONFIG_STATUS \"\$@\"" >> "$outpath/config.status"
echo "else" >> "$outpath/config.status" echo "else" >> "$outpath/config.status"

View File

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

View File

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

View File

@ -7,7 +7,7 @@
# as it's on by default in qcc (and has an analogous -nopipe option) # 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_DEPS += -M
QMAKE_CFLAGS_WARN_ON += -Wall -W QMAKE_CFLAGS_WARN_ON += -Wall -W
QMAKE_CFLAGS_WARN_OFF += -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.script.name): QT += script
!isEmpty(QT.designer.name): QT += designer !isEmpty(QT.designer.name): QT += designer
qt:load(qt) qt:load(qt)

View File

@ -144,7 +144,7 @@ defineTest(installTestHelperApp) {
subPath = $${subInstall}.path subPath = $${subInstall}.path
win32: extension = .exe win32: extension = .exe
$$subTarget = $${2}/$${3}$${extension} $$subTarget = $${2}/$${3}$${extension}
$$subFiles = $${1}$${extension} $$subFiles = $${OUT_PWD}/$${1}$${extension}
$$subPath = $${target.path}/$${2} $$subPath = $${target.path}/$${2}
$$subConfig += no_check_exist executable $$subConfig += no_check_exist executable
INSTALLS += $${subInstall} 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_DOUBLE_CLICK_RADIUS 20
#define QT_GUI_DRAG_DISTANCE 16 #define QT_GUI_DRAG_DISTANCE 16

View File

@ -1,14 +1,6 @@
# #
# qmake configuration for linux-icc # 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 MAKEFILE_GENERATOR = UNIX
TARGET_PLATFORM = unix TARGET_PLATFORM = unix
@ -104,5 +96,5 @@ QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
include(../common/unix.conf) include(../common/linux.conf)
load(qt_config) 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,14 +1187,15 @@ static HB_Error Load_PairSet ( HB_PairSet* ps,
for ( n = 0; n < count; n++ ) for ( n = 0; n < count; n++ )
{ {
for ( m = 0; m < record_size; m++ ) {
if ( ACCESS_Frame( 2L ) ) if ( ACCESS_Frame( 2L ) )
goto Fail; goto Fail;
for ( m = 0; m < record_size; m++ )
*(vr++) = GET_Short(); *(vr++) = GET_Short();
FORGET_Frame(); FORGET_Frame();
} }
}
#endif #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; glyphs[i] = face->buffer->in_string[i].gindex;
attributes[i] = face->tmpAttributes[face->buffer->in_string[i].cluster]; 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) 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; item->num_glyphs = face->buffer->in_length;
if (doLogClusters && face->glyphs_substituted) { 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. // 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 // #### the reconstruction of the logclusters currently does not work if the original string
// contains surrogate pairs // 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) { for (unsigned int i = 0; i < face->buffer->in_length; ++i) {
int ci = face->buffer->in_string[i].cluster; // Get the index into the intermediate string for the start of the cluster of chars
// DEBUG(" ci[%d] = %d mark=%d, cmb=%d, cs=%d", int intermediateIndex = face->buffer->in_string[i].cluster;
// i, ci, glyphAttributes[i].mark, glyphAttributes[i].combiningClass, glyphAttributes[i].clusterStart); if (intermediateIndex != oldIntermediateIndex) {
if (!attributes[i].mark && attributes[i].clusterStart && ci != oldCi) { // We have found the end of the cluster of chars in the intermediate string
for (int j = oldCi; j < ci; j++) while (face->tmpLogClusters[stringIndex] < intermediateIndex) {
logClusters[j] = clusterStart; logClusters[stringIndex++] = clusterStart;
}
clusterStart = i; clusterStart = i;
oldCi = ci; oldIntermediateIndex = intermediateIndex;
} }
} }
for (int j = oldCi; j < face->length; j++) while (stringIndex < face->length) {
logClusters[j] = clusterStart; logClusters[stringIndex++] = clusterStart;
}
} }
// calulate the advances for the shaped glyphs // calulate the advances for the shaped glyphs

View File

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

View File

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

View File

@ -217,14 +217,14 @@ QLibraryInfo::isDebugBuild()
static const struct { static const struct {
char key[14], value[13]; char key[14], value[13];
} qtConfEntries[] = { } qtConfEntries[] = {
{ "Prefix", "" }, { "Prefix", "." },
{ "Documentation", "doc" }, { "Documentation", "doc" },
{ "Headers", "include" }, { "Headers", "include" },
{ "Libraries", "lib" }, { "Libraries", "lib" },
{ "Binaries", "bin" }, { "Binaries", "bin" },
{ "Plugins", "plugins" }, { "Plugins", "plugins" },
{ "Imports", "imports" }, { "Imports", "imports" },
{ "Data", "" }, { "Data", "." },
{ "Translations", "translations" }, { "Translations", "translations" },
{ "Examples", "examples" }, { "Examples", "examples" },
{ "Tests", "tests" }, { "Tests", "tests" },
@ -232,7 +232,7 @@ static const struct {
{ "Sysroot", "" }, { "Sysroot", "" },
{ "HostPrefix", "" }, { "HostPrefix", "" },
{ "HostBinaries", "bin" }, { "HostBinaries", "bin" },
{ "HostData", "" }, { "HostData", "." },
#endif #endif
}; };
@ -295,6 +295,12 @@ QLibraryInfo::rawLocation(LibraryLocation loc)
ret = config->value(key, defaultValue).toString(); 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) // expand environment variables in the form $(ENVVAR)
int rep; int rep;
QRegExp reg_var(QLatin1String("\\$\\(.*\\)")); QRegExp reg_var(QLatin1String("\\$\\(.*\\)"));
@ -309,16 +315,14 @@ QLibraryInfo::rawLocation(LibraryLocation loc)
} }
} }
if (QDir::isRelativePath(ret)) { if (!ret.isEmpty() && QDir::isRelativePath(ret)) {
QString baseDir; QString baseDir;
#ifdef QT_BUILD_QMAKE #ifdef QT_BUILD_QMAKE
if (loc == HostPrefixPath || loc == PrefixPath) { if (loc == HostPrefixPath || loc == PrefixPath || loc == SysrootPath) {
// We make the prefix path absolute to the executable's directory. // 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 == 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(); baseDir = QFileInfo(qmake_libraryInfoFile()).absolutePath();
} else if (loc == SysrootPath) {
// The sysroot is bare
return ret;
} else if (loc > SysrootPath && loc <= LastHostPath) { } else if (loc > SysrootPath && loc <= LastHostPath) {
// We make any other host path absolute to the host prefix directory. // We make any other host path absolute to the host prefix directory.
baseDir = rawLocation(HostPrefixPath); 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); int reportMode = _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW);
_CrtSetReportMode(_CRT_ERROR, reportMode); _CrtSetReportMode(_CRT_ERROR, reportMode);
#if !defined(Q_OS_WINCE) #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 #else
int ret = _CrtDbgReportW(_CRT_ERROR, _CRT_WIDE(__FILE__), int ret = _CrtDbgReportW(_CRT_ERROR, _CRT_WIDE(context.file),
__LINE__, _CRT_WIDE(QT_VERSION_STR), context.line, _CRT_WIDE(QT_VERSION_STR),
reinterpret_cast<const wchar_t *> ( reinterpret_cast<const wchar_t *> (
QString::fromLatin1(buf).utf16())); QString::fromLatin1(buf).utf16()));
#endif #endif

View File

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

View File

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

View File

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

View File

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

View File

@ -241,14 +241,6 @@ bool Entry::operator ==(const QString &key) const
return (shallowKey() == key); 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 bool Entry::operator ==(const Entry &other) const
{ {
if (value.latinKey) { if (value.latinKey) {

View File

@ -620,15 +620,24 @@ public:
bool operator ==(const QString &key) const; bool operator ==(const QString &key) const;
inline bool operator !=(const QString &key) const { return !operator ==(key); } 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;
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) inline bool operator <(const QString &key, const Entry &e)
{ return e >= key; } { return e >= key; }
class Header { class Header {
public: public:
qle_uint tag; // 'qbjs' qle_uint tag; // 'qbjs'
@ -735,7 +744,15 @@ public:
Data *clone(Base *b, int reserve = 0) 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); char *raw = (char *)malloc(size);
Q_CHECK_PTR(raw); Q_CHECK_PTR(raw);
memcpy(raw + sizeof(Header), b, b->size); memcpy(raw + sizeof(Header), b, b->size);

View File

@ -75,6 +75,7 @@ public:
KeyRelease = 7, // key released KeyRelease = 7, // key released
FocusIn = 8, // keyboard focus received FocusIn = 8, // keyboard focus received
FocusOut = 9, // keyboard focus lost FocusOut = 9, // keyboard focus lost
FocusAboutToChange = 23, // keyboard focus is about to be lost
Enter = 10, // mouse enters widget Enter = 10, // mouse enters widget
Leave = 11, // mouse leaves widget Leave = 11, // mouse leaves widget
Paint = 12, // paint 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) { if (!sender || !signal || !slotObj || !senderMetaObject) {
qWarning("QObject::connect: invalid null parametter"); qWarning("QObject::connect: invalid null parametter");
if (slotObj && !slotObj->ref.deref())
delete slotObj;
return QMetaObject::Connection(); return QMetaObject::Connection();
} }
int signal_index = -1; int signal_index = -1;
@ -4098,6 +4100,8 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa
senderMetaObject->static_metacall(QMetaObject::IndexOfMethod, 0, args); senderMetaObject->static_metacall(QMetaObject::IndexOfMethod, 0, args);
if (signal_index < 0 || signal_index >= QMetaObjectPrivate::get(senderMetaObject)->signalCount) { if (signal_index < 0 || signal_index >= QMetaObjectPrivate::get(senderMetaObject)->signalCount) {
qWarning("QObject::connect: signal not found in %s", senderMetaObject->className()); qWarning("QObject::connect: signal not found in %s", senderMetaObject->className());
if (!slotObj->ref.deref())
delete slotObj;
return QMetaObject::Connection(0); return QMetaObject::Connection(0);
} }
int signalOffset, methodOffset; int signalOffset, methodOffset;
@ -4117,8 +4121,11 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa
(*connectionLists)[signal_index].first; (*connectionLists)[signal_index].first;
while (c2) { 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(); return QMetaObject::Connection();
}
c2 = c2->nextConnectionList; c2 = c2->nextConnectionList;
} }
} }

View File

@ -282,7 +282,8 @@ QString QMimeType::comment() const
QStringList languageList; QStringList languageList;
languageList << QLocale::system().name(); languageList << QLocale::system().name();
languageList << QLocale::system().uiLanguages(); 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); const QString comm = d->localeComments.value(lang);
if (!comm.isEmpty()) if (!comm.isEmpty())
return comm; return comm;

View File

@ -46,13 +46,6 @@
#include "qglobal.h" #include "qglobal.h"
#ifndef QT_NO_SYSTEMLOCALE
QT_BEGIN_NAMESPACE
class QSystemLocale;
static QSystemLocale *QSystemLocale_globalSystemLocale();
QT_END_NAMESPACE
#endif
#include "qplatformdefs.h" #include "qplatformdefs.h"
#include "qdatastream.h" #include "qdatastream.h"
@ -78,7 +71,13 @@ QT_BEGIN_NAMESPACE
#ifndef QT_NO_SYSTEMLOCALE #ifndef QT_NO_SYSTEMLOCALE
static QSystemLocale *_systemLocale = 0; 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; static QLocalePrivate *system_lp = 0;
Q_GLOBAL_STATIC(QLocalePrivate, globalLocalePrivate) Q_GLOBAL_STATIC(QLocalePrivate, globalLocalePrivate)
#endif #endif

View File

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

View File

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

View File

@ -320,12 +320,6 @@ static inline uint detectProcessorFeatures()
return features; return features;
} }
#elif defined(__ia64__)
static inline uint detectProcessorFeatures()
{
return MMX|SSE|SSE2;
}
#else #else
static inline uint detectProcessorFeatures() 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, static inline bool qt_starts_with(const QChar *haystack, int haystackLen,
const QChar *needle, int needleLen, Qt::CaseSensitivity cs); const QChar *needle, int needleLen, Qt::CaseSensitivity cs);
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);
static inline bool qt_ends_with(const QChar *haystack, int haystackLen, static inline bool qt_ends_with(const QChar *haystack, int haystackLen,
const QChar *needle, int needleLen, Qt::CaseSensitivity cs); const QChar *needle, int needleLen, Qt::CaseSensitivity cs);
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);
// Unicode case-insensitive comparison // Unicode case-insensitive comparison
static int ucstricmp(const ushort *a, const ushort *ae, const ushort *b, const ushort *be) 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 int QString::lastIndexOf(QChar ch, int from, Qt::CaseSensitivity cs) const
{ {
return qt_last_index_of(unicode(), size(), ch, from, cs); return qt_last_index_of(unicode(), size(), ch, from, cs);
} }
/*! /*!
\since 4.8 \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, static inline bool qt_starts_with(const QChar *haystack, int haystackLen,
const QLatin1String &needle, Qt::CaseSensitivity cs) QLatin1String needle, Qt::CaseSensitivity cs)
{ {
if (!haystack) if (!haystack)
return !needle.latin1(); 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, static inline bool qt_ends_with(const QChar *haystack, int haystackLen,
const QLatin1String &needle, Qt::CaseSensitivity cs) QLatin1String needle, Qt::CaseSensitivity cs)
{ {
if (!haystack) if (!haystack)
return !needle.latin1(); return !needle.latin1();

View File

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

View File

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

View File

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

View File

@ -145,7 +145,9 @@ public:
ParentChanged = 0x800F, ParentChanged = 0x800F,
HelpChanged = 0x80A0, HelpChanged = 0x80A0,
DefaultActionChanged = 0x80B0, DefaultActionChanged = 0x80B0,
AcceleratorChanged = 0x80C0 AcceleratorChanged = 0x80C0,
InvalidEvent
}; };
// 64 bit enums seem hard on some platforms (windows...) // 64 bit enums seem hard on some platforms (windows...)
@ -432,10 +434,19 @@ class Q_GUI_EXPORT QAccessibleEvent
{ {
Q_DISABLE_COPY(QAccessibleEvent) Q_DISABLE_COPY(QAccessibleEvent)
public: public:
inline QAccessibleEvent(QAccessible::Event typ, QObject *obj, int chld = -1) inline QAccessibleEvent(QObject *obj, QAccessible::Event typ)
: m_type(typ), m_object(obj), m_child(chld) : m_type(typ), m_object(obj), m_child(-1)
{ {
Q_ASSERT(obj); 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() virtual ~QAccessibleEvent()
@ -443,12 +454,13 @@ public:
QAccessible::Event type() const { return m_type; } QAccessible::Event type() const { return m_type; }
QObject *object() const { return m_object; } QObject *object() const { return m_object; }
void setChild(int chld) { m_child = chld; }
int child() const { return m_child; } int child() const { return m_child; }
QAccessibleInterface *accessibleInterface() const; QAccessibleInterface *accessibleInterface() const;
protected: protected:
QAccessible::Event m_type; QAccessible::Event m_type;
QObject *m_object; QObject *m_object;
int m_child; int m_child;
@ -457,9 +469,11 @@ protected:
class Q_GUI_EXPORT QAccessibleStateChangeEvent :public QAccessibleEvent class Q_GUI_EXPORT QAccessibleStateChangeEvent :public QAccessibleEvent
{ {
public: public:
inline QAccessibleStateChangeEvent(QAccessible::State state, QObject *obj, int chld = -1) inline QAccessibleStateChangeEvent(QObject *obj, QAccessible::State state)
: QAccessibleEvent(QAccessible::StateChanged, obj, chld), m_changedStates(state) : QAccessibleEvent(obj, QAccessible::InvalidEvent), m_changedStates(state)
{} {
m_type = QAccessible::StateChanged;
}
QAccessible::State changedStates() const { QAccessible::State changedStates() const {
return m_changedStates; return m_changedStates;
@ -469,6 +483,133 @@ protected:
QAccessible::State m_changedStates; 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" #define QAccessibleInterface_iid "org.qt-project.Qt.QAccessibleInterface"
Q_DECLARE_INTERFACE(QAccessibleInterface, QAccessibleInterface_iid) Q_DECLARE_INTERFACE(QAccessibleInterface, QAccessibleInterface_iid)

View File

@ -152,3 +152,23 @@ win32:!contains(QT_CONFIG, directwrite) {
ssse3: SOURCES += $$SSSE3_SOURCES ssse3: SOURCES += $$SSSE3_SOURCES
iwmmxt: SOURCES += $$IWMMXT_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 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. 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) 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. 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. The string can be used within the editor to trigger code that reacts on text changes such as validators.
\deprecated
\sa setTentativeCommitString() \sa setTentativeCommitString()
*/ */

View File

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

View File

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

View File

@ -215,7 +215,7 @@ void QInputMethod::hide()
\sa show(), hide() \sa show(), hide()
*/ */
bool QInputMethod::visible() const bool QInputMethod::isVisible() const
{ {
Q_D(const QInputMethod); Q_D(const QInputMethod);
QPlatformInputContext *ic = d->platformInputContext(); 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(QObject *inputItem READ inputItem WRITE setInputItem NOTIFY inputItemChanged)
Q_PROPERTY(QRectF cursorRectangle READ cursorRectangle NOTIFY cursorRectangleChanged) Q_PROPERTY(QRectF cursorRectangle READ cursorRectangle NOTIFY cursorRectangleChanged)
Q_PROPERTY(QRectF keyboardRectangle READ keyboardRectangle NOTIFY keyboardRectangleChanged) 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(bool animating READ isAnimating NOTIFY animatingChanged)
Q_PROPERTY(QLocale locale READ locale NOTIFY localeChanged) Q_PROPERTY(QLocale locale READ locale NOTIFY localeChanged)
Q_PROPERTY(Qt::LayoutDirection inputDirection READ inputDirection NOTIFY inputDirectionChanged) Q_PROPERTY(Qt::LayoutDirection inputDirection READ inputDirection NOTIFY inputDirectionChanged)
@ -89,7 +89,11 @@ public:
ContextMenu 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); void setVisible(bool visible);
bool isAnimating() const; bool isAnimating() const;

View File

@ -524,6 +524,7 @@ QPalette::QPalette()
} else { } else {
init(); init();
qt_palette_from_color(*this, Qt::black); 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 \warning In general, grabbing an area outside the screen is not
safe. This depends on the underlying window system. 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 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 \property QWindow::visible
\brief whether the window is visible or not \brief whether the window is visible or not
\since 5.0
This property controls the visibility of the window in the windowing system. This property controls the visibility of the window in the windowing system.
@ -496,7 +495,6 @@ Qt::WindowType QWindow::windowType() const
/*! /*!
\property QWindow::windowTitle \property QWindow::windowTitle
\brief the window's title in the windowing system \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, 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 depending on the windowing system and the window flags. It might also
@ -625,7 +623,6 @@ bool QWindow::isActive() const
/*! /*!
\property QWindow::contentOrientation \property QWindow::contentOrientation
\since 5.0
\brief the orientation of the window's contents \brief the orientation of the window's contents
This is a hint to the window manager in case it needs to display 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 \property QWindow::x
\since 5.0
\brief the x position of the window's geometry \brief the x position of the window's geometry
*/ */
/*! /*!
\property QWindow::y \property QWindow::y
\since 5.0
\brief the y position of the window's geometry \brief the y position of the window's geometry
*/ */
/*! /*!
\property QWindow::width \property QWindow::width
\since 5.0
\brief the width of the window's geometry \brief the width of the window's geometry
*/ */
/*! /*!
\property QWindow::height \property QWindow::height
\since 5.0
\brief the height of the window's geometry \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) 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); 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) 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_HEADERS += painting/qdrawhelper_neon_p.h
NEON_ASM += ../3rdparty/pixman/pixman-arm-neon-asm.S painting/qdrawhelper_neon_asm.S 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) include($$PWD/../../3rdparty/zlib_dependency.pri)

View File

@ -47,6 +47,9 @@
#include <private/qdrawhelper_arm_simd_p.h> #include <private/qdrawhelper_arm_simd_p.h>
#endif #endif
#include <private/qdrawhelper_neon_p.h> #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 <private/qmath_p.h>
#include <qmath.h> #include <qmath.h>
@ -55,18 +58,6 @@ QT_BEGIN_NAMESPACE
#define MASK(src, a) src = BYTE_MUL(src, a) #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 constants and structures
*/ */
@ -6057,6 +6048,22 @@ void qInitDrawhelperAsm()
} }
#endif #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) { if (functionForModeSolidAsm) {
const int destinationMode = QPainter::CompositionMode_Destination; const int destinationMode = QPainter::CompositionMode_Destination;
functionForModeSolidAsm[destinationMode] = functionForModeSolid_C[destinationMode]; 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/ ** 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$ ** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage ** GNU Lesser General Public License Usage
@ -39,61 +39,40 @@
** **
****************************************************************************/ ****************************************************************************/
/* #ifndef QDRAWHELPER_MIPS_P_H
pagegenerator.h #define QDRAWHELPER_MIPS_P_H
*/
#ifndef PAGEGENERATOR_H #include <private/qdrawhelper_p.h>
#define PAGEGENERATOR_H
#include <QStack>
#include <qtextstream.h>
#include "generator.h"
#include "location.h"
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QTextCodec; #if defined(QT_HAVE_MIPS_DSP)
class ClassNode;
class InnerNode;
class NamespaceNode;
class NameCollisionNode;
class PageGenerator : public Generator extern "C" void qt_memfill32_asm_mips_dsp(quint32 *dest, quint32 value, int count);
{
public:
PageGenerator();
~PageGenerator();
virtual void generateTree(const Tree *tree); extern "C" void comp_func_SourceOver_asm_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha);
virtual void generateDisambiguationPages() { }
protected: void qt_blend_argb32_on_argb32_mips_dsp(uchar *destPixels, int dbpl,
virtual QString fileBase(const Node* node) const; const uchar *srcPixels, int sbpl,
virtual QString fileExtension(const Node* node) const = 0; int w, int h,
QString fileName(const Node* node) const; int const_alpha);
QString outFileName();
virtual void beginSubPage(const InnerNode* node, const QString& fileName);
virtual void endSubPage();
virtual void generateInnerNode(const InnerNode *node);
QTextStream& out();
QString naturalLanguage; void qt_blend_rgb32_on_rgb32_mips_dsp(uchar *destPixels, int dbpl,
QString outputEncoding; const uchar *srcPixels, int sbpl,
QTextCodec* outputCodec; int w, int h,
bool parseArg(const QString& src, int const_alpha);
const QString& tag,
int* pos,
int n,
QStringRef* contents,
QStringRef* par1 = 0,
bool debug = false);
protected: void comp_func_Source_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha);
QStack<QTextStream*> outStreamStack;
QList<NameCollisionNode*> collisionNodes; 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 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 { } else {
for (int i=0; i<pointCount; ++i) { 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); QVectorPath path(pts, 2, 0);
stroke(path, pen); stroke(path, pen);
} }

View File

@ -2399,7 +2399,7 @@ QDataStream &operator>>(QDataStream &s, QPainterPath &p)
#endif #endif
continue; 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); p.d_func()->elements.append(elm);
} }
s >> p.d_func()->cStart; 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 QT_END_NAMESPACE

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