Merge remote-tracking branch 'origin/5.8' into 5.9
Conflicts: src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp src/platformsupport/fontdatabases/freetype/qfreetypefontdatabase.cpp src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp src/widgets/widgets/qtabbar.cpp Change-Id: Iaa9daee5f7a6490d56257a3824730a35751ceb05
This commit is contained in:
commit
0fc569184c
@ -1,3 +0,0 @@
|
|||||||
TEMPLATE = app
|
|
||||||
CONFIG -= c++11 c++14 c++1z
|
|
||||||
SOURCES = c++98default.cpp
|
|
@ -247,11 +247,6 @@
|
|||||||
"type": "compile",
|
"type": "compile",
|
||||||
"test": "common/c++1z"
|
"test": "common/c++1z"
|
||||||
},
|
},
|
||||||
"cxx11default": {
|
|
||||||
"label": "compiler defaulting to C++11 or higher",
|
|
||||||
"type": "compile",
|
|
||||||
"test": "common/c++98default"
|
|
||||||
},
|
|
||||||
"precompile_header": {
|
"precompile_header": {
|
||||||
"label": "precompiled header support",
|
"label": "precompiled header support",
|
||||||
"type": "compile",
|
"type": "compile",
|
||||||
@ -469,11 +464,6 @@
|
|||||||
"condition": "call.crossCompile",
|
"condition": "call.crossCompile",
|
||||||
"output": [ "publicConfig", "privateConfig", "publicFeature", "crossCompile" ]
|
"output": [ "publicConfig", "privateConfig", "publicFeature", "crossCompile" ]
|
||||||
},
|
},
|
||||||
"cxx11default": {
|
|
||||||
"label": "Compiler defaults to C++11 or higher",
|
|
||||||
"condition": "!tests.cxx11default",
|
|
||||||
"output": [ { "type": "publicConfig", "name": "c++11" } ]
|
|
||||||
},
|
|
||||||
"compiler-flags": {
|
"compiler-flags": {
|
||||||
"output": [ "compilerFlags" ]
|
"output": [ "compilerFlags" ]
|
||||||
},
|
},
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
// Keep this file small. The pre-processed contents are eval'd by qmake.
|
// Keep this file small. The pre-processed contents are eval'd by qmake.
|
||||||
|
QT_COMPILER_STDCXX = __cplusplus
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
QMAKE_MSC_VER = _MSC_VER
|
QMAKE_MSC_VER = _MSC_VER
|
||||||
QMAKE_MSC_FULL_VER = _MSC_FULL_VER
|
QMAKE_MSC_FULL_VER = _MSC_FULL_VER
|
||||||
|
@ -100,6 +100,11 @@ breakpad {
|
|||||||
!isEmpty(QMAKE_STRIP):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote($$QMAKE_STRIP $$DEBUGFILENAME)
|
!isEmpty(QMAKE_STRIP):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote($$QMAKE_STRIP $$DEBUGFILENAME)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
!c++11:!c++14:!c++1z {
|
||||||
|
# Qt requires C++11 since 5.7, check if we need to force a compiler option
|
||||||
|
QT_COMPILER_STDCXX_no_L = $$replace(QT_COMPILER_STDCXX, "L$", "")
|
||||||
|
!greaterThan(QT_COMPILER_STDCXX_no_L, 199711): CONFIG += c++11
|
||||||
|
}
|
||||||
c++11|c++14|c++1z {
|
c++11|c++14|c++1z {
|
||||||
# Disable special compiler flags for host builds
|
# Disable special compiler flags for host builds
|
||||||
!host_build|!cross_compile {
|
!host_build|!cross_compile {
|
||||||
|
@ -137,6 +137,7 @@ unset(target_prefix)
|
|||||||
|
|
||||||
# Populate QMAKE_COMPILER_DEFINES and some compatibility variables.
|
# Populate QMAKE_COMPILER_DEFINES and some compatibility variables.
|
||||||
# The $$format_number() calls strip leading zeros to avoid misinterpretation as octal.
|
# The $$format_number() calls strip leading zeros to avoid misinterpretation as octal.
|
||||||
|
QMAKE_COMPILER_DEFINES += __cplusplus=$$QT_COMPILER_STDCXX
|
||||||
!isEmpty(QMAKE_MSC_VER) {
|
!isEmpty(QMAKE_MSC_VER) {
|
||||||
QMAKE_COMPILER_DEFINES += _MSC_VER=$$QMAKE_MSC_VER _MSC_FULL_VER=$$QMAKE_MSC_FULL_VER
|
QMAKE_COMPILER_DEFINES += _MSC_VER=$$QMAKE_MSC_VER _MSC_FULL_VER=$$QMAKE_MSC_FULL_VER
|
||||||
QT_MSVC_MAJOR_VERSION = $$replace(QMAKE_MSC_FULL_VER, "(..)(..)(.*)", "\\1")
|
QT_MSVC_MAJOR_VERSION = $$replace(QMAKE_MSC_FULL_VER, "(..)(..)(.*)", "\\1")
|
||||||
|
24
mkspecs/linux-aarch64-gnu-g++/qmake.conf
Normal file
24
mkspecs/linux-aarch64-gnu-g++/qmake.conf
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#
|
||||||
|
# qmake configuration for building with aarch64-linux-gnu-g++
|
||||||
|
#
|
||||||
|
|
||||||
|
MAKEFILE_GENERATOR = UNIX
|
||||||
|
CONFIG += incremental
|
||||||
|
QMAKE_INCREMENTAL_STYLE = sublib
|
||||||
|
|
||||||
|
include(../common/linux.conf)
|
||||||
|
include(../common/gcc-base-unix.conf)
|
||||||
|
include(../common/g++-unix.conf)
|
||||||
|
|
||||||
|
# modifications to g++.conf
|
||||||
|
QMAKE_CC = aarch64-linux-gnu-gcc
|
||||||
|
QMAKE_CXX = aarch64-linux-gnu-g++
|
||||||
|
QMAKE_LINK = aarch64-linux-gnu-g++
|
||||||
|
QMAKE_LINK_SHLIB = aarch64-linux-gnu-g++
|
||||||
|
|
||||||
|
# modifications to linux.conf
|
||||||
|
QMAKE_AR = aarch64-linux-gnu-ar cqs
|
||||||
|
QMAKE_OBJCOPY = aarch64-linux-gnu-objcopy
|
||||||
|
QMAKE_NM = aarch64-linux-gnu-nm -P
|
||||||
|
QMAKE_STRIP = aarch64-linux-gnu-strip
|
||||||
|
load(qt_config)
|
@ -1,9 +1,9 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2016 The Qt Company Ltd.
|
** Copyright (C) 2017 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the configuration of the Qt Toolkit.
|
** This file is part of the qmake spec of the Qt Toolkit.
|
||||||
**
|
**
|
||||||
** $QT_BEGIN_LICENSE:LGPL$
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
** Commercial License Usage
|
** Commercial License Usage
|
||||||
@ -37,8 +37,4 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#if __cplusplus < 201103L
|
#include "../linux-g++/qplatformdefs.h"
|
||||||
#error "compiler does not use c++11 or higher by default"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int main(int, char **) {}
|
|
@ -103,7 +103,7 @@ template <typename T, typename Class>
|
|||||||
class StoredMemberFunctionCall0 : public RunFunctionTask<T>
|
class StoredMemberFunctionCall0 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoredMemberFunctionCall0(T (Class::*_fn)() , const Class &_object)
|
StoredMemberFunctionCall0(T (Class::*_fn)(), const Class &_object)
|
||||||
: fn(_fn), object(_object){ }
|
: fn(_fn), object(_object){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -119,7 +119,7 @@ template <typename T, typename Class>
|
|||||||
class VoidStoredMemberFunctionCall0 : public RunFunctionTask<T>
|
class VoidStoredMemberFunctionCall0 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VoidStoredMemberFunctionCall0(T (Class::*_fn)() , const Class &_object)
|
VoidStoredMemberFunctionCall0(T (Class::*_fn)(), const Class &_object)
|
||||||
: fn(_fn), object(_object){ }
|
: fn(_fn), object(_object){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -150,7 +150,7 @@ public:
|
|||||||
this->result = (object.*fn)();
|
this->result = (object.*fn)();
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)()const;
|
T (Class::*fn)() const;
|
||||||
const Class object;
|
const Class object;
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -166,7 +166,7 @@ public:
|
|||||||
(object.*fn)();
|
(object.*fn)();
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)()const;
|
T (Class::*fn)() const;
|
||||||
const Class object;
|
const Class object;
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -181,7 +181,7 @@ template <typename T, typename Class>
|
|||||||
class StoredMemberFunctionPointerCall0 : public RunFunctionTask<T>
|
class StoredMemberFunctionPointerCall0 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoredMemberFunctionPointerCall0(T (Class::*_fn)() , Class *_object)
|
StoredMemberFunctionPointerCall0(T (Class::*_fn)(), Class *_object)
|
||||||
: fn(_fn), object(_object){ }
|
: fn(_fn), object(_object){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -197,7 +197,7 @@ template <typename T, typename Class>
|
|||||||
class VoidStoredMemberFunctionPointerCall0 : public RunFunctionTask<T>
|
class VoidStoredMemberFunctionPointerCall0 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VoidStoredMemberFunctionPointerCall0(T (Class::*_fn)() , Class *_object)
|
VoidStoredMemberFunctionPointerCall0(T (Class::*_fn)(), Class *_object)
|
||||||
: fn(_fn), object(_object){ }
|
: fn(_fn), object(_object){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -228,7 +228,7 @@ public:
|
|||||||
this->result = (object->*fn)();
|
this->result = (object->*fn)();
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)()const;
|
T (Class::*fn)() const;
|
||||||
Class const *object;
|
Class const *object;
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -244,7 +244,7 @@ public:
|
|||||||
(object->*fn)();
|
(object->*fn)();
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)()const;
|
T (Class::*fn)() const;
|
||||||
Class const *object;
|
Class const *object;
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -306,7 +306,7 @@ template <typename T, typename Class, typename Param1, typename Arg1>
|
|||||||
class StoredMemberFunctionCall1 : public RunFunctionTask<T>
|
class StoredMemberFunctionCall1 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoredMemberFunctionCall1(T (Class::*_fn)(Param1) , const Class &_object, const Arg1 &_arg1)
|
StoredMemberFunctionCall1(T (Class::*_fn)(Param1), const Class &_object, const Arg1 &_arg1)
|
||||||
: fn(_fn), object(_object), arg1(_arg1){ }
|
: fn(_fn), object(_object), arg1(_arg1){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -322,7 +322,7 @@ template <typename T, typename Class, typename Param1, typename Arg1>
|
|||||||
class VoidStoredMemberFunctionCall1 : public RunFunctionTask<T>
|
class VoidStoredMemberFunctionCall1 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VoidStoredMemberFunctionCall1(T (Class::*_fn)(Param1) , const Class &_object, const Arg1 &_arg1)
|
VoidStoredMemberFunctionCall1(T (Class::*_fn)(Param1), const Class &_object, const Arg1 &_arg1)
|
||||||
: fn(_fn), object(_object), arg1(_arg1){ }
|
: fn(_fn), object(_object), arg1(_arg1){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -353,7 +353,7 @@ public:
|
|||||||
this->result = (object.*fn)(arg1);
|
this->result = (object.*fn)(arg1);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1)const;
|
T (Class::*fn)(Param1) const;
|
||||||
const Class object;
|
const Class object;
|
||||||
Arg1 arg1;
|
Arg1 arg1;
|
||||||
};
|
};
|
||||||
@ -369,7 +369,7 @@ public:
|
|||||||
(object.*fn)(arg1);
|
(object.*fn)(arg1);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1)const;
|
T (Class::*fn)(Param1) const;
|
||||||
const Class object;
|
const Class object;
|
||||||
Arg1 arg1;
|
Arg1 arg1;
|
||||||
};
|
};
|
||||||
@ -384,7 +384,7 @@ template <typename T, typename Class, typename Param1, typename Arg1>
|
|||||||
class StoredMemberFunctionPointerCall1 : public RunFunctionTask<T>
|
class StoredMemberFunctionPointerCall1 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoredMemberFunctionPointerCall1(T (Class::*_fn)(Param1) , Class *_object, const Arg1 &_arg1)
|
StoredMemberFunctionPointerCall1(T (Class::*_fn)(Param1), Class *_object, const Arg1 &_arg1)
|
||||||
: fn(_fn), object(_object), arg1(_arg1){ }
|
: fn(_fn), object(_object), arg1(_arg1){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -400,7 +400,7 @@ template <typename T, typename Class, typename Param1, typename Arg1>
|
|||||||
class VoidStoredMemberFunctionPointerCall1 : public RunFunctionTask<T>
|
class VoidStoredMemberFunctionPointerCall1 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VoidStoredMemberFunctionPointerCall1(T (Class::*_fn)(Param1) , Class *_object, const Arg1 &_arg1)
|
VoidStoredMemberFunctionPointerCall1(T (Class::*_fn)(Param1), Class *_object, const Arg1 &_arg1)
|
||||||
: fn(_fn), object(_object), arg1(_arg1){ }
|
: fn(_fn), object(_object), arg1(_arg1){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -431,7 +431,7 @@ public:
|
|||||||
this->result = (object->*fn)(arg1);
|
this->result = (object->*fn)(arg1);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1)const;
|
T (Class::*fn)(Param1) const;
|
||||||
Class const *object;
|
Class const *object;
|
||||||
Arg1 arg1;
|
Arg1 arg1;
|
||||||
};
|
};
|
||||||
@ -447,7 +447,7 @@ public:
|
|||||||
(object->*fn)(arg1);
|
(object->*fn)(arg1);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1)const;
|
T (Class::*fn)(Param1) const;
|
||||||
Class const *object;
|
Class const *object;
|
||||||
Arg1 arg1;
|
Arg1 arg1;
|
||||||
};
|
};
|
||||||
@ -492,7 +492,7 @@ template <typename T, typename FunctionPointer, typename Arg1, typename Arg2>
|
|||||||
struct VoidStoredFunctorPointerCall2: public RunFunctionTask<T>
|
struct VoidStoredFunctorPointerCall2: public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
inline VoidStoredFunctorPointerCall2(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2)
|
inline VoidStoredFunctorPointerCall2(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2)
|
||||||
: function(_function), arg1(_arg1), arg2(_arg2) {}
|
: function(_function), arg1(_arg1), arg2(_arg2) {}
|
||||||
void runFunctor() override { (*function)(arg1, arg2); }
|
void runFunctor() override { (*function)(arg1, arg2); }
|
||||||
FunctionPointer * function;
|
FunctionPointer * function;
|
||||||
Arg1 arg1; Arg2 arg2;
|
Arg1 arg1; Arg2 arg2;
|
||||||
@ -509,7 +509,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class StoredMemberFunctionCall2 : public RunFunctionTask<T>
|
class StoredMemberFunctionCall2 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoredMemberFunctionCall2(T (Class::*_fn)(Param1, Param2) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2)
|
StoredMemberFunctionCall2(T (Class::*_fn)(Param1, Param2), const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -525,7 +525,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class VoidStoredMemberFunctionCall2 : public RunFunctionTask<T>
|
class VoidStoredMemberFunctionCall2 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VoidStoredMemberFunctionCall2(T (Class::*_fn)(Param1, Param2) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2)
|
VoidStoredMemberFunctionCall2(T (Class::*_fn)(Param1, Param2), const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -556,7 +556,7 @@ public:
|
|||||||
this->result = (object.*fn)(arg1, arg2);
|
this->result = (object.*fn)(arg1, arg2);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2)const;
|
T (Class::*fn)(Param1, Param2) const;
|
||||||
const Class object;
|
const Class object;
|
||||||
Arg1 arg1; Arg2 arg2;
|
Arg1 arg1; Arg2 arg2;
|
||||||
};
|
};
|
||||||
@ -572,7 +572,7 @@ public:
|
|||||||
(object.*fn)(arg1, arg2);
|
(object.*fn)(arg1, arg2);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2)const;
|
T (Class::*fn)(Param1, Param2) const;
|
||||||
const Class object;
|
const Class object;
|
||||||
Arg1 arg1; Arg2 arg2;
|
Arg1 arg1; Arg2 arg2;
|
||||||
};
|
};
|
||||||
@ -587,7 +587,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class StoredMemberFunctionPointerCall2 : public RunFunctionTask<T>
|
class StoredMemberFunctionPointerCall2 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoredMemberFunctionPointerCall2(T (Class::*_fn)(Param1, Param2) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2)
|
StoredMemberFunctionPointerCall2(T (Class::*_fn)(Param1, Param2), Class *_object, const Arg1 &_arg1, const Arg2 &_arg2)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -603,7 +603,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class VoidStoredMemberFunctionPointerCall2 : public RunFunctionTask<T>
|
class VoidStoredMemberFunctionPointerCall2 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VoidStoredMemberFunctionPointerCall2(T (Class::*_fn)(Param1, Param2) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2)
|
VoidStoredMemberFunctionPointerCall2(T (Class::*_fn)(Param1, Param2), Class *_object, const Arg1 &_arg1, const Arg2 &_arg2)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -634,7 +634,7 @@ public:
|
|||||||
this->result = (object->*fn)(arg1, arg2);
|
this->result = (object->*fn)(arg1, arg2);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2)const;
|
T (Class::*fn)(Param1, Param2) const;
|
||||||
Class const *object;
|
Class const *object;
|
||||||
Arg1 arg1; Arg2 arg2;
|
Arg1 arg1; Arg2 arg2;
|
||||||
};
|
};
|
||||||
@ -650,7 +650,7 @@ public:
|
|||||||
(object->*fn)(arg1, arg2);
|
(object->*fn)(arg1, arg2);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2)const;
|
T (Class::*fn)(Param1, Param2) const;
|
||||||
Class const *object;
|
Class const *object;
|
||||||
Arg1 arg1; Arg2 arg2;
|
Arg1 arg1; Arg2 arg2;
|
||||||
};
|
};
|
||||||
@ -712,7 +712,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class StoredMemberFunctionCall3 : public RunFunctionTask<T>
|
class StoredMemberFunctionCall3 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoredMemberFunctionCall3(T (Class::*_fn)(Param1, Param2, Param3) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
|
StoredMemberFunctionCall3(T (Class::*_fn)(Param1, Param2, Param3), const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -728,7 +728,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class VoidStoredMemberFunctionCall3 : public RunFunctionTask<T>
|
class VoidStoredMemberFunctionCall3 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VoidStoredMemberFunctionCall3(T (Class::*_fn)(Param1, Param2, Param3) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
|
VoidStoredMemberFunctionCall3(T (Class::*_fn)(Param1, Param2, Param3), const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -759,7 +759,7 @@ public:
|
|||||||
this->result = (object.*fn)(arg1, arg2, arg3);
|
this->result = (object.*fn)(arg1, arg2, arg3);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2, Param3)const;
|
T (Class::*fn)(Param1, Param2, Param3) const;
|
||||||
const Class object;
|
const Class object;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3;
|
||||||
};
|
};
|
||||||
@ -775,7 +775,7 @@ public:
|
|||||||
(object.*fn)(arg1, arg2, arg3);
|
(object.*fn)(arg1, arg2, arg3);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2, Param3)const;
|
T (Class::*fn)(Param1, Param2, Param3) const;
|
||||||
const Class object;
|
const Class object;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3;
|
||||||
};
|
};
|
||||||
@ -790,7 +790,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class StoredMemberFunctionPointerCall3 : public RunFunctionTask<T>
|
class StoredMemberFunctionPointerCall3 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoredMemberFunctionPointerCall3(T (Class::*_fn)(Param1, Param2, Param3) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
|
StoredMemberFunctionPointerCall3(T (Class::*_fn)(Param1, Param2, Param3), Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -806,7 +806,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class VoidStoredMemberFunctionPointerCall3 : public RunFunctionTask<T>
|
class VoidStoredMemberFunctionPointerCall3 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VoidStoredMemberFunctionPointerCall3(T (Class::*_fn)(Param1, Param2, Param3) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
|
VoidStoredMemberFunctionPointerCall3(T (Class::*_fn)(Param1, Param2, Param3), Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -837,7 +837,7 @@ public:
|
|||||||
this->result = (object->*fn)(arg1, arg2, arg3);
|
this->result = (object->*fn)(arg1, arg2, arg3);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2, Param3)const;
|
T (Class::*fn)(Param1, Param2, Param3) const;
|
||||||
Class const *object;
|
Class const *object;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3;
|
||||||
};
|
};
|
||||||
@ -853,7 +853,7 @@ public:
|
|||||||
(object->*fn)(arg1, arg2, arg3);
|
(object->*fn)(arg1, arg2, arg3);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2, Param3)const;
|
T (Class::*fn)(Param1, Param2, Param3) const;
|
||||||
Class const *object;
|
Class const *object;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3;
|
||||||
};
|
};
|
||||||
@ -915,7 +915,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class StoredMemberFunctionCall4 : public RunFunctionTask<T>
|
class StoredMemberFunctionCall4 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoredMemberFunctionCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
|
StoredMemberFunctionCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4), const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -931,7 +931,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class VoidStoredMemberFunctionCall4 : public RunFunctionTask<T>
|
class VoidStoredMemberFunctionCall4 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VoidStoredMemberFunctionCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
|
VoidStoredMemberFunctionCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4), const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -962,7 +962,7 @@ public:
|
|||||||
this->result = (object.*fn)(arg1, arg2, arg3, arg4);
|
this->result = (object.*fn)(arg1, arg2, arg3, arg4);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2, Param3, Param4)const;
|
T (Class::*fn)(Param1, Param2, Param3, Param4) const;
|
||||||
const Class object;
|
const Class object;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
|
||||||
};
|
};
|
||||||
@ -978,7 +978,7 @@ public:
|
|||||||
(object.*fn)(arg1, arg2, arg3, arg4);
|
(object.*fn)(arg1, arg2, arg3, arg4);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2, Param3, Param4)const;
|
T (Class::*fn)(Param1, Param2, Param3, Param4) const;
|
||||||
const Class object;
|
const Class object;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
|
||||||
};
|
};
|
||||||
@ -993,7 +993,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class StoredMemberFunctionPointerCall4 : public RunFunctionTask<T>
|
class StoredMemberFunctionPointerCall4 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoredMemberFunctionPointerCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
|
StoredMemberFunctionPointerCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4), Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -1009,7 +1009,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class VoidStoredMemberFunctionPointerCall4 : public RunFunctionTask<T>
|
class VoidStoredMemberFunctionPointerCall4 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VoidStoredMemberFunctionPointerCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
|
VoidStoredMemberFunctionPointerCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4), Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -1040,7 +1040,7 @@ public:
|
|||||||
this->result = (object->*fn)(arg1, arg2, arg3, arg4);
|
this->result = (object->*fn)(arg1, arg2, arg3, arg4);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2, Param3, Param4)const;
|
T (Class::*fn)(Param1, Param2, Param3, Param4) const;
|
||||||
Class const *object;
|
Class const *object;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
|
||||||
};
|
};
|
||||||
@ -1056,7 +1056,7 @@ public:
|
|||||||
(object->*fn)(arg1, arg2, arg3, arg4);
|
(object->*fn)(arg1, arg2, arg3, arg4);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2, Param3, Param4)const;
|
T (Class::*fn)(Param1, Param2, Param3, Param4) const;
|
||||||
Class const *object;
|
Class const *object;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
|
||||||
};
|
};
|
||||||
@ -1102,7 +1102,7 @@ struct VoidStoredFunctorPointerCall5: public RunFunctionTask<T>
|
|||||||
{
|
{
|
||||||
inline VoidStoredFunctorPointerCall5(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
|
inline VoidStoredFunctorPointerCall5(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
|
||||||
: function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5) {}
|
: function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5) {}
|
||||||
void runFunctor() override {(*function)(arg1, arg2, arg3, arg4, arg5); }
|
void runFunctor() override { (*function)(arg1, arg2, arg3, arg4, arg5); }
|
||||||
FunctionPointer * function;
|
FunctionPointer * function;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
|
||||||
};
|
};
|
||||||
@ -1118,7 +1118,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class StoredMemberFunctionCall5 : public RunFunctionTask<T>
|
class StoredMemberFunctionCall5 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoredMemberFunctionCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
|
StoredMemberFunctionCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5), const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -1134,7 +1134,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class VoidStoredMemberFunctionCall5 : public RunFunctionTask<T>
|
class VoidStoredMemberFunctionCall5 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VoidStoredMemberFunctionCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
|
VoidStoredMemberFunctionCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5), const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -1165,7 +1165,7 @@ public:
|
|||||||
this->result = (object.*fn)(arg1, arg2, arg3, arg4, arg5);
|
this->result = (object.*fn)(arg1, arg2, arg3, arg4, arg5);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2, Param3, Param4, Param5)const;
|
T (Class::*fn)(Param1, Param2, Param3, Param4, Param5) const;
|
||||||
const Class object;
|
const Class object;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
|
||||||
};
|
};
|
||||||
@ -1181,7 +1181,7 @@ public:
|
|||||||
(object.*fn)(arg1, arg2, arg3, arg4, arg5);
|
(object.*fn)(arg1, arg2, arg3, arg4, arg5);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2, Param3, Param4, Param5)const;
|
T (Class::*fn)(Param1, Param2, Param3, Param4, Param5) const;
|
||||||
const Class object;
|
const Class object;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
|
||||||
};
|
};
|
||||||
@ -1196,7 +1196,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class StoredMemberFunctionPointerCall5 : public RunFunctionTask<T>
|
class StoredMemberFunctionPointerCall5 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StoredMemberFunctionPointerCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
|
StoredMemberFunctionPointerCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5), Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -1212,7 +1212,7 @@ template <typename T, typename Class, typename Param1, typename Arg1, typename P
|
|||||||
class VoidStoredMemberFunctionPointerCall5 : public RunFunctionTask<T>
|
class VoidStoredMemberFunctionPointerCall5 : public RunFunctionTask<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VoidStoredMemberFunctionPointerCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
|
VoidStoredMemberFunctionPointerCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5), Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
|
||||||
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
|
: fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
|
||||||
|
|
||||||
void runFunctor() override
|
void runFunctor() override
|
||||||
@ -1243,7 +1243,7 @@ public:
|
|||||||
this->result = (object->*fn)(arg1, arg2, arg3, arg4, arg5);
|
this->result = (object->*fn)(arg1, arg2, arg3, arg4, arg5);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2, Param3, Param4, Param5)const;
|
T (Class::*fn)(Param1, Param2, Param3, Param4, Param5) const;
|
||||||
Class const *object;
|
Class const *object;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
|
||||||
};
|
};
|
||||||
@ -1259,7 +1259,7 @@ public:
|
|||||||
(object->*fn)(arg1, arg2, arg3, arg4, arg5);
|
(object->*fn)(arg1, arg2, arg3, arg4, arg5);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
T (Class::*fn)(Param1, Param2, Param3, Param4, Param5)const;
|
T (Class::*fn)(Param1, Param2, Param3, Param4, Param5) const;
|
||||||
Class const *object;
|
Class const *object;
|
||||||
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
|
Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
|
||||||
};
|
};
|
||||||
|
@ -1329,15 +1329,14 @@
|
|||||||
Q_ASSUME_IMPL(valueOfExpression);\
|
Q_ASSUME_IMPL(valueOfExpression);\
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
#if QT_HAS_CPP_ATTRIBUTE(fallthrough)
|
#if QT_HAS_CPP_ATTRIBUTE(fallthrough)
|
||||||
# define Q_FALLTHROUGH() [[fallthrough]]
|
# define Q_FALLTHROUGH() [[fallthrough]]
|
||||||
#elif defined(__cplusplus)
|
#elif QT_HAS_CPP_ATTRIBUTE(clang::fallthrough)
|
||||||
/* Clang can not parse namespaced attributes in C mode, but defines __has_cpp_attribute */
|
|
||||||
# if QT_HAS_CPP_ATTRIBUTE(clang::fallthrough)
|
|
||||||
# define Q_FALLTHROUGH() [[clang::fallthrough]]
|
# define Q_FALLTHROUGH() [[clang::fallthrough]]
|
||||||
# elif QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough)
|
#elif QT_HAS_CPP_ATTRIBUTE(gnu::fallthrough)
|
||||||
# define Q_FALLTHROUGH() [[gnu::fallthrough]]
|
# define Q_FALLTHROUGH() [[gnu::fallthrough]]
|
||||||
# endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef Q_FALLTHROUGH
|
#ifndef Q_FALLTHROUGH
|
||||||
# if defined(Q_CC_GNU) && Q_CC_GNU >= 700
|
# if defined(Q_CC_GNU) && Q_CC_GNU >= 700
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include "qplatformdefs.h"
|
#include "qplatformdefs.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Define the container allocation functions in a separate file, so that our
|
Define the container allocation functions in a separate file, so that our
|
||||||
@ -79,8 +80,6 @@ void *qMallocAligned(size_t size, size_t alignment)
|
|||||||
void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t alignment)
|
void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t alignment)
|
||||||
{
|
{
|
||||||
// fake an aligned allocation
|
// fake an aligned allocation
|
||||||
Q_UNUSED(oldsize);
|
|
||||||
|
|
||||||
void *actualptr = oldptr ? static_cast<void **>(oldptr)[-1] : 0;
|
void *actualptr = oldptr ? static_cast<void **>(oldptr)[-1] : 0;
|
||||||
if (alignment <= sizeof(void*)) {
|
if (alignment <= sizeof(void*)) {
|
||||||
// special, fast case
|
// special, fast case
|
||||||
@ -110,9 +109,15 @@ void *qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t align
|
|||||||
|
|
||||||
quintptr faked = reinterpret_cast<quintptr>(real) + alignment;
|
quintptr faked = reinterpret_cast<quintptr>(real) + alignment;
|
||||||
faked &= ~(alignment - 1);
|
faked &= ~(alignment - 1);
|
||||||
|
|
||||||
void **faked_ptr = reinterpret_cast<void **>(faked);
|
void **faked_ptr = reinterpret_cast<void **>(faked);
|
||||||
|
|
||||||
|
if (oldptr) {
|
||||||
|
qptrdiff oldoffset = static_cast<char *>(oldptr) - static_cast<char *>(actualptr);
|
||||||
|
qptrdiff newoffset = reinterpret_cast<char *>(faked_ptr) - static_cast<char *>(real);
|
||||||
|
if (oldoffset != newoffset)
|
||||||
|
memmove(faked_ptr, static_cast<char *>(real) + oldoffset, qMin(oldsize, newsize));
|
||||||
|
}
|
||||||
|
|
||||||
// now save the value of the real pointer at faked-sizeof(void*)
|
// now save the value of the real pointer at faked-sizeof(void*)
|
||||||
// by construction, alignment > sizeof(void*) and is a power of 2, so
|
// by construction, alignment > sizeof(void*) and is a power of 2, so
|
||||||
// faked-sizeof(void*) is properly aligned for a pointer
|
// faked-sizeof(void*) is properly aligned for a pointer
|
||||||
|
@ -526,7 +526,7 @@ public:
|
|||||||
static bool load(QDataStream &stream, int type, void *data);
|
static bool load(QDataStream &stream, int type, void *data);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
explicit QMetaType(const int type);
|
explicit QMetaType(const int type); // ### Qt6: drop const
|
||||||
inline ~QMetaType();
|
inline ~QMetaType();
|
||||||
|
|
||||||
inline bool isValid() const;
|
inline bool isValid() const;
|
||||||
|
@ -464,7 +464,7 @@ public:
|
|||||||
void create(int type, const void *copy);
|
void create(int type, const void *copy);
|
||||||
bool cmp(const QVariant &other) const;
|
bool cmp(const QVariant &other) const;
|
||||||
int compare(const QVariant &other) const;
|
int compare(const QVariant &other) const;
|
||||||
bool convert(const int t, void *ptr) const;
|
bool convert(const int t, void *ptr) const; // ### Qt6: drop const
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// force compile error, prevent QVariant(bool) to be called
|
// force compile error, prevent QVariant(bool) to be called
|
||||||
|
@ -180,9 +180,45 @@ public:
|
|||||||
SHA3Context sha3Context;
|
SHA3Context sha3Context;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
#ifndef QT_CRYPTOGRAPHICHASH_ONLY_SHA1
|
||||||
|
void sha3Finish(int bitCount);
|
||||||
|
#endif
|
||||||
QByteArray result;
|
QByteArray result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef QT_CRYPTOGRAPHICHASH_ONLY_SHA1
|
||||||
|
void QCryptographicHashPrivate::sha3Finish(int bitCount)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
FIPS 202 §6.1 defines SHA-3 in terms of calculating the Keccak function
|
||||||
|
over the original message with the two-bit suffix "01" appended to it.
|
||||||
|
This variable stores that suffix (and it's fed into the calculations
|
||||||
|
when the hash is returned to users).
|
||||||
|
|
||||||
|
Only 2 bits of this variable are actually used (see the call to sha3Update
|
||||||
|
below). The Keccak implementation we're using will actually use the
|
||||||
|
*leftmost* 2 bits, and interpret them right-to-left. In other words, the
|
||||||
|
bits must appear in order of *increasing* significance; and as the two most
|
||||||
|
significant bits of the byte -- the rightmost 6 are ignored. (Yes, this
|
||||||
|
seems self-contradictory, but it's the way it is...)
|
||||||
|
|
||||||
|
Overall, this means:
|
||||||
|
* the leftmost two bits must be "10" (not "01"!);
|
||||||
|
* we don't care what the other six bits are set to (they can be set to
|
||||||
|
any value), but we arbitrarily set them to 0;
|
||||||
|
|
||||||
|
and for an unsigned char this gives us 0b10'00'00'00, or 0x80.
|
||||||
|
*/
|
||||||
|
static const unsigned char sha3FinalSuffix = 0x80;
|
||||||
|
|
||||||
|
result.resize(bitCount / 8);
|
||||||
|
|
||||||
|
SHA3Context copy = sha3Context;
|
||||||
|
sha3Update(©, reinterpret_cast<const BitSequence *>(&sha3FinalSuffix), 2);
|
||||||
|
sha3Final(©, reinterpret_cast<BitSequence *>(result.data()));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class QCryptographicHash
|
\class QCryptographicHash
|
||||||
\inmodule QtCore
|
\inmodule QtCore
|
||||||
@ -196,7 +232,8 @@ public:
|
|||||||
|
|
||||||
QCryptographicHash can be used to generate cryptographic hashes of binary or text data.
|
QCryptographicHash can be used to generate cryptographic hashes of binary or text data.
|
||||||
|
|
||||||
Currently MD4, MD5, SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512 are supported.
|
Refer to the documentation of the \l QCryptographicHash::Algorithm enum for a
|
||||||
|
list of the supported algorithms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -426,27 +463,19 @@ QByteArray QCryptographicHash::result() const
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Sha3_224: {
|
case Sha3_224: {
|
||||||
SHA3Context copy = d->sha3Context;
|
d->sha3Finish(224);
|
||||||
d->result.resize(224/8);
|
|
||||||
sha3Final(©, reinterpret_cast<BitSequence *>(d->result.data()));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Sha3_256: {
|
case Sha3_256: {
|
||||||
SHA3Context copy = d->sha3Context;
|
d->sha3Finish(256);
|
||||||
d->result.resize(256/8);
|
|
||||||
sha3Final(©, reinterpret_cast<BitSequence *>(d->result.data()));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Sha3_384: {
|
case Sha3_384: {
|
||||||
SHA3Context copy = d->sha3Context;
|
d->sha3Finish(384);
|
||||||
d->result.resize(384/8);
|
|
||||||
sha3Final(©, reinterpret_cast<BitSequence *>(d->result.data()));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Sha3_512: {
|
case Sha3_512: {
|
||||||
SHA3Context copy = d->sha3Context;
|
d->sha3Finish(512);
|
||||||
d->result.resize(512/8);
|
|
||||||
sha3Final(©, reinterpret_cast<BitSequence *>(d->result.data()));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -291,6 +291,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
friend class QRegion; // Optimization for QRegion::rects()
|
friend class QRegion; // Optimization for QRegion::rects()
|
||||||
|
|
||||||
|
// ### Qt6: remove const from int parameters
|
||||||
void reallocData(const int size, const int alloc, QArrayData::AllocationOptions options = QArrayData::Default);
|
void reallocData(const int size, const int alloc, QArrayData::AllocationOptions options = QArrayData::Default);
|
||||||
void reallocData(const int sz) { reallocData(sz, d->alloc); }
|
void reallocData(const int sz) { reallocData(sz, d->alloc); }
|
||||||
void freeData(Data *d);
|
void freeData(Data *d);
|
||||||
|
@ -1139,6 +1139,7 @@ bool QXmlStreamReaderPrivate::parse()
|
|||||||
case '\n':
|
case '\n':
|
||||||
++lineNumber;
|
++lineNumber;
|
||||||
lastLineStart = characterOffset + readBufferPos;
|
lastLineStart = characterOffset + readBufferPos;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case ' ':
|
case ' ':
|
||||||
case '\t':
|
case '\t':
|
||||||
token = SPACE;
|
token = SPACE;
|
||||||
|
@ -183,14 +183,14 @@ static bool read_dib_infoheader(QDataStream &s, BMP_INFOHDR &bi)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool read_dib_body(QDataStream &s, const BMP_INFOHDR &bi, int offset, int startpos, QImage &image)
|
static bool read_dib_body(QDataStream &s, const BMP_INFOHDR &bi, qint64 offset, qint64 startpos, QImage &image)
|
||||||
{
|
{
|
||||||
QIODevice* d = s.device();
|
QIODevice* d = s.device();
|
||||||
if (d->atEnd()) // end of stream/file
|
if (d->atEnd()) // end of stream/file
|
||||||
return false;
|
return false;
|
||||||
#if 0
|
#if 0
|
||||||
qDebug("offset...........%d", offset);
|
qDebug("offset...........%lld", offset);
|
||||||
qDebug("startpos.........%d", startpos);
|
qDebug("startpos.........%lld", startpos);
|
||||||
qDebug("biSize...........%d", bi.biSize);
|
qDebug("biSize...........%d", bi.biSize);
|
||||||
qDebug("biWidth..........%d", bi.biWidth);
|
qDebug("biWidth..........%d", bi.biWidth);
|
||||||
qDebug("biHeight.........%d", bi.biHeight);
|
qDebug("biHeight.........%d", bi.biHeight);
|
||||||
|
@ -121,7 +121,7 @@ private:
|
|||||||
State state;
|
State state;
|
||||||
BMP_FILEHDR fileHeader;
|
BMP_FILEHDR fileHeader;
|
||||||
BMP_INFOHDR infoHeader;
|
BMP_INFOHDR infoHeader;
|
||||||
int startpos;
|
qint64 startpos;
|
||||||
};
|
};
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
@ -982,6 +982,40 @@ bool QOpenGLContext::makeCurrent(QSurface *surface)
|
|||||||
QOpenGLContext *previous = QOpenGLContextPrivate::setCurrentContext(this);
|
QOpenGLContext *previous = QOpenGLContextPrivate::setCurrentContext(this);
|
||||||
|
|
||||||
if (d->platformGLContext->makeCurrent(surface->surfaceHandle())) {
|
if (d->platformGLContext->makeCurrent(surface->surfaceHandle())) {
|
||||||
|
static bool needsWorkaroundSet = false;
|
||||||
|
static bool needsWorkaround = false;
|
||||||
|
|
||||||
|
if (!needsWorkaroundSet) {
|
||||||
|
QByteArray env;
|
||||||
|
#ifdef Q_OS_ANDROID
|
||||||
|
env = qgetenv(QByteArrayLiteral("QT_ANDROID_DISABLE_GLYPH_CACHE_WORKAROUND"));
|
||||||
|
needsWorkaround = env.isEmpty() || env == QByteArrayLiteral("0") || env == QByteArrayLiteral("false");
|
||||||
|
#endif
|
||||||
|
env = qgetenv(QByteArrayLiteral("QT_ENABLE_GLYPH_CACHE_WORKAROUND"));
|
||||||
|
if (env == QByteArrayLiteral("1") || env == QByteArrayLiteral("true"))
|
||||||
|
needsWorkaround = true;
|
||||||
|
|
||||||
|
if (!needsWorkaround) {
|
||||||
|
const char *rendererString = reinterpret_cast<const char *>(functions()->glGetString(GL_RENDERER));
|
||||||
|
if (rendererString)
|
||||||
|
needsWorkaround =
|
||||||
|
qstrncmp(rendererString, "Mali-4xx", 6) == 0 // Mali-400, Mali-450
|
||||||
|
|| qstrncmp(rendererString, "Adreno (TM) 2xx", 13) == 0 // Adreno 200, 203, 205
|
||||||
|
|| qstrncmp(rendererString, "Adreno 2xx", 8) == 0 // Same as above but without the '(TM)'
|
||||||
|
|| qstrncmp(rendererString, "Adreno (TM) 30x", 14) == 0 // Adreno 302, 305
|
||||||
|
|| qstrncmp(rendererString, "Adreno 30x", 9) == 0 // Same as above but without the '(TM)'
|
||||||
|
|| qstrncmp(rendererString, "Adreno (TM) 4xx", 13) == 0 // Adreno 405, 418, 420, 430
|
||||||
|
|| qstrncmp(rendererString, "Adreno 4xx", 8) == 0 // Same as above but without the '(TM)'
|
||||||
|
|| qstrcmp(rendererString, "GC800 core") == 0
|
||||||
|
|| qstrcmp(rendererString, "GC1000 core") == 0
|
||||||
|
|| qstrcmp(rendererString, "Immersion.16") == 0;
|
||||||
|
}
|
||||||
|
needsWorkaroundSet = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (needsWorkaround)
|
||||||
|
d->workaround_brokenFBOReadBack = true;
|
||||||
|
|
||||||
d->surface = surface;
|
d->surface = surface;
|
||||||
|
|
||||||
d->shareGroup->d_func()->deletePendingResources(this);
|
d->shareGroup->d_func()->deletePendingResources(this);
|
||||||
|
@ -375,12 +375,12 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl,
|
|||||||
--ii;
|
--ii;
|
||||||
}
|
}
|
||||||
switch (i & 7) {
|
switch (i & 7) {
|
||||||
case 7: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
|
case 7: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; Q_FALLTHROUGH();
|
||||||
case 6: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
|
case 6: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; Q_FALLTHROUGH();
|
||||||
case 5: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
|
case 5: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; Q_FALLTHROUGH();
|
||||||
case 4: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
|
case 4: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; Q_FALLTHROUGH();
|
||||||
case 3: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
|
case 3: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; Q_FALLTHROUGH();
|
||||||
case 2: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
|
case 2: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line; Q_FALLTHROUGH();
|
||||||
case 1: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
|
case 1: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -833,13 +833,13 @@ inline void qt_memfill(T *dest, T value, int count)
|
|||||||
int n = (count + 7) / 8;
|
int n = (count + 7) / 8;
|
||||||
switch (count & 0x07)
|
switch (count & 0x07)
|
||||||
{
|
{
|
||||||
case 0: do { *dest++ = value;
|
case 0: do { *dest++ = value; Q_FALLTHROUGH();
|
||||||
case 7: *dest++ = value;
|
case 7: *dest++ = value; Q_FALLTHROUGH();
|
||||||
case 6: *dest++ = value;
|
case 6: *dest++ = value; Q_FALLTHROUGH();
|
||||||
case 5: *dest++ = value;
|
case 5: *dest++ = value; Q_FALLTHROUGH();
|
||||||
case 4: *dest++ = value;
|
case 4: *dest++ = value; Q_FALLTHROUGH();
|
||||||
case 3: *dest++ = value;
|
case 3: *dest++ = value; Q_FALLTHROUGH();
|
||||||
case 2: *dest++ = value;
|
case 2: *dest++ = value; Q_FALLTHROUGH();
|
||||||
case 1: *dest++ = value;
|
case 1: *dest++ = value;
|
||||||
} while (--n > 0);
|
} while (--n > 0);
|
||||||
}
|
}
|
||||||
@ -875,13 +875,13 @@ do { \
|
|||||||
int n = ((length) + 7) / 8; \
|
int n = ((length) + 7) / 8; \
|
||||||
switch ((length) & 0x07) \
|
switch ((length) & 0x07) \
|
||||||
{ \
|
{ \
|
||||||
case 0: do { *--_d = *--_s; \
|
case 0: do { *--_d = *--_s; Q_FALLTHROUGH(); \
|
||||||
case 7: *--_d = *--_s; \
|
case 7: *--_d = *--_s; Q_FALLTHROUGH(); \
|
||||||
case 6: *--_d = *--_s; \
|
case 6: *--_d = *--_s; Q_FALLTHROUGH(); \
|
||||||
case 5: *--_d = *--_s; \
|
case 5: *--_d = *--_s; Q_FALLTHROUGH(); \
|
||||||
case 4: *--_d = *--_s; \
|
case 4: *--_d = *--_s; Q_FALLTHROUGH(); \
|
||||||
case 3: *--_d = *--_s; \
|
case 3: *--_d = *--_s; Q_FALLTHROUGH(); \
|
||||||
case 2: *--_d = *--_s; \
|
case 2: *--_d = *--_s; Q_FALLTHROUGH(); \
|
||||||
case 1: *--_d = *--_s; \
|
case 1: *--_d = *--_s; \
|
||||||
} while (--n > 0); \
|
} while (--n > 0); \
|
||||||
} \
|
} \
|
||||||
@ -895,13 +895,13 @@ do { \
|
|||||||
int n = ((length) + 7) / 8; \
|
int n = ((length) + 7) / 8; \
|
||||||
switch ((length) & 0x07) \
|
switch ((length) & 0x07) \
|
||||||
{ \
|
{ \
|
||||||
case 0: do { *_d++ = *_s++; \
|
case 0: do { *_d++ = *_s++; Q_FALLTHROUGH(); \
|
||||||
case 7: *_d++ = *_s++; \
|
case 7: *_d++ = *_s++; Q_FALLTHROUGH(); \
|
||||||
case 6: *_d++ = *_s++; \
|
case 6: *_d++ = *_s++; Q_FALLTHROUGH(); \
|
||||||
case 5: *_d++ = *_s++; \
|
case 5: *_d++ = *_s++; Q_FALLTHROUGH(); \
|
||||||
case 4: *_d++ = *_s++; \
|
case 4: *_d++ = *_s++; Q_FALLTHROUGH(); \
|
||||||
case 3: *_d++ = *_s++; \
|
case 3: *_d++ = *_s++; Q_FALLTHROUGH(); \
|
||||||
case 2: *_d++ = *_s++; \
|
case 2: *_d++ = *_s++; Q_FALLTHROUGH(); \
|
||||||
case 1: *_d++ = *_s++; \
|
case 1: *_d++ = *_s++; \
|
||||||
} while (--n > 0); \
|
} while (--n > 0); \
|
||||||
} \
|
} \
|
||||||
|
@ -162,6 +162,8 @@
|
|||||||
#include <private/qrasterdefs_p.h>
|
#include <private/qrasterdefs_p.h>
|
||||||
#include <private/qgrayraster_p.h>
|
#include <private/qgrayraster_p.h>
|
||||||
|
|
||||||
|
#include <qcompilerdetection.h>
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
@ -1147,12 +1149,12 @@
|
|||||||
|
|
||||||
switch ( spans->len )
|
switch ( spans->len )
|
||||||
{
|
{
|
||||||
case 7: *q++ = (unsigned char)coverage;
|
case 7: *q++ = (unsigned char)coverage; Q_FALLTHROUGH();
|
||||||
case 6: *q++ = (unsigned char)coverage;
|
case 6: *q++ = (unsigned char)coverage; Q_FALLTHROUGH();
|
||||||
case 5: *q++ = (unsigned char)coverage;
|
case 5: *q++ = (unsigned char)coverage; Q_FALLTHROUGH();
|
||||||
case 4: *q++ = (unsigned char)coverage;
|
case 4: *q++ = (unsigned char)coverage; Q_FALLTHROUGH();
|
||||||
case 3: *q++ = (unsigned char)coverage;
|
case 3: *q++ = (unsigned char)coverage; Q_FALLTHROUGH();
|
||||||
case 2: *q++ = (unsigned char)coverage;
|
case 2: *q++ = (unsigned char)coverage; Q_FALLTHROUGH();
|
||||||
case 1: *q = (unsigned char)coverage;
|
case 1: *q = (unsigned char)coverage;
|
||||||
default:
|
default:
|
||||||
;
|
;
|
||||||
|
@ -2565,6 +2565,7 @@ void QPdfEnginePrivate::drawTextItem(const QPointF &p, const QTextItemInt &ti)
|
|||||||
qreal size = ti.fontEngine->fontDef.pixelSize;
|
qreal size = ti.fontEngine->fontDef.pixelSize;
|
||||||
int synthesized = ti.fontEngine->synthesized();
|
int synthesized = ti.fontEngine->synthesized();
|
||||||
qreal stretch = synthesized & QFontEngine::SynthesizedStretch ? ti.fontEngine->fontDef.stretch/100. : 1.;
|
qreal stretch = synthesized & QFontEngine::SynthesizedStretch ? ti.fontEngine->fontDef.stretch/100. : 1.;
|
||||||
|
Q_ASSERT(stretch > qreal(0));
|
||||||
|
|
||||||
QTransform trans;
|
QTransform trans;
|
||||||
// Build text rendering matrix (Trm). We need it to map the text area to user
|
// Build text rendering matrix (Trm). We need it to map the text area to user
|
||||||
@ -2641,6 +2642,7 @@ void QPdfEnginePrivate::drawTextItem(const QPointF &p, const QTextItemInt &ti)
|
|||||||
return;
|
return;
|
||||||
int synthesized = ti.fontEngine->synthesized();
|
int synthesized = ti.fontEngine->synthesized();
|
||||||
qreal stretch = synthesized & QFontEngine::SynthesizedStretch ? ti.fontEngine->fontDef.stretch/100. : 1.;
|
qreal stretch = synthesized & QFontEngine::SynthesizedStretch ? ti.fontEngine->fontDef.stretch/100. : 1.;
|
||||||
|
Q_ASSERT(stretch > qreal(0));
|
||||||
|
|
||||||
*currentPage << "BT\n"
|
*currentPage << "BT\n"
|
||||||
<< "/F" << font->object_id << size << "Tf "
|
<< "/F" << font->object_id << size << "Tf "
|
||||||
|
@ -2094,7 +2094,8 @@ QTransform::TransformationType QTransform::type() const
|
|||||||
if (!qFuzzyIsNull(m_13) || !qFuzzyIsNull(m_23) || !qFuzzyIsNull(m_33 - 1)) {
|
if (!qFuzzyIsNull(m_13) || !qFuzzyIsNull(m_23) || !qFuzzyIsNull(m_33 - 1)) {
|
||||||
m_type = TxProject;
|
m_type = TxProject;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case TxShear:
|
case TxShear:
|
||||||
case TxRotate:
|
case TxRotate:
|
||||||
if (!qFuzzyIsNull(affine._m12) || !qFuzzyIsNull(affine._m21)) {
|
if (!qFuzzyIsNull(affine._m12) || !qFuzzyIsNull(affine._m21)) {
|
||||||
@ -2105,16 +2106,19 @@ QTransform::TransformationType QTransform::type() const
|
|||||||
m_type = TxShear;
|
m_type = TxShear;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case TxScale:
|
case TxScale:
|
||||||
if (!qFuzzyIsNull(affine._m11 - 1) || !qFuzzyIsNull(affine._m22 - 1)) {
|
if (!qFuzzyIsNull(affine._m11 - 1) || !qFuzzyIsNull(affine._m22 - 1)) {
|
||||||
m_type = TxScale;
|
m_type = TxScale;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case TxTranslate:
|
case TxTranslate:
|
||||||
if (!qFuzzyIsNull(affine._dx) || !qFuzzyIsNull(affine._dy)) {
|
if (!qFuzzyIsNull(affine._dx) || !qFuzzyIsNull(affine._dy)) {
|
||||||
m_type = TxTranslate;
|
m_type = TxTranslate;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case TxNone:
|
case TxNone:
|
||||||
m_type = TxNone;
|
m_type = TxNone;
|
||||||
break;
|
break;
|
||||||
|
@ -579,12 +579,14 @@ static bool bidiItemize(QTextEngine *engine, QScriptAnalysis *analysis, QBidiCon
|
|||||||
else
|
else
|
||||||
eor = current;
|
eor = current;
|
||||||
status.eor = QChar::DirEN;
|
status.eor = QChar::DirEN;
|
||||||
dir = QChar::DirAN; break;
|
dir = QChar::DirAN;
|
||||||
|
break;
|
||||||
case QChar::DirES:
|
case QChar::DirES:
|
||||||
case QChar::DirCS:
|
case QChar::DirCS:
|
||||||
if(status.eor == QChar::DirEN || dir == QChar::DirAN) {
|
if(status.eor == QChar::DirEN || dir == QChar::DirAN) {
|
||||||
eor = current; break;
|
eor = current; break;
|
||||||
}
|
}
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case QChar::DirBN:
|
case QChar::DirBN:
|
||||||
case QChar::DirB:
|
case QChar::DirB:
|
||||||
case QChar::DirS:
|
case QChar::DirS:
|
||||||
@ -614,11 +616,13 @@ static bool bidiItemize(QTextEngine *engine, QScriptAnalysis *analysis, QBidiCon
|
|||||||
eor = current; status.eor = dirCurrent;
|
eor = current; status.eor = dirCurrent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case QChar::DirAN:
|
case QChar::DirAN:
|
||||||
hasBidi = true;
|
hasBidi = true;
|
||||||
dirCurrent = QChar::DirAN;
|
dirCurrent = QChar::DirAN;
|
||||||
@ -642,6 +646,7 @@ static bool bidiItemize(QTextEngine *engine, QScriptAnalysis *analysis, QBidiCon
|
|||||||
if(status.eor == QChar::DirAN) {
|
if(status.eor == QChar::DirAN) {
|
||||||
eor = current; break;
|
eor = current; break;
|
||||||
}
|
}
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case QChar::DirES:
|
case QChar::DirES:
|
||||||
case QChar::DirET:
|
case QChar::DirET:
|
||||||
case QChar::DirBN:
|
case QChar::DirBN:
|
||||||
|
@ -742,6 +742,7 @@ QFontEngineFT *QFontEngineFT::create(const QByteArray &fontData, qreal pixelSize
|
|||||||
{
|
{
|
||||||
QFontDef fontDef;
|
QFontDef fontDef;
|
||||||
fontDef.pixelSize = pixelSize;
|
fontDef.pixelSize = pixelSize;
|
||||||
|
fontDef.stretch = QFont::Unstretched;
|
||||||
fontDef.hintingPreference = hintingPreference;
|
fontDef.hintingPreference = hintingPreference;
|
||||||
|
|
||||||
QFontEngineFTRawData *fe = new QFontEngineFTRawData(fontDef);
|
QFontEngineFTRawData *fe = new QFontEngineFTRawData(fontDef);
|
||||||
|
@ -1281,6 +1281,7 @@ QFontEngine *QWindowsMultiFontEngine::loadEngine(int at)
|
|||||||
fedw->fontDef.style = fontEngine->fontDef.style;
|
fedw->fontDef.style = fontEngine->fontDef.style;
|
||||||
fedw->fontDef.family = fam;
|
fedw->fontDef.family = fam;
|
||||||
fedw->fontDef.hintingPreference = fontEngine->fontDef.hintingPreference;
|
fedw->fontDef.hintingPreference = fontEngine->fontDef.hintingPreference;
|
||||||
|
fedw->fontDef.stretch = fontEngine->fontDef.stretch;
|
||||||
return fedw;
|
return fedw;
|
||||||
} else {
|
} else {
|
||||||
qErrnoWarning("%s: CreateFontFace failed", __FUNCTION__);
|
qErrnoWarning("%s: CreateFontFace failed", __FUNCTION__);
|
||||||
@ -1298,6 +1299,7 @@ QFontEngine *QWindowsMultiFontEngine::loadEngine(int at)
|
|||||||
fe->fontDef.style = fontEngine->fontDef.style;
|
fe->fontDef.style = fontEngine->fontDef.style;
|
||||||
fe->fontDef.family = fam;
|
fe->fontDef.family = fam;
|
||||||
fe->fontDef.hintingPreference = fontEngine->fontDef.hintingPreference;
|
fe->fontDef.hintingPreference = fontEngine->fontDef.hintingPreference;
|
||||||
|
fe->fontDef.stretch = fontEngine->fontDef.stretch;
|
||||||
return fe;
|
return fe;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,6 +42,9 @@
|
|||||||
#include <QtGui/qbackingstore.h>
|
#include <QtGui/qbackingstore.h>
|
||||||
#include <QtGui/qpainter.h>
|
#include <QtGui/qpainter.h>
|
||||||
|
|
||||||
|
#include <private/qhighdpiscaling_p.h>
|
||||||
|
#include <qpa/qplatformwindow.h>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
QRasterBackingStore::QRasterBackingStore(QWindow *window)
|
QRasterBackingStore::QRasterBackingStore(QWindow *window)
|
||||||
@ -57,14 +60,14 @@ void QRasterBackingStore::resize(const QSize &size, const QRegion &staticContent
|
|||||||
{
|
{
|
||||||
Q_UNUSED(staticContents);
|
Q_UNUSED(staticContents);
|
||||||
|
|
||||||
int windowDevicePixelRatio = window()->devicePixelRatio();
|
qreal nativeWindowDevicePixelRatio = window()->handle()->devicePixelRatio();
|
||||||
QSize effectiveBufferSize = size * windowDevicePixelRatio;
|
QSize effectiveBufferSize = size * nativeWindowDevicePixelRatio;
|
||||||
|
|
||||||
if (m_image.size() == effectiveBufferSize)
|
if (m_image.size() == effectiveBufferSize)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_image = QImage(effectiveBufferSize, format());
|
m_image = QImage(effectiveBufferSize, format());
|
||||||
m_image.setDevicePixelRatio(windowDevicePixelRatio);
|
m_image.setDevicePixelRatio(nativeWindowDevicePixelRatio);
|
||||||
if (m_image.format() == QImage::Format_ARGB32_Premultiplied)
|
if (m_image.format() == QImage::Format_ARGB32_Premultiplied)
|
||||||
m_image.fill(Qt::transparent);
|
m_image.fill(Qt::transparent);
|
||||||
}
|
}
|
||||||
@ -106,8 +109,11 @@ bool QRasterBackingStore::scroll(const QRegion ®ion, int dx, int dy)
|
|||||||
void QRasterBackingStore::beginPaint(const QRegion ®ion)
|
void QRasterBackingStore::beginPaint(const QRegion ®ion)
|
||||||
{
|
{
|
||||||
// Keep backing store device pixel ratio in sync with window
|
// Keep backing store device pixel ratio in sync with window
|
||||||
if (m_image.devicePixelRatio() != window()->devicePixelRatio())
|
qreal nativeWindowDevicePixelRatio = window()->handle()->devicePixelRatio();
|
||||||
resize(backingStore()->size(), backingStore()->staticContents());
|
if (m_image.devicePixelRatio() != nativeWindowDevicePixelRatio) {
|
||||||
|
const QSize nativeSize = QHighDpi::toNativePixels(backingStore()->size(), window());
|
||||||
|
resize(nativeSize, backingStore()->staticContents());
|
||||||
|
}
|
||||||
|
|
||||||
if (!m_image.hasAlphaChannel())
|
if (!m_image.hasAlphaChannel())
|
||||||
return;
|
return;
|
||||||
|
@ -67,42 +67,11 @@ void QAndroidPlatformOpenGLContext::swapBuffers(QPlatformSurface *surface)
|
|||||||
QEGLPlatformContext::swapBuffers(surface);
|
QEGLPlatformContext::swapBuffers(surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QAndroidPlatformOpenGLContext::needsFBOReadBackWorkaround()
|
|
||||||
{
|
|
||||||
static bool set = false;
|
|
||||||
static bool needsWorkaround = false;
|
|
||||||
|
|
||||||
if (!set) {
|
|
||||||
QByteArray env = qgetenv("QT_ANDROID_DISABLE_GLYPH_CACHE_WORKAROUND");
|
|
||||||
needsWorkaround = env.isEmpty() || env == "0" || env == "false";
|
|
||||||
|
|
||||||
if (!needsWorkaround) {
|
|
||||||
const char *rendererString = reinterpret_cast<const char *>(glGetString(GL_RENDERER));
|
|
||||||
needsWorkaround =
|
|
||||||
qstrncmp(rendererString, "Mali-4xx", 6) == 0 // Mali-400, Mali-450
|
|
||||||
|| qstrncmp(rendererString, "Adreno (TM) 2xx", 13) == 0 // Adreno 200, 203, 205
|
|
||||||
|| qstrncmp(rendererString, "Adreno 2xx", 8) == 0 // Same as above but without the '(TM)'
|
|
||||||
|| qstrncmp(rendererString, "Adreno (TM) 30x", 14) == 0 // Adreno 302, 305
|
|
||||||
|| qstrncmp(rendererString, "Adreno 30x", 9) == 0 // Same as above but without the '(TM)'
|
|
||||||
|| qstrcmp(rendererString, "GC800 core") == 0
|
|
||||||
|| qstrcmp(rendererString, "GC1000 core") == 0
|
|
||||||
|| qstrcmp(rendererString, "Immersion.16") == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
set = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return needsWorkaround;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool QAndroidPlatformOpenGLContext::makeCurrent(QPlatformSurface *surface)
|
bool QAndroidPlatformOpenGLContext::makeCurrent(QPlatformSurface *surface)
|
||||||
{
|
{
|
||||||
bool ret = QEGLPlatformContext::makeCurrent(surface);
|
bool ret = QEGLPlatformContext::makeCurrent(surface);
|
||||||
QOpenGLContextPrivate *ctx_d = QOpenGLContextPrivate::get(context());
|
QOpenGLContextPrivate *ctx_d = QOpenGLContextPrivate::get(context());
|
||||||
|
|
||||||
if (!ctx_d->workaround_brokenFBOReadBack && needsFBOReadBackWorkaround())
|
|
||||||
ctx_d->workaround_brokenFBOReadBack = true;
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
EGLSurface eglSurfaceForPlatformSurface(QPlatformSurface *surface) override;
|
EGLSurface eglSurfaceForPlatformSurface(QPlatformSurface *surface) override;
|
||||||
|
|
||||||
static bool needsFBOReadBackWorkaround();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
@ -1358,9 +1358,9 @@ void QXcbEventReader::unlock()
|
|||||||
m_mutex.unlock();
|
m_mutex.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QXcbConnection::setFocusWindow(QXcbWindow *w)
|
void QXcbConnection::setFocusWindow(QWindow *w)
|
||||||
{
|
{
|
||||||
m_focusWindow = w;
|
m_focusWindow = w ? static_cast<QXcbWindow *>(w->handle()) : nullptr;
|
||||||
}
|
}
|
||||||
void QXcbConnection::setMouseGrabber(QXcbWindow *w)
|
void QXcbConnection::setMouseGrabber(QXcbWindow *w)
|
||||||
{
|
{
|
||||||
|
@ -480,7 +480,7 @@ public:
|
|||||||
Qt::MouseButton translateMouseButton(xcb_button_t s);
|
Qt::MouseButton translateMouseButton(xcb_button_t s);
|
||||||
|
|
||||||
QXcbWindow *focusWindow() const { return m_focusWindow; }
|
QXcbWindow *focusWindow() const { return m_focusWindow; }
|
||||||
void setFocusWindow(QXcbWindow *);
|
void setFocusWindow(QWindow *);
|
||||||
QXcbWindow *mouseGrabber() const { return m_mouseGrabber; }
|
QXcbWindow *mouseGrabber() const { return m_mouseGrabber; }
|
||||||
void setMouseGrabber(QXcbWindow *);
|
void setMouseGrabber(QXcbWindow *);
|
||||||
QXcbWindow *mousePressWindow() const { return m_mousePressWindow; }
|
QXcbWindow *mousePressWindow() const { return m_mousePressWindow; }
|
||||||
|
@ -44,12 +44,6 @@
|
|||||||
#include <QtCore/QBuffer>
|
#include <QtCore/QBuffer>
|
||||||
#include <qdebug.h>
|
#include <qdebug.h>
|
||||||
|
|
||||||
#include <X11/Xutil.h>
|
|
||||||
|
|
||||||
#undef XCB_ATOM_STRING
|
|
||||||
#undef XCB_ATOM_PIXMAP
|
|
||||||
#undef XCB_ATOM_BITMAP
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
#if !(defined(QT_NO_DRAGANDDROP) && defined(QT_NO_CLIPBOARD))
|
#if !(defined(QT_NO_DRAGANDDROP) && defined(QT_NO_CLIPBOARD))
|
||||||
|
@ -923,7 +923,7 @@ void QXcbWindow::doFocusIn()
|
|||||||
if (relayFocusToModalWindow())
|
if (relayFocusToModalWindow())
|
||||||
return;
|
return;
|
||||||
QWindow *w = static_cast<QWindowPrivate *>(QObjectPrivate::get(window()))->eventReceiver();
|
QWindow *w = static_cast<QWindowPrivate *>(QObjectPrivate::get(window()))->eventReceiver();
|
||||||
connection()->setFocusWindow(static_cast<QXcbWindow *>(w->handle()));
|
connection()->setFocusWindow(w);
|
||||||
QWindowSystemInterface::handleWindowActivated(w, Qt::ActiveWindowFocusReason);
|
QWindowSystemInterface::handleWindowActivated(w, Qt::ActiveWindowFocusReason);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -931,7 +931,7 @@ static bool focusInPeeker(QXcbConnection *connection, xcb_generic_event_t *event
|
|||||||
{
|
{
|
||||||
if (!event) {
|
if (!event) {
|
||||||
// FocusIn event is not in the queue, proceed with FocusOut normally.
|
// FocusIn event is not in the queue, proceed with FocusOut normally.
|
||||||
QWindowSystemInterface::handleWindowActivated(0, Qt::ActiveWindowFocusReason);
|
QWindowSystemInterface::handleWindowActivated(nullptr, Qt::ActiveWindowFocusReason);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
uint response_type = event->response_type & ~0x80;
|
uint response_type = event->response_type & ~0x80;
|
||||||
@ -956,12 +956,10 @@ static bool focusInPeeker(QXcbConnection *connection, xcb_generic_event_t *event
|
|||||||
|
|
||||||
void QXcbWindow::doFocusOut()
|
void QXcbWindow::doFocusOut()
|
||||||
{
|
{
|
||||||
if (relayFocusToModalWindow())
|
connection()->setFocusWindow(nullptr);
|
||||||
return;
|
relayFocusToModalWindow();
|
||||||
connection()->setFocusWindow(0);
|
// Do not set the active window to nullptr if there is a FocusIn coming.
|
||||||
// Do not set the active window to 0 if there is a FocusIn coming.
|
// The FocusIn handler will update QXcbConnection::setFocusWindow() accordingly.
|
||||||
// There is however no equivalent for XPutBackEvent so register a
|
|
||||||
// callback for QXcbConnection instead.
|
|
||||||
connection()->addPeekFunc(focusInPeeker);
|
connection()->addPeekFunc(focusInPeeker);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2813,14 +2811,14 @@ void QXcbWindow::handleXEmbedMessage(const xcb_client_message_event_t *event)
|
|||||||
reason = Qt::OtherFocusReason;
|
reason = Qt::OtherFocusReason;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
connection()->setFocusWindow(static_cast<QXcbWindow*>(window()->handle()));
|
connection()->setFocusWindow(window());
|
||||||
QWindowSystemInterface::handleWindowActivated(window(), reason);
|
QWindowSystemInterface::handleWindowActivated(window(), reason);
|
||||||
break;
|
break;
|
||||||
case XEMBED_FOCUS_OUT:
|
case XEMBED_FOCUS_OUT:
|
||||||
if (window() == QGuiApplication::focusWindow()
|
if (window() == QGuiApplication::focusWindow()
|
||||||
&& !activeWindowChangeQueued(window())) {
|
&& !activeWindowChangeQueued(window())) {
|
||||||
connection()->setFocusWindow(0);
|
connection()->setFocusWindow(nullptr);
|
||||||
QWindowSystemInterface::handleWindowActivated(0);
|
QWindowSystemInterface::handleWindowActivated(nullptr);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -695,6 +695,9 @@ void QSqlDatabasePrivate::init(const QString &type)
|
|||||||
/*!
|
/*!
|
||||||
Destroys the object and frees any allocated resources.
|
Destroys the object and frees any allocated resources.
|
||||||
|
|
||||||
|
\note When the last connection is destroyed, the destructor
|
||||||
|
implicitly calls close() to release the database connection.
|
||||||
|
|
||||||
\sa close()
|
\sa close()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -3019,6 +3019,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
|
|||||||
r = subElementRect(SE_CheckBoxIndicator, opt, widget);
|
r = subElementRect(SE_CheckBoxIndicator, opt, widget);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SE_ItemViewItemDecoration:
|
case SE_ItemViewItemDecoration:
|
||||||
case SE_ItemViewItemText:
|
case SE_ItemViewItemText:
|
||||||
case SE_ItemViewItemFocusRect:
|
case SE_ItemViewItemFocusRect:
|
||||||
@ -4194,11 +4195,13 @@ QRect QCommonStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex
|
|||||||
case SC_TitleBarContextHelpButton:
|
case SC_TitleBarContextHelpButton:
|
||||||
if (tb->titleBarFlags & Qt::WindowContextHelpButtonHint)
|
if (tb->titleBarFlags & Qt::WindowContextHelpButtonHint)
|
||||||
offset += delta;
|
offset += delta;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SC_TitleBarMinButton:
|
case SC_TitleBarMinButton:
|
||||||
if (!isMinimized && (tb->titleBarFlags & Qt::WindowMinimizeButtonHint))
|
if (!isMinimized && (tb->titleBarFlags & Qt::WindowMinimizeButtonHint))
|
||||||
offset += delta;
|
offset += delta;
|
||||||
else if (sc == SC_TitleBarMinButton)
|
else if (sc == SC_TitleBarMinButton)
|
||||||
break;
|
break;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SC_TitleBarNormalButton:
|
case SC_TitleBarNormalButton:
|
||||||
if (isMinimized && (tb->titleBarFlags & Qt::WindowMinimizeButtonHint))
|
if (isMinimized && (tb->titleBarFlags & Qt::WindowMinimizeButtonHint))
|
||||||
offset += delta;
|
offset += delta;
|
||||||
@ -4206,21 +4209,25 @@ QRect QCommonStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex
|
|||||||
offset += delta;
|
offset += delta;
|
||||||
else if (sc == SC_TitleBarNormalButton)
|
else if (sc == SC_TitleBarNormalButton)
|
||||||
break;
|
break;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SC_TitleBarMaxButton:
|
case SC_TitleBarMaxButton:
|
||||||
if (!isMaximized && (tb->titleBarFlags & Qt::WindowMaximizeButtonHint))
|
if (!isMaximized && (tb->titleBarFlags & Qt::WindowMaximizeButtonHint))
|
||||||
offset += delta;
|
offset += delta;
|
||||||
else if (sc == SC_TitleBarMaxButton)
|
else if (sc == SC_TitleBarMaxButton)
|
||||||
break;
|
break;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SC_TitleBarShadeButton:
|
case SC_TitleBarShadeButton:
|
||||||
if (!isMinimized && (tb->titleBarFlags & Qt::WindowShadeButtonHint))
|
if (!isMinimized && (tb->titleBarFlags & Qt::WindowShadeButtonHint))
|
||||||
offset += delta;
|
offset += delta;
|
||||||
else if (sc == SC_TitleBarShadeButton)
|
else if (sc == SC_TitleBarShadeButton)
|
||||||
break;
|
break;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SC_TitleBarUnshadeButton:
|
case SC_TitleBarUnshadeButton:
|
||||||
if (isMinimized && (tb->titleBarFlags & Qt::WindowShadeButtonHint))
|
if (isMinimized && (tb->titleBarFlags & Qt::WindowShadeButtonHint))
|
||||||
offset += delta;
|
offset += delta;
|
||||||
else if (sc == SC_TitleBarUnshadeButton)
|
else if (sc == SC_TitleBarUnshadeButton)
|
||||||
break;
|
break;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SC_TitleBarCloseButton:
|
case SC_TitleBarCloseButton:
|
||||||
if (tb->titleBarFlags & Qt::WindowSystemMenuHint)
|
if (tb->titleBarFlags & Qt::WindowSystemMenuHint)
|
||||||
offset += delta;
|
offset += delta;
|
||||||
|
@ -3580,11 +3580,13 @@ QRect QFusionStyle::subControlRect(ComplexControl control, const QStyleOptionCom
|
|||||||
case SC_TitleBarContextHelpButton:
|
case SC_TitleBarContextHelpButton:
|
||||||
if (tb->titleBarFlags & Qt::WindowContextHelpButtonHint)
|
if (tb->titleBarFlags & Qt::WindowContextHelpButtonHint)
|
||||||
offset += delta;
|
offset += delta;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SC_TitleBarMinButton:
|
case SC_TitleBarMinButton:
|
||||||
if (!isMinimized && (tb->titleBarFlags & Qt::WindowMinimizeButtonHint))
|
if (!isMinimized && (tb->titleBarFlags & Qt::WindowMinimizeButtonHint))
|
||||||
offset += delta;
|
offset += delta;
|
||||||
else if (sc == SC_TitleBarMinButton)
|
else if (sc == SC_TitleBarMinButton)
|
||||||
break;
|
break;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SC_TitleBarNormalButton:
|
case SC_TitleBarNormalButton:
|
||||||
if (isMinimized && (tb->titleBarFlags & Qt::WindowMinimizeButtonHint))
|
if (isMinimized && (tb->titleBarFlags & Qt::WindowMinimizeButtonHint))
|
||||||
offset += delta;
|
offset += delta;
|
||||||
@ -3592,21 +3594,25 @@ QRect QFusionStyle::subControlRect(ComplexControl control, const QStyleOptionCom
|
|||||||
offset += delta;
|
offset += delta;
|
||||||
else if (sc == SC_TitleBarNormalButton)
|
else if (sc == SC_TitleBarNormalButton)
|
||||||
break;
|
break;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SC_TitleBarMaxButton:
|
case SC_TitleBarMaxButton:
|
||||||
if (!isMaximized && (tb->titleBarFlags & Qt::WindowMaximizeButtonHint))
|
if (!isMaximized && (tb->titleBarFlags & Qt::WindowMaximizeButtonHint))
|
||||||
offset += delta;
|
offset += delta;
|
||||||
else if (sc == SC_TitleBarMaxButton)
|
else if (sc == SC_TitleBarMaxButton)
|
||||||
break;
|
break;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SC_TitleBarShadeButton:
|
case SC_TitleBarShadeButton:
|
||||||
if (!isMinimized && (tb->titleBarFlags & Qt::WindowShadeButtonHint))
|
if (!isMinimized && (tb->titleBarFlags & Qt::WindowShadeButtonHint))
|
||||||
offset += delta;
|
offset += delta;
|
||||||
else if (sc == SC_TitleBarShadeButton)
|
else if (sc == SC_TitleBarShadeButton)
|
||||||
break;
|
break;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SC_TitleBarUnshadeButton:
|
case SC_TitleBarUnshadeButton:
|
||||||
if (isMinimized && (tb->titleBarFlags & Qt::WindowShadeButtonHint))
|
if (isMinimized && (tb->titleBarFlags & Qt::WindowShadeButtonHint))
|
||||||
offset += delta;
|
offset += delta;
|
||||||
else if (sc == SC_TitleBarUnshadeButton)
|
else if (sc == SC_TitleBarUnshadeButton)
|
||||||
break;
|
break;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case SC_TitleBarCloseButton:
|
case SC_TitleBarCloseButton:
|
||||||
if (tb->titleBarFlags & Qt::WindowSystemMenuHint)
|
if (tb->titleBarFlags & Qt::WindowSystemMenuHint)
|
||||||
offset += delta;
|
offset += delta;
|
||||||
|
@ -4375,7 +4375,7 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
//fall tghought
|
Q_FALLTHROUGH();
|
||||||
case PE_PanelMenu:
|
case PE_PanelMenu:
|
||||||
case PE_PanelStatusBar:
|
case PE_PanelStatusBar:
|
||||||
if(rule.hasDrawable()) {
|
if(rule.hasDrawable()) {
|
||||||
@ -4934,7 +4934,7 @@ QSize QStyleSheetStyle::sizeFromContents(ContentsType ct, const QStyleOption *op
|
|||||||
case CT_ToolButton:
|
case CT_ToolButton:
|
||||||
if (rule.hasBox() || !rule.hasNativeBorder() || !rule.baseStyleCanDraw())
|
if (rule.hasBox() || !rule.hasNativeBorder() || !rule.baseStyleCanDraw())
|
||||||
sz += QSize(3, 3); // ### broken QToolButton
|
sz += QSize(3, 3); // ### broken QToolButton
|
||||||
//fall thought
|
Q_FALLTHROUGH();
|
||||||
case CT_ComboBox:
|
case CT_ComboBox:
|
||||||
case CT_PushButton:
|
case CT_PushButton:
|
||||||
if (rule.hasBox() || !rule.hasNativeBorder()) {
|
if (rule.hasBox() || !rule.hasNativeBorder()) {
|
||||||
|
@ -980,6 +980,7 @@ void QAbstractSpinBox::keyPressEvent(QKeyEvent *event)
|
|||||||
case Qt::Key_PageDown:
|
case Qt::Key_PageDown:
|
||||||
steps *= 10;
|
steps *= 10;
|
||||||
isPgUpOrDown = true;
|
isPgUpOrDown = true;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case Qt::Key_Up:
|
case Qt::Key_Up:
|
||||||
case Qt::Key_Down: {
|
case Qt::Key_Down: {
|
||||||
#ifdef QT_KEYPAD_NAVIGATION
|
#ifdef QT_KEYPAD_NAVIGATION
|
||||||
@ -2115,6 +2116,7 @@ int QAbstractSpinBoxPrivate::variantCompare(const QVariant &arg1, const QVariant
|
|||||||
case QVariant::Invalid:
|
case QVariant::Invalid:
|
||||||
if (arg2.type() == QVariant::Invalid)
|
if (arg2.type() == QVariant::Invalid)
|
||||||
return 0;
|
return 0;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
default:
|
default:
|
||||||
Q_ASSERT_X(0, "QAbstractSpinBoxPrivate::variantCompare",
|
Q_ASSERT_X(0, "QAbstractSpinBoxPrivate::variantCompare",
|
||||||
qPrintable(QString::fromLatin1("Internal error 3 (%1 %2)").
|
qPrintable(QString::fromLatin1("Internal error 3 (%1 %2)").
|
||||||
|
@ -1113,6 +1113,7 @@ void QDateTimeEdit::keyPressEvent(QKeyEvent *event)
|
|||||||
&& !(event->modifiers() & ~(Qt::ShiftModifier|Qt::KeypadModifier));
|
&& !(event->modifiers() & ~(Qt::ShiftModifier|Qt::KeypadModifier));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case Qt::Key_Left:
|
case Qt::Key_Left:
|
||||||
case Qt::Key_Right:
|
case Qt::Key_Right:
|
||||||
if (event->key() == Qt::Key_Left || event->key() == Qt::Key_Right) {
|
if (event->key() == Qt::Key_Left || event->key() == Qt::Key_Right) {
|
||||||
|
@ -196,6 +196,7 @@ bool QAlphaWidget::eventFilter(QObject *o, QEvent *e)
|
|||||||
case QEvent::Close:
|
case QEvent::Close:
|
||||||
if (o != widget)
|
if (o != widget)
|
||||||
break;
|
break;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
case QEvent::MouseButtonPress:
|
case QEvent::MouseButtonPress:
|
||||||
case QEvent::MouseButtonDblClick:
|
case QEvent::MouseButtonDblClick:
|
||||||
showWidget = false;
|
showWidget = false;
|
||||||
|
@ -176,11 +176,10 @@ void QTabBarPrivate::initBasicStyleOption(QStyleOptionTab *option, int tabIndex)
|
|||||||
|
|
||||||
if (tab.textColor.isValid())
|
if (tab.textColor.isValid())
|
||||||
option->palette.setColor(q->foregroundRole(), tab.textColor);
|
option->palette.setColor(q->foregroundRole(), tab.textColor);
|
||||||
#ifdef Q_OS_MACOS
|
else if (q->style()->inherits("QMacStyle")
|
||||||
else if (isCurrent && !documentMode && q->isActiveWindow()) {
|
&& isCurrent && !documentMode && q->isActiveWindow()) {
|
||||||
option->palette.setColor(QPalette::WindowText, Qt::white);
|
option->palette.setColor(QPalette::WindowText, Qt::white);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
option->icon = tab.icon;
|
option->icon = tab.icon;
|
||||||
option->iconSize = q->iconSize(); // Will get the default value then.
|
option->iconSize = q->iconSize(); // Will get the default value then.
|
||||||
|
|
||||||
|
@ -1143,7 +1143,7 @@ bool QToolBar::event(QEvent *event)
|
|||||||
case QEvent::Hide:
|
case QEvent::Hide:
|
||||||
if (!isHidden())
|
if (!isHidden())
|
||||||
break;
|
break;
|
||||||
// fallthrough intended
|
Q_FALLTHROUGH();
|
||||||
case QEvent::Show:
|
case QEvent::Show:
|
||||||
d->toggleViewAction->setChecked(event->type() == QEvent::Show);
|
d->toggleViewAction->setChecked(event->type() == QEvent::Show);
|
||||||
#ifdef Q_OS_OSX
|
#ifdef Q_OS_OSX
|
||||||
|
@ -1030,6 +1030,7 @@ void QWidgetLineControl::parseInputMask(const QString &maskFields)
|
|||||||
break;
|
break;
|
||||||
case '\\':
|
case '\\':
|
||||||
escape = true;
|
escape = true;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
default:
|
default:
|
||||||
s = true;
|
s = true;
|
||||||
break;
|
break;
|
||||||
|
@ -508,23 +508,42 @@ void tst_LargeFile::mapFile()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Mac: memory-mapping beyond EOF may succeed but it could generate bus error on access
|
//Mac: memory-mapping beyond EOF may succeed but it could generate bus error on access
|
||||||
|
//FreeBSD: same
|
||||||
|
//Linux: memory-mapping beyond EOF usually succeeds, but depends on the filesystem
|
||||||
|
// 32-bit: limited to 44-bit offsets
|
||||||
|
//Windows: memory-mapping beyond EOF is not allowed
|
||||||
void tst_LargeFile::mapOffsetOverflow()
|
void tst_LargeFile::mapOffsetOverflow()
|
||||||
{
|
{
|
||||||
#ifndef Q_OS_MAC
|
enum {
|
||||||
// Out-of-range mappings should fail, and not silently clip the offset
|
#ifdef Q_OS_WIN
|
||||||
for (int i = 50; i < 63; ++i) {
|
Succeeds = false,
|
||||||
|
MaxOffset = 63
|
||||||
|
#else
|
||||||
|
Succeeds = true,
|
||||||
|
# if (defined(Q_OS_LINUX) || defined(Q_OS_ANDROID)) && Q_PROCESSOR_WORDSIZE == 4
|
||||||
|
MaxOffset = 43
|
||||||
|
# else
|
||||||
|
MaxOffset = 63
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
QByteArray zeroPage(blockSize, '\0');
|
||||||
|
for (int i = maxSizeBits + 1; i < 63; ++i) {
|
||||||
|
bool succeeds = Succeeds && (i <= MaxOffset);
|
||||||
uchar *address = 0;
|
uchar *address = 0;
|
||||||
|
qint64 offset = Q_INT64_C(1) << i;
|
||||||
|
|
||||||
address = largeFile.map(((qint64)1 << i), blockSize);
|
if (succeeds)
|
||||||
#if defined(__x86_64__)
|
QTest::ignoreMessage(QtWarningMsg, "QFSFileEngine::map: Mapping a file beyond its size is not portable");
|
||||||
QEXPECT_FAIL("", "fails on 64-bit Linux (QTBUG-21175)", Abort);
|
address = largeFile.map(offset, blockSize);
|
||||||
#endif
|
QCOMPARE(!!address, succeeds);
|
||||||
QVERIFY( !address );
|
|
||||||
|
|
||||||
address = largeFile.map(((qint64)1 << i) + blockSize, blockSize);
|
if (succeeds)
|
||||||
QVERIFY( !address );
|
QTest::ignoreMessage(QtWarningMsg, "QFSFileEngine::map: Mapping a file beyond its size is not portable");
|
||||||
|
address = largeFile.map(offset + blockSize, blockSize);
|
||||||
|
QCOMPARE(!!address, succeeds);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QTEST_APPLESS_MAIN(tst_LargeFile)
|
QTEST_APPLESS_MAIN(tst_LargeFile)
|
||||||
|
@ -30,6 +30,8 @@
|
|||||||
#include <QtCore/QCoreApplication>
|
#include <QtCore/QCoreApplication>
|
||||||
#include <QtTest/QtTest>
|
#include <QtTest/QtTest>
|
||||||
|
|
||||||
|
Q_DECLARE_METATYPE(QCryptographicHash::Algorithm)
|
||||||
|
|
||||||
class tst_QCryptographicHash : public QObject
|
class tst_QCryptographicHash : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -39,6 +41,7 @@ private slots:
|
|||||||
void intermediary_result_data();
|
void intermediary_result_data();
|
||||||
void intermediary_result();
|
void intermediary_result();
|
||||||
void sha1();
|
void sha1();
|
||||||
|
void sha3_data();
|
||||||
void sha3();
|
void sha3();
|
||||||
void files_data();
|
void files_data();
|
||||||
void files();
|
void files();
|
||||||
@ -107,22 +110,47 @@ void tst_QCryptographicHash::intermediary_result_data()
|
|||||||
<< QByteArray::fromHex("DDAF35A193617ABACC417349AE20413112E6FA4E89A97EA20A9EEEE64B55D39A2192992A274FC1A836BA3C23A3FEEBBD454D4423643CE80E2A9AC94FA54CA49F")
|
<< QByteArray::fromHex("DDAF35A193617ABACC417349AE20413112E6FA4E89A97EA20A9EEEE64B55D39A2192992A274FC1A836BA3C23A3FEEBBD454D4423643CE80E2A9AC94FA54CA49F")
|
||||||
<< QByteArray::fromHex("F3C41E7B63EE869596FC28BAD64120612C520F65928AB4D126C72C6998B551B8FF1CEDDFED4373E6717554DC89D1EEE6F0AB22FD3675E561ABA9AE26A3EEC53B");
|
<< QByteArray::fromHex("F3C41E7B63EE869596FC28BAD64120612C520F65928AB4D126C72C6998B551B8FF1CEDDFED4373E6717554DC89D1EEE6F0AB22FD3675E561ABA9AE26A3EEC53B");
|
||||||
|
|
||||||
QTest::newRow("sha3_224") << int(QCryptographicHash::Sha3_224)
|
QTest::newRow("sha3_224_empty_abc")
|
||||||
<< QByteArray("abc") << QByteArray("abc")
|
<< int(QCryptographicHash::Sha3_224)
|
||||||
<< QByteArray::fromHex("C30411768506EBE1C2871B1EE2E87D38DF342317300A9B97A95EC6A8")
|
<< QByteArray("") << QByteArray("abc")
|
||||||
<< QByteArray::fromHex("048330E7C7C8B4A41AB713B3A6F958D77B8CF3EE969930F1584DD550");
|
<< QByteArray::fromHex("6B4E03423667DBB73B6E15454F0EB1ABD4597F9A1B078E3F5B5A6BC7")
|
||||||
QTest::newRow("sha3_256") << int(QCryptographicHash::Sha3_256)
|
<< QByteArray::fromHex("E642824C3F8CF24AD09234EE7D3C766FC9A3A5168D0C94AD73B46FDF");
|
||||||
<< QByteArray("abc") << QByteArray("abc")
|
QTest::newRow("sha3_256_empty_abc")
|
||||||
<< QByteArray::fromHex("4E03657AEA45A94FC7D47BA826C8D667C0D1E6E33A64A036EC44F58FA12D6C45")
|
<< int(QCryptographicHash::Sha3_256)
|
||||||
<< QByteArray::fromHex("9F0ADAD0A59B05D2E04A1373342B10B9EB16C57C164C8A3BFCBF46DCCEE39A21");
|
<< QByteArray("") << QByteArray("abc")
|
||||||
QTest::newRow("sha3_384") << int(QCryptographicHash::Sha3_384)
|
<< QByteArray::fromHex("A7FFC6F8BF1ED76651C14756A061D662F580FF4DE43B49FA82D80A4B80F8434A")
|
||||||
<< QByteArray("abc") << QByteArray("abc")
|
<< QByteArray::fromHex("3A985DA74FE225B2045C172D6BD390BD855F086E3E9D525B46BFE24511431532");
|
||||||
<< QByteArray::fromHex("F7DF1165F033337BE098E7D288AD6A2F74409D7A60B49C36642218DE161B1F99F8C681E4AFAF31A34DB29FB763E3C28E")
|
QTest::newRow("sha3_384_empty_abc")
|
||||||
<< QByteArray::fromHex("D733B87D392D270889D3DA23AE113F349E25574B445F319CDE4CD3F877C753E9E3C65980421339B3A131457FF393939F");
|
<< int(QCryptographicHash::Sha3_384)
|
||||||
QTest::newRow("sha3_512") << int(QCryptographicHash::Sha3_512)
|
<< QByteArray("") << QByteArray("abc")
|
||||||
<< QByteArray("abc") << QByteArray("abc")
|
<< QByteArray::fromHex("0C63A75B845E4F7D01107D852E4C2485C51A50AAAA94FC61995E71BBEE983A2AC3713831264ADB47FB6BD1E058D5F004")
|
||||||
<< QByteArray::fromHex("18587DC2EA106B9A1563E32B3312421CA164C7F1F07BC922A9C83D77CEA3A1E5D0C69910739025372DC14AC9642629379540C17E2A65B19D77AA511A9D00BB96")
|
<< QByteArray::fromHex("EC01498288516FC926459F58E2C6AD8DF9B473CB0FC08C2596DA7CF0E49BE4B298D88CEA927AC7F539F1EDF228376D25");
|
||||||
<< QByteArray::fromHex("A7C392D2A42155761CA76BDDDE1C47D55486B007EDF465397BFB9DFA74D11C8F0D7C86CD29415283F1B5E7F655CEC25B869C9E9C33A8986F0B38542FB12BFB93");
|
QTest::newRow("sha3_512_empty_abc")
|
||||||
|
<< int(QCryptographicHash::Sha3_512)
|
||||||
|
<< QByteArray("") << QByteArray("abc")
|
||||||
|
<< QByteArray::fromHex("A69F73CCA23A9AC5C8B567DC185A756E97C982164FE25859E0D1DCC1475C80A615B2123AF1F5F94C11E3E9402C3AC558F500199D95B6D3E301758586281DCD26")
|
||||||
|
<< QByteArray::fromHex("B751850B1A57168A5693CD924B6B096E08F621827444F70D884F5D0240D2712E10E116E9192AF3C91A7EC57647E3934057340B4CF408D5A56592F8274EEC53F0");
|
||||||
|
|
||||||
|
QTest::newRow("sha3_224_abc_abc")
|
||||||
|
<< int(QCryptographicHash::Sha3_224)
|
||||||
|
<< QByteArray("abc") << QByteArray("abc")
|
||||||
|
<< QByteArray::fromHex("E642824C3F8CF24AD09234EE7D3C766FC9A3A5168D0C94AD73B46FDF")
|
||||||
|
<< QByteArray::fromHex("58F426458091E16FBC61DDCB8F2D2A6F30F729CAFA3C289A4EB2BCF8");
|
||||||
|
QTest::newRow("sha3_256_abc_abc")
|
||||||
|
<< int(QCryptographicHash::Sha3_256)
|
||||||
|
<< QByteArray("abc") << QByteArray("abc")
|
||||||
|
<< QByteArray::fromHex("3A985DA74FE225B2045C172D6BD390BD855F086E3E9D525B46BFE24511431532")
|
||||||
|
<< QByteArray::fromHex("6C0872716337DE1EE664C1E37F64ADE109448F02681C63A912BC230FDEFC0058");
|
||||||
|
QTest::newRow("sha3_384_abc_abc")
|
||||||
|
<< int(QCryptographicHash::Sha3_384)
|
||||||
|
<< QByteArray("abc") << QByteArray("abc")
|
||||||
|
<< QByteArray::fromHex("EC01498288516FC926459F58E2C6AD8DF9B473CB0FC08C2596DA7CF0E49BE4B298D88CEA927AC7F539F1EDF228376D25")
|
||||||
|
<< QByteArray::fromHex("34FA93E11E467D610524EC91CEDC848EE1395BCF8F4F987455478E63DB0BCE47194D33D1251A3CC32BBB18D8726040D0");
|
||||||
|
QTest::newRow("sha3_512_abc_abc")
|
||||||
|
<< int(QCryptographicHash::Sha3_512)
|
||||||
|
<< QByteArray("abc") << QByteArray("abc")
|
||||||
|
<< QByteArray::fromHex("B751850B1A57168A5693CD924B6B096E08F621827444F70D884F5D0240D2712E10E116E9192AF3C91A7EC57647E3934057340B4CF408D5A56592F8274EEC53F0")
|
||||||
|
<< QByteArray::fromHex("BB582DA40D15399ACF62AFCBBD6CFC9EE1DD5129B1EF9935DD3B21668F1A73D7841018BE3B13F281C3A8E9DA7EDB60F57B9F9F1C04033DF4CE3654B7B2ADB310");
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QCryptographicHash::intermediary_result()
|
void tst_QCryptographicHash::intermediary_result()
|
||||||
@ -172,57 +200,67 @@ void tst_QCryptographicHash::sha1()
|
|||||||
QByteArray("34AA973CD4C4DAA4F61EEB2BDBAD27316534016F"));
|
QByteArray("34AA973CD4C4DAA4F61EEB2BDBAD27316534016F"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QCryptographicHash::sha3()
|
void tst_QCryptographicHash::sha3_data()
|
||||||
{
|
{
|
||||||
// SHA3-224("The quick brown fox jumps over the lazy dog")
|
QTest::addColumn<QCryptographicHash::Algorithm>("algorithm");
|
||||||
// 10aee6b30c47350576ac2873fa89fd190cdc488442f3ef654cf23fe
|
QTest::addColumn<QByteArray>("data");
|
||||||
QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog",
|
QTest::addColumn<QByteArray>("expectedResult");
|
||||||
QCryptographicHash::Sha3_224).toHex(),
|
|
||||||
QByteArray("310aee6b30c47350576ac2873fa89fd190cdc488442f3ef654cf23fe"));
|
|
||||||
// SHA3-224("The quick brown fox jumps over the lazy dog.")
|
|
||||||
// c59d4eaeac728671c635ff645014e2afa935bebffdb5fbd207ffdeab
|
|
||||||
QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog.",
|
|
||||||
QCryptographicHash::Sha3_224).toHex(),
|
|
||||||
QByteArray("c59d4eaeac728671c635ff645014e2afa935bebffdb5fbd207ffdeab"));
|
|
||||||
|
|
||||||
// SHA3-256("The quick brown fox jumps over the lazy dog")
|
#define ROW(Tag, Algorithm, Input, Result) \
|
||||||
// 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15
|
QTest::newRow(Tag) << Algorithm << QByteArrayLiteral(Input) << QByteArray::fromHex(Result)
|
||||||
QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog",
|
|
||||||
QCryptographicHash::Sha3_256).toHex(),
|
|
||||||
QByteArray("4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15"));
|
|
||||||
|
|
||||||
// SHA3-256("The quick brown fox jumps over the lazy dog.")
|
ROW("sha3_224_pangram",
|
||||||
// 578951e24efd62a3d63a86f7cd19aaa53c898fe287d2552133220370240b572d
|
QCryptographicHash::Sha3_224,
|
||||||
QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog.",
|
"The quick brown fox jumps over the lazy dog",
|
||||||
QCryptographicHash::Sha3_256).toHex(),
|
"d15dadceaa4d5d7bb3b48f446421d542e08ad8887305e28d58335795");
|
||||||
QByteArray("578951e24efd62a3d63a86f7cd19aaa53c898fe287d2552133220370240b572d"));
|
|
||||||
|
|
||||||
// SHA3-384("The quick brown fox jumps over the lazy dog")
|
ROW("sha3_224_pangram_dot",
|
||||||
// 283990fa9d5fb731d786c5bbee94ea4db4910f18c62c03d173fc0a5e494422e8a0b3da7574dae7fa0baf005e504063b3
|
QCryptographicHash::Sha3_224,
|
||||||
QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog",
|
"The quick brown fox jumps over the lazy dog.",
|
||||||
QCryptographicHash::Sha3_384).toHex(),
|
"2d0708903833afabdd232a20201176e8b58c5be8a6fe74265ac54db0");
|
||||||
QByteArray("283990fa9d5fb731d786c5bbee94ea4db4910f18c62c03d173fc0a5e494422e8a0b3da7574dae7fa0baf005e504063b3"));
|
|
||||||
|
|
||||||
// SHA3-384("The quick brown fox jumps over the lazy dog.")
|
ROW("sha3_256_pangram",
|
||||||
// 9ad8e17325408eddb6edee6147f13856ad819bb7532668b605a24a2d958f88bd5c169e56dc4b2f89ffd325f6006d820b
|
QCryptographicHash::Sha3_256,
|
||||||
QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog.",
|
"The quick brown fox jumps over the lazy dog",
|
||||||
QCryptographicHash::Sha3_384).toHex(),
|
"69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04");
|
||||||
QByteArray("9ad8e17325408eddb6edee6147f13856ad819bb7532668b605a24a2d958f88bd5c169e56dc4b2f89ffd325f6006d820b"));
|
|
||||||
|
|
||||||
// SHA3-512("The quick brown fox jumps over the lazy dog")
|
ROW("sha3_256_pangram_dot",
|
||||||
// d135bb84d0439dbac432247ee573a23ea7d3c9deb2a968eb31d47c4fb45f1ef4422d6c531b5b9bd6f449ebcc449ea94d0a8f05f62130fda612da53c79659f609
|
QCryptographicHash::Sha3_256,
|
||||||
QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog",
|
"The quick brown fox jumps over the lazy dog.",
|
||||||
QCryptographicHash::Sha3_512).toHex(),
|
"a80f839cd4f83f6c3dafc87feae470045e4eb0d366397d5c6ce34ba1739f734d");
|
||||||
QByteArray("d135bb84d0439dbac432247ee573a23ea7d3c9deb2a968eb31d47c4fb45f1ef4422d6c531b5b9bd6f449ebcc449ea94d0a8f05f62130fda612da53c79659f609"));
|
|
||||||
|
|
||||||
// SHA3-512("The quick brown fox jumps over the lazy dog.")
|
ROW("sha3_384_pangram",
|
||||||
// ab7192d2b11f51c7dd744e7b3441febf397ca07bf812cceae122ca4ded6387889064f8db9230f173f6d1ab6e24b6e50f065b039f799f5592360a6558eb52d760
|
QCryptographicHash::Sha3_384,
|
||||||
QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog.",
|
"The quick brown fox jumps over the lazy dog",
|
||||||
QCryptographicHash::Sha3_512).toHex(),
|
"7063465e08a93bce31cd89d2e3ca8f602498696e253592ed26f07bf7e703cf328581e1471a7ba7ab119b1a9ebdf8be41");
|
||||||
QByteArray("ab7192d2b11f51c7dd744e7b3441febf397ca07bf812cceae122ca4ded6387889064f8db9230f173f6d1ab6e24b6e50f065b039f799f5592360a6558eb52d760"));
|
|
||||||
|
ROW("sha3_384_pangram_dot",
|
||||||
|
QCryptographicHash::Sha3_384,
|
||||||
|
"The quick brown fox jumps over the lazy dog.",
|
||||||
|
"1a34d81695b622df178bc74df7124fe12fac0f64ba5250b78b99c1273d4b080168e10652894ecad5f1f4d5b965437fb9");
|
||||||
|
|
||||||
|
ROW("sha3_512_pangram",
|
||||||
|
QCryptographicHash::Sha3_512,
|
||||||
|
"The quick brown fox jumps over the lazy dog",
|
||||||
|
"01dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450");
|
||||||
|
|
||||||
|
ROW("sha3_512_pangram_dot",
|
||||||
|
QCryptographicHash::Sha3_512,
|
||||||
|
"The quick brown fox jumps over the lazy dog.",
|
||||||
|
"18f4f4bd419603f95538837003d9d254c26c23765565162247483f65c50303597bc9ce4d289f21d1c2f1f458828e33dc442100331b35e7eb031b5d38ba6460f8");
|
||||||
|
|
||||||
|
#undef ROW
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(QCryptographicHash::Algorithm);
|
void tst_QCryptographicHash::sha3()
|
||||||
|
{
|
||||||
|
QFETCH(QCryptographicHash::Algorithm, algorithm);
|
||||||
|
QFETCH(QByteArray, data);
|
||||||
|
QFETCH(QByteArray, expectedResult);
|
||||||
|
|
||||||
|
const auto result = QCryptographicHash::hash(data, algorithm);
|
||||||
|
QCOMPARE(result, expectedResult);
|
||||||
|
}
|
||||||
|
|
||||||
void tst_QCryptographicHash::files_data() {
|
void tst_QCryptographicHash::files_data() {
|
||||||
QTest::addColumn<QString>("filename");
|
QTest::addColumn<QString>("filename");
|
||||||
|
@ -29,8 +29,11 @@
|
|||||||
#include <QtTest/QtTest>
|
#include <QtTest/QtTest>
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
#include <QtAlgorithms>
|
#include <QtAlgorithms>
|
||||||
|
#include <QtGui/QAbstractTextDocumentLayout>
|
||||||
#include <QtGui/QPageLayout>
|
#include <QtGui/QPageLayout>
|
||||||
#include <QtGui/QPdfWriter>
|
#include <QtGui/QPdfWriter>
|
||||||
|
#include <QtGui/QTextCursor>
|
||||||
|
#include <QtGui/QTextDocument>
|
||||||
|
|
||||||
class tst_QPdfWriter : public QObject
|
class tst_QPdfWriter : public QObject
|
||||||
{
|
{
|
||||||
@ -40,6 +43,7 @@ private slots:
|
|||||||
void basics();
|
void basics();
|
||||||
void testPageMetrics_data();
|
void testPageMetrics_data();
|
||||||
void testPageMetrics();
|
void testPageMetrics();
|
||||||
|
void qtbug59443();
|
||||||
};
|
};
|
||||||
|
|
||||||
void tst_QPdfWriter::basics()
|
void tst_QPdfWriter::basics()
|
||||||
@ -245,6 +249,28 @@ void tst_QPdfWriter::testPageMetrics()
|
|||||||
QCOMPARE(writer.pageLayout().paintRect(QPageLayout::Millimeter), QRectF(leftMMf, topMMf, heightMMf - leftMMf - rightMMf, widthMMf - topMMf - bottomMMf));
|
QCOMPARE(writer.pageLayout().paintRect(QPageLayout::Millimeter), QRectF(leftMMf, topMMf, heightMMf - leftMMf - rightMMf, widthMMf - topMMf - bottomMMf));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_QPdfWriter::qtbug59443()
|
||||||
|
{
|
||||||
|
// Do not crash or assert
|
||||||
|
QTemporaryFile file;
|
||||||
|
QVERIFY2(file.open(), qPrintable(file.errorString()));
|
||||||
|
QPdfWriter writer(file.fileName());
|
||||||
|
writer.setPageSize(QPdfWriter::A4);
|
||||||
|
QTextDocument doc;
|
||||||
|
doc.documentLayout()->setPaintDevice(&writer);
|
||||||
|
|
||||||
|
doc.setUndoRedoEnabled(false);
|
||||||
|
QTextCursor cursor(&doc);
|
||||||
|
QFont font = doc.defaultFont();
|
||||||
|
font.setFamily("Calibri");
|
||||||
|
font.setPointSize(8);
|
||||||
|
doc.setDefaultFont(font);
|
||||||
|
|
||||||
|
cursor.insertText(QString::fromStdWString(L"기초하며, 베어링제조업체와 타\n"));
|
||||||
|
doc.print(&writer);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
QTEST_MAIN(tst_QPdfWriter)
|
QTEST_MAIN(tst_QPdfWriter)
|
||||||
|
|
||||||
#include "tst_qpdfwriter.moc"
|
#include "tst_qpdfwriter.moc"
|
||||||
|
@ -150,7 +150,8 @@ public:
|
|||||||
m_fnConstraint = fnConstraint;
|
m_fnConstraint = fnConstraint;
|
||||||
}
|
}
|
||||||
|
|
||||||
QSizeF m_sizeHints[Qt::NSizeHints];
|
// Initializer {} is a workaround for gcc bug 68949
|
||||||
|
QSizeF m_sizeHints[Qt::NSizeHints] {};
|
||||||
QSizeF (*m_fnConstraint)(Qt::SizeHint, const QSizeF &);
|
QSizeF (*m_fnConstraint)(Qt::SizeHint, const QSizeF &);
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -280,8 +281,10 @@ struct ItemDesc
|
|||||||
int m_rowSpan;
|
int m_rowSpan;
|
||||||
int m_colSpan;
|
int m_colSpan;
|
||||||
QSizePolicy m_sizePolicy;
|
QSizePolicy m_sizePolicy;
|
||||||
QSizeF m_sizeHints[Qt::NSizeHints];
|
|
||||||
QSizeF m_sizes[Qt::NSizeHints];
|
// Initializer {} is a workaround for gcc bug 68949
|
||||||
|
QSizeF m_sizeHints[Qt::NSizeHints] {};
|
||||||
|
QSizeF m_sizes[Qt::NSizeHints] {};
|
||||||
Qt::Alignment m_align;
|
Qt::Alignment m_align;
|
||||||
|
|
||||||
Qt::Orientation m_constraintOrientation;
|
Qt::Orientation m_constraintOrientation;
|
||||||
|
@ -165,7 +165,8 @@ public:
|
|||||||
return QGraphicsWidget::sizeHint(which, constraint);
|
return QGraphicsWidget::sizeHint(which, constraint);
|
||||||
}
|
}
|
||||||
|
|
||||||
QSizeF m_sizeHints[Qt::NSizeHints];
|
// Initializer {} is a workaround for gcc bug 68949
|
||||||
|
QSizeF m_sizeHints[Qt::NSizeHints] {};
|
||||||
QBrush m_brush;
|
QBrush m_brush;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user