fb2f42b604
Quite a big change since it has been several years since the last update. This drops the Harfbuzz source on top of the existing code in Qt, and does the following additional changes: 1. Deletes old source files that have been removed upstream (everything named foo-private.hh is now renamed to just foo.hh for instance). 2. Added a header guard to config.h because it may be double-included. 3. Implement a memory barrier needed by hb-atomic.hh. 4. Changed the signature of hb_atomic_int_impl_add() to take a pointer to match new upstream. 5. Updated .pro file to include new files and removed old. 6. Updated qt_attribution.json 7. No longer disable deprecated APIs since hb_ot_tags_from_script() is now deprecated and is used from Qt code. 8. Updated and applied the patch in patches/ for CoreText. 9. Updated tst_qtextscriptengine::thaiWithZWJ() according to changes in Harfbuzz and disabled it for system-harfbuzz, since this may be an older version of harfbuzz depending on the system. Fixes: QTBUG-79606 Change-Id: I3f057a43ff44ee416628b75ef12fb1a221f31910 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
59 lines
2.0 KiB
C++
59 lines
2.0 KiB
C++
/*
|
|
* Copyright (C) 2015 The Qt Company Ltd.
|
|
* Copyright (C) 2015 Konstantin Ritt
|
|
*
|
|
* Permission is hereby granted, without written agreement and without
|
|
* license or royalty fees, to use, copy, modify, and distribute this
|
|
* software and its documentation for any purpose, provided that the
|
|
* above copyright notice and the following two paragraphs appear in
|
|
* all copies of this software.
|
|
*
|
|
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
|
|
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
|
|
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
|
|
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
|
* DAMAGE.
|
|
*
|
|
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
|
|
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
|
|
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
|
|
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
|
*
|
|
*/
|
|
|
|
#ifndef QHARFBUZZ_CONFIG_H
|
|
#define QHARFBUZZ_CONFIG_H
|
|
|
|
#include <QtCore/qatomic.h>
|
|
|
|
QT_USE_NAMESPACE
|
|
|
|
namespace {
|
|
|
|
// We need to cast hb_atomic_int_t to QAtomicInt and pointers to
|
|
// QAtomicPointer instead of using QAtomicOps, otherwise we get a failed
|
|
// overload resolution of the template arguments for testAndSetOrdered.
|
|
template <typename T>
|
|
inline QAtomicPointer<T> *makeAtomicPointer(T * const &ptr)
|
|
{
|
|
return reinterpret_cast<QAtomicPointer<T> *>(const_cast<T **>(&ptr));
|
|
}
|
|
|
|
static inline void _hb_memory_barrier ()
|
|
{
|
|
QAtomicInt a;
|
|
a.ref(); // Ordered memory semantics, so imposes a memory barrier at this point
|
|
}
|
|
|
|
} // namespace
|
|
|
|
typedef int hb_atomic_int_impl_t;
|
|
#define HB_ATOMIC_INT_IMPL_INIT(V) (V)
|
|
#define hb_atomic_int_impl_add(AI, V) reinterpret_cast<QAtomicInt *>(AI)->fetchAndAddOrdered(V)
|
|
|
|
#define hb_atomic_ptr_impl_get(P) makeAtomicPointer(*(P))->loadAcquire()
|
|
#define hb_atomic_ptr_impl_cmpexch(P,O,N) makeAtomicPointer(*(P))->testAndSetOrdered((O), (N))
|
|
|
|
#endif // QHARFBUZZ_CONFIG_H
|