Revision control
++ // Copyright (C) 2023 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
++
++ /*!
++ \example scenegraph/threadedanimation
++ \title Scene Graph - Threaded Animation
++ \examplecategory {Graphics}
++ \ingroup qtquickexamples
++ \brief Shows benefits of custom items animating independently of the main thread while using the threaded render loop of Qt Quick.
++
++ \image threadedanimation-example.jpg {Two spinner animations comparing
++ main thread and scene graph thread animation with Blocked button}
++
++ This example shows the fundamental concept behind the \l Animator types, by
++ implementing a custom item that effectively animates itself by not relying
++ on the standard Qt Quick animation framework driven on the main thread.
++
++ The left and right spinners should behave identically under normal
++ conditions. However, once the example blocks the main thread by peforming
++ some heavy operation, it will become noticeable that the left spinner is not
++ animating smoothly anymore.
++
++ \note This example should be run with the \c threaded render loop of Qt
++ Quick. This is the default in most cases. There are no positive effects when
++ using the \c basic render loop, because there everything, including all
++ rendering, happens on the main thread.
++
++ Applications without custom QQuickItem implementations can get the same
++ benefits by using one of the \l Animator types, such as \l XAnimator or \l
++ OpacityAnimator from QML. Whereas when building custom items, similar
++ results can be achieved by following the example's implementation.
++
++ \sa {Qt Quick Scene Graph}
++ */