summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.qmake.conf2
-rw-r--r--src/3rdparty/assimp/assimp.pri5
-rw-r--r--src/animation/frontend/qabstractanimation.cpp2
-rw-r--r--src/animation/frontend/qabstractanimationclip.cpp2
-rw-r--r--src/animation/frontend/qabstractchannelmapping.cpp2
-rw-r--r--src/animation/frontend/qabstractclipanimator.cpp2
-rw-r--r--src/animation/frontend/qabstractclipblendnode.cpp2
-rw-r--r--src/animation/frontend/qadditiveclipblend.cpp2
-rw-r--r--src/animation/frontend/qanimationaspect.cpp2
-rw-r--r--src/animation/frontend/qanimationclip.cpp2
-rw-r--r--src/animation/frontend/qanimationcliploader.cpp2
-rw-r--r--src/animation/frontend/qanimationcontroller.cpp2
-rw-r--r--src/animation/frontend/qanimationgroup.cpp2
-rw-r--r--src/animation/frontend/qblendedclipanimator.cpp2
-rw-r--r--src/animation/frontend/qcallbackmapping.cpp2
-rw-r--r--src/animation/frontend/qchannelmapper.cpp2
-rw-r--r--src/animation/frontend/qchannelmapping.cpp2
-rw-r--r--src/animation/frontend/qclipanimator.cpp2
-rw-r--r--src/animation/frontend/qclipblendvalue.cpp2
-rw-r--r--src/animation/frontend/qclock.cpp2
-rw-r--r--src/animation/frontend/qkeyframeanimation.cpp2
-rw-r--r--src/animation/frontend/qlerpclipblend.cpp2
-rw-r--r--src/animation/frontend/qmorphinganimation.cpp2
-rw-r--r--src/animation/frontend/qmorphtarget.cpp2
-rw-r--r--src/animation/frontend/qskeletonmapping.cpp2
-rw-r--r--src/animation/frontend/qvertexblendanimation.cpp2
-rw-r--r--src/core/aspects/aspectcommanddebugger.cpp2
-rw-r--r--src/core/aspects/qabstractaspect.cpp4
-rw-r--r--src/core/aspects/qaspectengine.cpp2
-rw-r--r--src/core/aspects/qaspectmanager.cpp2
-rw-r--r--src/core/jobs/qabstractaspectjobmanager.cpp2
-rw-r--r--src/core/jobs/qaspectjobmanager.cpp24
-rw-r--r--src/core/jobs/qaspectjobmanager_p.h1
-rw-r--r--src/core/jobs/qthreadpooler.cpp25
-rw-r--r--src/core/jobs/qthreadpooler_p.h2
-rw-r--r--src/core/nodes/propertychangehandler.cpp2
-rw-r--r--src/core/nodes/qcomponent.cpp2
-rw-r--r--src/core/nodes/qentity.cpp2
-rw-r--r--src/core/nodes/qnode.cpp2
-rw-r--r--src/core/qchangearbiter.cpp2
-rw-r--r--src/core/qscheduler.cpp2
-rw-r--r--src/core/services/qabstractframeadvanceservice.cpp2
-rw-r--r--src/core/services/qdownloadnetworkworker.cpp2
-rw-r--r--src/core/services/qeventfilterservice.cpp2
-rw-r--r--src/core/services/qopenglinformationservice.cpp2
-rw-r--r--src/core/services/qservicelocator.cpp2
-rw-r--r--src/core/services/qsysteminformationservice.cpp2
-rw-r--r--src/core/services/qtickclockservice.cpp2
-rw-r--r--src/core/transforms/qabstractskeleton.cpp2
-rw-r--r--src/core/transforms/qarmature.cpp2
-rw-r--r--src/core/transforms/qjoint.cpp2
-rw-r--r--src/core/transforms/qskeleton.cpp2
-rw-r--r--src/core/transforms/qskeletonloader.cpp2
-rw-r--r--src/extras/3dtext/qextrudedtextgeometry.cpp2
-rw-r--r--src/extras/3dtext/qextrudedtextmesh.cpp2
-rw-r--r--src/extras/defaults/qabstractcameracontroller.cpp3
-rw-r--r--src/extras/defaults/qabstractspritesheet.cpp2
-rw-r--r--src/extras/defaults/qdiffusemapmaterial.cpp2
-rw-r--r--src/extras/defaults/qdiffusespecularmapmaterial.cpp2
-rw-r--r--src/extras/defaults/qdiffusespecularmaterial.cpp2
-rw-r--r--src/extras/defaults/qforwardrenderer.cpp2
-rw-r--r--src/extras/defaults/qgoochmaterial.cpp2
-rw-r--r--src/extras/defaults/qmetalroughmaterial.cpp2
-rw-r--r--src/extras/defaults/qmorphphongmaterial.cpp2
-rw-r--r--src/extras/defaults/qnormaldiffusemapalphamaterial.cpp2
-rw-r--r--src/extras/defaults/qnormaldiffusemapmaterial.cpp2
-rw-r--r--src/extras/defaults/qnormaldiffusespecularmapmaterial.cpp2
-rw-r--r--src/extras/defaults/qpervertexcolormaterial.cpp2
-rw-r--r--src/extras/defaults/qphongalphamaterial.cpp2
-rw-r--r--src/extras/defaults/qphongmaterial.cpp2
-rw-r--r--src/extras/defaults/qskyboxentity.cpp2
-rw-r--r--src/extras/defaults/qspritegrid.cpp2
-rw-r--r--src/extras/defaults/qspritesheet.cpp2
-rw-r--r--src/extras/defaults/qspritesheetitem.cpp2
-rw-r--r--src/extras/defaults/qt3dwindow.cpp2
-rw-r--r--src/extras/defaults/qtexturematerial.cpp2
-rw-r--r--src/extras/geometries/qconegeometry.cpp2
-rw-r--r--src/extras/geometries/qconemesh.cpp2
-rw-r--r--src/extras/geometries/qcuboidgeometry.cpp2
-rw-r--r--src/extras/geometries/qcuboidmesh.cpp2
-rw-r--r--src/extras/geometries/qcylindergeometry.cpp2
-rw-r--r--src/extras/geometries/qcylindermesh.cpp2
-rw-r--r--src/extras/geometries/qplanegeometry.cpp2
-rw-r--r--src/extras/geometries/qplanemesh.cpp2
-rw-r--r--src/extras/geometries/qspheregeometry.cpp2
-rw-r--r--src/extras/geometries/qspheremesh.cpp2
-rw-r--r--src/extras/geometries/qtorusgeometry.cpp2
-rw-r--r--src/extras/geometries/qtorusmesh.cpp2
-rw-r--r--src/extras/text/distancefieldtextrenderer.cpp2
-rw-r--r--src/extras/text/qdistancefieldglyphcache.cpp23
-rw-r--r--src/extras/text/qtext2dentity.cpp5
-rw-r--r--src/extras/text/qtext2dmaterial.cpp2
-rw-r--r--src/extras/text/qtextureatlas.cpp2
-rw-r--r--src/input/backend/keyboardmousegenericdeviceintegration.cpp2
-rw-r--r--src/input/frontend/qabstractactioninput.cpp2
-rw-r--r--src/input/frontend/qabstractaxisinput.cpp2
-rw-r--r--src/input/frontend/qabstractphysicaldevice.cpp2
-rw-r--r--src/input/frontend/qabstractphysicaldeviceproxy.cpp2
-rw-r--r--src/input/frontend/qaction.cpp2
-rw-r--r--src/input/frontend/qactioninput.cpp2
-rw-r--r--src/input/frontend/qanalogaxisinput.cpp2
-rw-r--r--src/input/frontend/qaxis.cpp2
-rw-r--r--src/input/frontend/qaxisaccumulator.cpp2
-rw-r--r--src/input/frontend/qaxissetting.cpp2
-rw-r--r--src/input/frontend/qbuttonaxisinput.cpp2
-rw-r--r--src/input/frontend/qgenericinputdevice.cpp2
-rw-r--r--src/input/frontend/qinputaspect.cpp2
-rw-r--r--src/input/frontend/qinputchord.cpp2
-rw-r--r--src/input/frontend/qinputdeviceintegration.cpp2
-rw-r--r--src/input/frontend/qinputdeviceplugin.cpp2
-rw-r--r--src/input/frontend/qinputsequence.cpp2
-rw-r--r--src/input/frontend/qinputsettings.cpp2
-rw-r--r--src/input/frontend/qkeyboarddevice.cpp2
-rw-r--r--src/input/frontend/qkeyboardhandler.cpp2
-rw-r--r--src/input/frontend/qkeyevent.cpp2
-rw-r--r--src/input/frontend/qlogicaldevice.cpp2
-rw-r--r--src/input/frontend/qmousedevice.cpp2
-rw-r--r--src/input/frontend/qmouseevent.cpp2
-rw-r--r--src/input/frontend/qmousehandler.cpp2
-rw-r--r--src/logic/executor.cpp2
-rw-r--r--src/logic/qframeaction.cpp2
-rw-r--r--src/logic/qlogicaspect.cpp2
-rw-r--r--src/logic/qlogicaspect_p.h1
-rw-r--r--src/plugins/geometryloaders/default/basegeometryloader.cpp2
-rw-r--r--src/plugins/geometryloaders/gltf/gltfgeometryloader.cpp11
-rw-r--r--src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3.cpp11
-rw-r--r--src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3_2.cpp2
-rw-r--r--src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3_p.h1
-rw-r--r--src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl3_2.cpp2
-rw-r--r--src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl3_3.cpp2
-rw-r--r--src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl4.cpp9
-rw-r--r--src/plugins/renderers/opengl/graphicshelpers/submissioncontext.cpp8
-rw-r--r--src/plugins/renderers/opengl/renderer/renderer.cpp5
-rw-r--r--src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp20
-rw-r--r--src/plugins/renderers/opengl/renderer/shaderparameterpack.cpp20
-rw-r--r--src/plugins/renderers/rhi/renderer/renderviewbuilder.cpp12
-rw-r--r--src/plugins/renderers/rhi/renderer/renderviewbuilder_p.h2
-rw-r--r--src/plugins/sceneparsers/assimp/assimpimporter.cpp2
-rw-r--r--src/plugins/sceneparsers/gltf/gltfimporter.cpp1
-rw-r--r--src/quick3d/imports/animation/qt3dquick3danimationplugin.cpp2
-rw-r--r--src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp2
-rw-r--r--src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp2
-rw-r--r--src/quick3d/imports/input/qt3dquick3dinputplugin.cpp2
-rw-r--r--src/quick3d/imports/logic/qt3dquick3dlogicplugin.cpp2
-rw-r--r--src/quick3d/imports/render/qt3dquick3drenderplugin.cpp2
-rw-r--r--src/quick3d/imports/scene2d/qtquickscene2dplugin.cpp2
-rw-r--r--src/quick3d/imports/scene3d/qtquickscene3dplugin.cpp2
-rw-r--r--src/quick3d/imports/scene3d/scene3ditem.cpp9
-rw-r--r--src/quick3d/imports/scene3d/scene3ditem_p.h2
-rw-r--r--src/quick3d/imports/scene3d/scene3drenderer.cpp10
-rw-r--r--src/quick3d/imports/scene3d/scene3drenderer_p.h1
-rw-r--r--src/quick3d/imports/scene3d/scene3dview.cpp38
-rw-r--r--src/quick3d/imports/scene3d/scene3dview_p.h9
-rw-r--r--src/quick3d/quick3d/items/quick3dentity.cpp2
-rw-r--r--src/quick3d/quick3d/items/quick3djoint.cpp2
-rw-r--r--src/quick3d/quick3d/items/quick3dnode.cpp2
-rw-r--r--src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp40
-rw-r--r--src/quick3d/quick3d/qquaternionanimation.cpp2
-rw-r--r--src/quick3d/quick3d/qt3dquickvaluetypes.cpp2
-rw-r--r--src/quick3d/quick3danimation/items/quick3danimationcontroller.cpp2
-rw-r--r--src/quick3d/quick3danimation/items/quick3danimationgroup.cpp2
-rw-r--r--src/quick3d/quick3danimation/items/quick3dchannelmapper.cpp2
-rw-r--r--src/quick3d/quick3danimation/items/quick3dkeyframeanimation.cpp2
-rw-r--r--src/quick3d/quick3danimation/items/quick3dmorphinganimation.cpp2
-rw-r--r--src/quick3d/quick3danimation/items/quick3dmorphtarget.cpp2
-rw-r--r--src/quick3d/quick3danimation/items/quick3dvertexblendanimation.cpp2
-rw-r--r--src/quick3d/quick3dextras/items/quick3dlevelofdetailloader.cpp2
-rw-r--r--src/quick3d/quick3dextras/items/quick3dspritesheet.cpp2
-rw-r--r--src/quick3d/quick3dextras/qt3dquickwindow.cpp1
-rw-r--r--src/quick3d/quick3dinput/items/quick3daction.cpp2
-rw-r--r--src/quick3d/quick3dinput/items/quick3daxis.cpp2
-rw-r--r--src/quick3d/quick3dinput/items/quick3dinputchord.cpp2
-rw-r--r--src/quick3d/quick3dinput/items/quick3dinputsequence.cpp2
-rw-r--r--src/quick3d/quick3dinput/items/quick3dlogicaldevice.cpp2
-rw-r--r--src/quick3d/quick3dinput/items/quick3dphysicaldevice.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dbuffer.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3deffect.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dlayerfilter.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dmaterial.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dmemorybarrier.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dparameter.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3draycaster.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3drenderpass.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3drenderpassfilter.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3drendertargetoutput.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dscene.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dscreenraycaster.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dshaderdata.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dstateset.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dtechnique.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dtechniquefilter.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dtexture.cpp2
-rw-r--r--src/quick3d/quick3drender/items/quick3dviewport.cpp2
-rw-r--r--src/quick3d/quick3dscene2d/items/qscene2d.cpp2
-rw-r--r--src/quick3d/quick3dscene2d/items/qt3dquick3dscene2d.cpp2
-rw-r--r--src/quick3d/quick3dscene2d/items/scene2d.cpp2
-rw-r--r--src/quick3d/quick3dscene2d/items/scene2dmanager.cpp2
-rw-r--r--src/render/backend/offscreensurfacehelper.cpp2
-rw-r--r--src/render/backend/platformsurfacefilter.cpp2
-rw-r--r--src/render/framegraph/qblitframebuffer.cpp2
-rw-r--r--src/render/framegraph/qbuffercapture.cpp2
-rw-r--r--src/render/framegraph/qcameraselector.cpp2
-rw-r--r--src/render/framegraph/qclearbuffers.cpp2
-rw-r--r--src/render/framegraph/qdebugoverlay.cpp2
-rw-r--r--src/render/framegraph/qdispatchcompute.cpp2
-rw-r--r--src/render/framegraph/qframegraphnode.cpp2
-rw-r--r--src/render/framegraph/qfrustumculling.cpp2
-rw-r--r--src/render/framegraph/qlayerfilter.cpp2
-rw-r--r--src/render/framegraph/qmemorybarrier.cpp2
-rw-r--r--src/render/framegraph/qnodraw.cpp2
-rw-r--r--src/render/framegraph/qnopicking.cpp2
-rw-r--r--src/render/framegraph/qproximityfilter.cpp2
-rw-r--r--src/render/framegraph/qrendercapture.cpp2
-rw-r--r--src/render/framegraph/qrenderpassfilter.cpp2
-rw-r--r--src/render/framegraph/qrenderstateset.cpp2
-rw-r--r--src/render/framegraph/qrendersurfaceselector.cpp4
-rw-r--r--src/render/framegraph/qrendertargetselector.cpp2
-rw-r--r--src/render/framegraph/qsetfence.cpp2
-rw-r--r--src/render/framegraph/qsortpolicy.cpp2
-rw-r--r--src/render/framegraph/qsubtreeenabler.cpp2
-rw-r--r--src/render/framegraph/qtechniquefilter.cpp2
-rw-r--r--src/render/framegraph/qviewport.cpp4
-rw-r--r--src/render/framegraph/qwaitfence.cpp2
-rw-r--r--src/render/frontend/qcamera.cpp2
-rw-r--r--src/render/frontend/qcameralens.cpp2
-rw-r--r--src/render/frontend/qcomputecommand.cpp2
-rw-r--r--src/render/frontend/qlayer.cpp2
-rw-r--r--src/render/frontend/qlevelofdetailboundingsphere.cpp2
-rw-r--r--src/render/frontend/qlevelofdetailswitch.cpp2
-rw-r--r--src/render/frontend/qpickingsettings.cpp2
-rw-r--r--src/render/frontend/qrenderaspect.cpp2
-rw-r--r--src/render/frontend/qrendercapabilities.cpp2
-rw-r--r--src/render/frontend/qrenderpluginfactoryif.cpp2
-rw-r--r--src/render/frontend/qrendertarget.cpp2
-rw-r--r--src/render/frontend/qrendertargetoutput.cpp2
-rw-r--r--src/render/geometry/geometry.cpp21
-rw-r--r--src/render/geometry/geometry_p.h3
-rw-r--r--src/render/geometry/qattribute.cpp2
-rw-r--r--src/render/geometry/qbuffer.cpp2
-rw-r--r--src/render/geometry/qgeometry.cpp39
-rw-r--r--src/render/geometry/qgeometry.h1
-rw-r--r--src/render/geometry/qgeometry_p.h1
-rw-r--r--src/render/geometry/qgeometryrenderer.cpp2
-rw-r--r--src/render/geometry/qmesh.cpp2
-rw-r--r--src/render/io/qgeometryloaderfactory.cpp2
-rw-r--r--src/render/io/qsceneexporter.cpp2
-rw-r--r--src/render/io/qsceneexportplugin.cpp2
-rw-r--r--src/render/io/qsceneimporter.cpp2
-rw-r--r--src/render/io/qsceneimportplugin.cpp2
-rw-r--r--src/render/io/qsceneloader.cpp2
-rw-r--r--src/render/jobs/calcboundingvolumejob.cpp33
-rw-r--r--src/render/jobs/calcboundingvolumejob_p.h2
-rw-r--r--src/render/lights/qabstractlight.cpp2
-rw-r--r--src/render/lights/qdirectionallight.cpp2
-rw-r--r--src/render/lights/qpointlight.cpp2
-rw-r--r--src/render/lights/qspotlight.cpp2
-rw-r--r--src/render/materialsystem/filterkey.cpp7
-rw-r--r--src/render/materialsystem/filterkey_p.h9
-rw-r--r--src/render/materialsystem/qeffect.cpp2
-rw-r--r--src/render/materialsystem/qfilterkey.cpp2
-rw-r--r--src/render/materialsystem/qgraphicsapifilter.cpp2
-rw-r--r--src/render/materialsystem/qmaterial.cpp2
-rw-r--r--src/render/materialsystem/qparameter.cpp2
-rw-r--r--src/render/materialsystem/qrenderpass.cpp2
-rw-r--r--src/render/materialsystem/qshaderdata.cpp2
-rw-r--r--src/render/materialsystem/qshaderimage.cpp2
-rw-r--r--src/render/materialsystem/qshaderprogram.cpp2
-rw-r--r--src/render/materialsystem/qshaderprogrambuilder.cpp2
-rw-r--r--src/render/picking/pickeventfilter.cpp2
-rw-r--r--src/render/picking/qabstractraycaster.cpp2
-rw-r--r--src/render/picking/qobjectpicker.cpp2
-rw-r--r--src/render/picking/qpickevent.cpp2
-rw-r--r--src/render/picking/qpicklineevent.cpp2
-rw-r--r--src/render/picking/qpickpointevent.cpp2
-rw-r--r--src/render/picking/qpicktriangleevent.cpp2
-rw-r--r--src/render/picking/qraycaster.cpp2
-rw-r--r--src/render/picking/qraycasterhit.cpp2
-rw-r--r--src/render/picking/qscreenraycaster.cpp2
-rw-r--r--src/render/qrendererplugin.cpp2
-rw-r--r--src/render/raycasting/qabstractcollisionqueryservice.cpp2
-rw-r--r--src/render/renderstates/qalphacoverage.cpp2
-rw-r--r--src/render/renderstates/qalphatest.cpp2
-rw-r--r--src/render/renderstates/qblendequation.cpp2
-rw-r--r--src/render/renderstates/qblendequationarguments.cpp2
-rw-r--r--src/render/renderstates/qclipplane.cpp2
-rw-r--r--src/render/renderstates/qcolormask.cpp2
-rw-r--r--src/render/renderstates/qcullface.cpp2
-rw-r--r--src/render/renderstates/qdepthrange.cpp2
-rw-r--r--src/render/renderstates/qdepthtest.cpp2
-rw-r--r--src/render/renderstates/qdithering.cpp2
-rw-r--r--src/render/renderstates/qfrontface.cpp2
-rw-r--r--src/render/renderstates/qlinewidth.cpp2
-rw-r--r--src/render/renderstates/qmultisampleantialiasing.cpp2
-rw-r--r--src/render/renderstates/qnodepthmask.cpp2
-rw-r--r--src/render/renderstates/qpointsize.cpp2
-rw-r--r--src/render/renderstates/qpolygonoffset.cpp2
-rw-r--r--src/render/renderstates/qrastermode.cpp2
-rw-r--r--src/render/renderstates/qrenderstate.cpp2
-rw-r--r--src/render/renderstates/qscissortest.cpp2
-rw-r--r--src/render/renderstates/qseamlesscubemap.cpp2
-rw-r--r--src/render/renderstates/qstencilmask.cpp2
-rw-r--r--src/render/renderstates/qstenciloperation.cpp2
-rw-r--r--src/render/renderstates/qstenciloperationarguments.cpp2
-rw-r--r--src/render/renderstates/qstenciltest.cpp2
-rw-r--r--src/render/renderstates/qstenciltestarguments.cpp2
-rw-r--r--src/render/shadergraph/qshaderlanguage.cpp2
-rw-r--r--src/render/texture/qabstracttexture.cpp2
-rw-r--r--src/render/texture/qabstracttextureimage.cpp2
-rw-r--r--src/render/texture/qpaintedtextureimage.cpp3
-rw-r--r--src/render/texture/qtexture.cpp6
-rw-r--r--src/render/texture/qtextureimage.cpp2
-rw-r--r--src/render/texture/qtexturewrapmode.cpp2
-rw-r--r--tests/auto/core/common/qbackendnodetester.cpp2
-rw-r--r--tests/auto/core/matrix4x4_sse/tst_matrix4x4_sse.cpp4
-rw-r--r--tests/auto/core/qchangearbiter/qchangearbiter.pro2
-rw-r--r--tests/auto/core/qchangearbiter/tst_qchangearbiter.cpp810
-rw-r--r--tests/auto/core/threadpooler/tst_threadpooler.cpp2
-rw-r--r--tests/auto/core/vector3d_sse/tst_vector3d_sse.cpp4
-rw-r--r--tests/auto/core/vector4d_sse/tst_vector4d_sse.cpp5
-rw-r--r--tests/auto/extras/qtext2dentity/tst_qtext2dentity.cpp2
-rw-r--r--tests/auto/input/commons/commons.pri2
-rw-r--r--tests/auto/input/commons/testdevice.cpp31
-rw-r--r--tests/auto/quick3d/dynamicnodecreation/BLACKLIST3
-rw-r--r--tests/auto/quick3d/quick3dnodeinstantiator/data/createMultipleAsync.qml13
-rw-r--r--tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp46
-rw-r--r--tests/auto/render/geometry/tst_geometry.cpp10
-rw-r--r--tests/auto/render/opengl/graphicshelpergl4/BLACKLIST4
-rw-r--r--tests/auto/render/opengl/renderviews/tst_renderviews.cpp62
-rw-r--r--tests/auto/render/qgeometry/tst_qgeometry.cpp25
-rw-r--r--tests/auto/render/qmlscenereader/qmlscenereader.cpp2
-rw-r--r--tests/auto/render/qmlscenereader/qmlscenereader.h5
-rw-r--r--tests/auto/render/raycasting/BLACKLIST3
-rw-r--r--tests/auto/shared/util.cpp2
334 files changed, 1048 insertions, 969 deletions
diff --git a/.qmake.conf b/.qmake.conf
index f12bc5230..74ed94e7c 100644
--- a/.qmake.conf
+++ b/.qmake.conf
@@ -6,4 +6,4 @@ load(qt_build_config)
DEFINES += QT_NO_FOREACH
DEFINES += QT_NO_JAVA_STYLE_ITERATORS
-MODULE_VERSION = 5.15.8
+MODULE_VERSION = 5.15.13
diff --git a/src/3rdparty/assimp/assimp.pri b/src/3rdparty/assimp/assimp.pri
index 2ad74b9d6..9d5fd9225 100644
--- a/src/3rdparty/assimp/assimp.pri
+++ b/src/3rdparty/assimp/assimp.pri
@@ -18,7 +18,6 @@ DEFINES += \
ASSIMP_BUILD_NO_MD3_IMPORTER \
ASSIMP_BUILD_NO_MDL_IMPORTER \
ASSIMP_BUILD_NO_MD2_IMPORTER \
- ASSIMP_BUILD_NO_PLY_IMPORTER \
ASSIMP_BUILD_NO_ASE_IMPORTER \
ASSIMP_BUILD_NO_HMP_IMPORTER \
ASSIMP_BUILD_NO_SMD_IMPORTER \
@@ -258,6 +257,8 @@ HEADERS += \
$$PWD/src/code/FBX/FBXProperties.h \
$$PWD/src/code/FBX/FBXMeshGeometry.h \
$$PWD/src/code/FBX/FBXCommon.h \
+ $$PWD/src/code/Ply/PlyLoader.h \
+ $$PWD/src/code/Ply/PlyParser.h \
$$PWD/src/code/PostProcessing/CalcTangentsProcess.h \
$$PWD/src/code/PostProcessing/ComputeUVMappingProcess.h \
$$PWD/src/code/PostProcessing/ConvertToLHProcess.h \
@@ -356,6 +357,8 @@ SOURCES += \
$$PWD/src/code/FBX/FBXDeformer.cpp \
$$PWD/src/code/FBX/FBXBinaryTokenizer.cpp \
$$PWD/src/code/FBX/FBXDocumentUtil.cpp \
+ $$PWD/src/code/Ply/PlyLoader.cpp \
+ $$PWD/src/code/Ply/PlyParser.cpp \
$$PWD/src/code/PostProcessing/CalcTangentsProcess.cpp \
$$PWD/src/code/PostProcessing/ComputeUVMappingProcess.cpp \
$$PWD/src/code/PostProcessing/ConvertToLHProcess.cpp \
diff --git a/src/animation/frontend/qabstractanimation.cpp b/src/animation/frontend/qabstractanimation.cpp
index e541af011..ccc35ee8e 100644
--- a/src/animation/frontend/qabstractanimation.cpp
+++ b/src/animation/frontend/qabstractanimation.cpp
@@ -187,3 +187,5 @@ void QAbstractAnimation::setDuration(float duration)
} // Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qabstractanimation.cpp"
diff --git a/src/animation/frontend/qabstractanimationclip.cpp b/src/animation/frontend/qabstractanimationclip.cpp
index 08133072c..763e8c6f2 100644
--- a/src/animation/frontend/qabstractanimationclip.cpp
+++ b/src/animation/frontend/qabstractanimationclip.cpp
@@ -160,3 +160,5 @@ float QAbstractAnimationClip::duration() const
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qabstractanimationclip.cpp"
diff --git a/src/animation/frontend/qabstractchannelmapping.cpp b/src/animation/frontend/qabstractchannelmapping.cpp
index 599ec6ed7..c50775f3f 100644
--- a/src/animation/frontend/qabstractchannelmapping.cpp
+++ b/src/animation/frontend/qabstractchannelmapping.cpp
@@ -68,3 +68,5 @@ QAbstractChannelMapping::~QAbstractChannelMapping()
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qabstractchannelmapping.cpp"
diff --git a/src/animation/frontend/qabstractclipanimator.cpp b/src/animation/frontend/qabstractclipanimator.cpp
index 8c282da49..d00fa3f91 100644
--- a/src/animation/frontend/qabstractclipanimator.cpp
+++ b/src/animation/frontend/qabstractclipanimator.cpp
@@ -342,3 +342,5 @@ void QAbstractClipAnimator::stop()
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qabstractclipanimator.cpp"
diff --git a/src/animation/frontend/qabstractclipblendnode.cpp b/src/animation/frontend/qabstractclipblendnode.cpp
index 9860e969f..706d816ba 100644
--- a/src/animation/frontend/qabstractclipblendnode.cpp
+++ b/src/animation/frontend/qabstractclipblendnode.cpp
@@ -134,3 +134,5 @@ QAbstractClipBlendNode::~QAbstractClipBlendNode()
} // Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qabstractclipblendnode.cpp"
diff --git a/src/animation/frontend/qadditiveclipblend.cpp b/src/animation/frontend/qadditiveclipblend.cpp
index dda3265c2..52102b785 100644
--- a/src/animation/frontend/qadditiveclipblend.cpp
+++ b/src/animation/frontend/qadditiveclipblend.cpp
@@ -252,3 +252,5 @@ void QAdditiveClipBlend::setAdditiveClip(QAbstractClipBlendNode *additiveClip)
} // Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qadditiveclipblend.cpp"
diff --git a/src/animation/frontend/qanimationaspect.cpp b/src/animation/frontend/qanimationaspect.cpp
index 744346e1f..ba6646a13 100644
--- a/src/animation/frontend/qanimationaspect.cpp
+++ b/src/animation/frontend/qanimationaspect.cpp
@@ -156,3 +156,5 @@ QVector<QAspectJobPtr> QAnimationAspect::jobsToExecute(qint64 time)
QT_END_NAMESPACE
QT3D_REGISTER_NAMESPACED_ASPECT("animation", QT_PREPEND_NAMESPACE(Qt3DAnimation), QAnimationAspect)
+
+#include "moc_qanimationaspect.cpp"
diff --git a/src/animation/frontend/qanimationclip.cpp b/src/animation/frontend/qanimationclip.cpp
index 74a9b8371..03bdecbae 100644
--- a/src/animation/frontend/qanimationclip.cpp
+++ b/src/animation/frontend/qanimationclip.cpp
@@ -104,3 +104,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QAnimationClip::createNodeCreationChange() c
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qanimationclip.cpp"
diff --git a/src/animation/frontend/qanimationcliploader.cpp b/src/animation/frontend/qanimationcliploader.cpp
index bf901e54f..0cc2f40d1 100644
--- a/src/animation/frontend/qanimationcliploader.cpp
+++ b/src/animation/frontend/qanimationcliploader.cpp
@@ -158,3 +158,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QAnimationClipLoader::createNodeCreationChan
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qanimationcliploader.cpp"
diff --git a/src/animation/frontend/qanimationcontroller.cpp b/src/animation/frontend/qanimationcontroller.cpp
index ddb105d08..3535ac22e 100644
--- a/src/animation/frontend/qanimationcontroller.cpp
+++ b/src/animation/frontend/qanimationcontroller.cpp
@@ -388,3 +388,5 @@ QAnimationGroup *QAnimationController::getGroup(int index) const
} // Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qanimationcontroller.cpp"
diff --git a/src/animation/frontend/qanimationgroup.cpp b/src/animation/frontend/qanimationgroup.cpp
index 84078b4f4..faf420059 100644
--- a/src/animation/frontend/qanimationgroup.cpp
+++ b/src/animation/frontend/qanimationgroup.cpp
@@ -210,3 +210,5 @@ void QAnimationGroup::setPosition(float position)
} // Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qanimationgroup.cpp"
diff --git a/src/animation/frontend/qblendedclipanimator.cpp b/src/animation/frontend/qblendedclipanimator.cpp
index c48706606..e9008e3fd 100644
--- a/src/animation/frontend/qblendedclipanimator.cpp
+++ b/src/animation/frontend/qblendedclipanimator.cpp
@@ -324,3 +324,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QBlendedClipAnimator::createNodeCreationChan
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qblendedclipanimator.cpp"
diff --git a/src/animation/frontend/qcallbackmapping.cpp b/src/animation/frontend/qcallbackmapping.cpp
index a86785012..612fa9402 100644
--- a/src/animation/frontend/qcallbackmapping.cpp
+++ b/src/animation/frontend/qcallbackmapping.cpp
@@ -155,3 +155,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QCallbackMapping::createNodeCreationChange()
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qcallbackmapping.cpp"
diff --git a/src/animation/frontend/qchannelmapper.cpp b/src/animation/frontend/qchannelmapper.cpp
index aa88add1a..06fb1d035 100644
--- a/src/animation/frontend/qchannelmapper.cpp
+++ b/src/animation/frontend/qchannelmapper.cpp
@@ -119,3 +119,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QChannelMapper::createNodeCreationChange() c
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qchannelmapper.cpp"
diff --git a/src/animation/frontend/qchannelmapping.cpp b/src/animation/frontend/qchannelmapping.cpp
index 16651afe6..e0c0d3371 100644
--- a/src/animation/frontend/qchannelmapping.cpp
+++ b/src/animation/frontend/qchannelmapping.cpp
@@ -264,3 +264,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QChannelMapping::createNodeCreationChange()
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qchannelmapping.cpp"
diff --git a/src/animation/frontend/qclipanimator.cpp b/src/animation/frontend/qclipanimator.cpp
index ffad588c1..284c2dc34 100644
--- a/src/animation/frontend/qclipanimator.cpp
+++ b/src/animation/frontend/qclipanimator.cpp
@@ -181,3 +181,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QClipAnimator::createNodeCreationChange() co
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qclipanimator.cpp"
diff --git a/src/animation/frontend/qclipblendvalue.cpp b/src/animation/frontend/qclipblendvalue.cpp
index 053453e33..d2b99dc1e 100644
--- a/src/animation/frontend/qclipblendvalue.cpp
+++ b/src/animation/frontend/qclipblendvalue.cpp
@@ -132,3 +132,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QClipBlendValue::createNodeCreationChange()
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qclipblendvalue.cpp"
diff --git a/src/animation/frontend/qclock.cpp b/src/animation/frontend/qclock.cpp
index 519edd388..b046d75aa 100644
--- a/src/animation/frontend/qclock.cpp
+++ b/src/animation/frontend/qclock.cpp
@@ -96,3 +96,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QClock::createNodeCreationChange() const
}
QT_END_NAMESPACE
+
+#include "moc_qclock.cpp"
diff --git a/src/animation/frontend/qkeyframeanimation.cpp b/src/animation/frontend/qkeyframeanimation.cpp
index 53d48a12b..529b91225 100644
--- a/src/animation/frontend/qkeyframeanimation.cpp
+++ b/src/animation/frontend/qkeyframeanimation.cpp
@@ -413,3 +413,5 @@ Qt3DCore::QTransform *QKeyframeAnimation::target() const
} // Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qkeyframeanimation.cpp"
diff --git a/src/animation/frontend/qlerpclipblend.cpp b/src/animation/frontend/qlerpclipblend.cpp
index 89ce3ca6f..e2be6ce5d 100644
--- a/src/animation/frontend/qlerpclipblend.cpp
+++ b/src/animation/frontend/qlerpclipblend.cpp
@@ -227,3 +227,5 @@ void QLerpClipBlend::setEndClip(Qt3DAnimation::QAbstractClipBlendNode *endClip)
} // Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qlerpclipblend.cpp"
diff --git a/src/animation/frontend/qmorphinganimation.cpp b/src/animation/frontend/qmorphinganimation.cpp
index c73a6abd7..b847cd827 100644
--- a/src/animation/frontend/qmorphinganimation.cpp
+++ b/src/animation/frontend/qmorphinganimation.cpp
@@ -451,3 +451,5 @@ void QMorphingAnimation::updateAnimation(float position)
} // Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qmorphinganimation.cpp"
diff --git a/src/animation/frontend/qmorphtarget.cpp b/src/animation/frontend/qmorphtarget.cpp
index da068d477..9d448fceb 100644
--- a/src/animation/frontend/qmorphtarget.cpp
+++ b/src/animation/frontend/qmorphtarget.cpp
@@ -187,3 +187,5 @@ QMorphTarget *QMorphTarget::fromGeometry(Qt3DRender::QGeometry *geometry, const
} // Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qmorphtarget.cpp"
diff --git a/src/animation/frontend/qskeletonmapping.cpp b/src/animation/frontend/qskeletonmapping.cpp
index 7569a5bab..7e4aaa8fd 100644
--- a/src/animation/frontend/qskeletonmapping.cpp
+++ b/src/animation/frontend/qskeletonmapping.cpp
@@ -106,3 +106,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QSkeletonMapping::createNodeCreationChange()
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qskeletonmapping.cpp"
diff --git a/src/animation/frontend/qvertexblendanimation.cpp b/src/animation/frontend/qvertexblendanimation.cpp
index 143b9553a..fcb3ac76f 100644
--- a/src/animation/frontend/qvertexblendanimation.cpp
+++ b/src/animation/frontend/qvertexblendanimation.cpp
@@ -337,3 +337,5 @@ void QVertexBlendAnimation::updateAnimation(float position)
} // Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_qvertexblendanimation.cpp"
diff --git a/src/core/aspects/aspectcommanddebugger.cpp b/src/core/aspects/aspectcommanddebugger.cpp
index 7635f44c0..1e4d7bd54 100644
--- a/src/core/aspects/aspectcommanddebugger.cpp
+++ b/src/core/aspects/aspectcommanddebugger.cpp
@@ -204,3 +204,5 @@ void AspectCommandDebugger::executeCommand(const QString &command,
} // Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_aspectcommanddebugger_p.cpp"
diff --git a/src/core/aspects/qabstractaspect.cpp b/src/core/aspects/qabstractaspect.cpp
index 09f084767..57b97bb35 100644
--- a/src/core/aspects/qabstractaspect.cpp
+++ b/src/core/aspects/qabstractaspect.cpp
@@ -591,3 +591,7 @@ void AsynchronousCommandReply::setData(const QByteArray &data)
} // of namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qabstractaspect_p.cpp"
+
+#include "moc_qabstractaspect.cpp"
diff --git a/src/core/aspects/qaspectengine.cpp b/src/core/aspects/qaspectengine.cpp
index f91286914..e3411b515 100644
--- a/src/core/aspects/qaspectengine.cpp
+++ b/src/core/aspects/qaspectengine.cpp
@@ -522,3 +522,5 @@ QAspectEngine::RunMode QAspectEngine::runMode() const
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qaspectengine.cpp"
diff --git a/src/core/aspects/qaspectmanager.cpp b/src/core/aspects/qaspectmanager.cpp
index 66475c615..d125e8e2a 100644
--- a/src/core/aspects/qaspectmanager.cpp
+++ b/src/core/aspects/qaspectmanager.cpp
@@ -554,3 +554,5 @@ void QAspectManager::processFrame()
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qaspectmanager_p.cpp"
diff --git a/src/core/jobs/qabstractaspectjobmanager.cpp b/src/core/jobs/qabstractaspectjobmanager.cpp
index 5d921c778..c790cf47b 100644
--- a/src/core/jobs/qabstractaspectjobmanager.cpp
+++ b/src/core/jobs/qabstractaspectjobmanager.cpp
@@ -57,3 +57,5 @@ QAbstractAspectJobManager::QAbstractAspectJobManager(QObject *parent)
}
QT_END_NAMESPACE
+
+#include "moc_qabstractaspectjobmanager_p.cpp"
diff --git a/src/core/jobs/qaspectjobmanager.cpp b/src/core/jobs/qaspectjobmanager.cpp
index 7103f5100..0afa39502 100644
--- a/src/core/jobs/qaspectjobmanager.cpp
+++ b/src/core/jobs/qaspectjobmanager.cpp
@@ -115,7 +115,7 @@ int QAspectJobManager::waitForAllJobs()
void QAspectJobManager::waitForPerThreadFunction(JobFunction func, void *arg)
{
- const int threadCount = m_threadPooler->maxThreadCount();
+ const int threadCount = QAspectJobManager::idealThreadCount();
QAtomicInt atomicCount(threadCount);
QVector<RunnableInterface *> taskList;
@@ -128,6 +128,28 @@ void QAspectJobManager::waitForPerThreadFunction(JobFunction func, void *arg)
future.waitForFinished();
}
+int QAspectJobManager::idealThreadCount()
+{
+ static int jobCount = 0;
+ if (jobCount)
+ return jobCount;
+
+ const QByteArray maxThreadCount = qgetenv("QT3D_MAX_THREAD_COUNT");
+ if (!maxThreadCount.isEmpty()) {
+ bool conversionOK = false;
+ const int maxThreadCountValue = maxThreadCount.toInt(&conversionOK);
+ if (conversionOK) {
+ jobCount = maxThreadCountValue;
+ return jobCount;
+ }
+ }
+
+ jobCount = QThread::idealThreadCount();
+ return jobCount;
+}
+
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qaspectjobmanager_p.cpp"
diff --git a/src/core/jobs/qaspectjobmanager_p.h b/src/core/jobs/qaspectjobmanager_p.h
index db0075443..06dd5286b 100644
--- a/src/core/jobs/qaspectjobmanager_p.h
+++ b/src/core/jobs/qaspectjobmanager_p.h
@@ -79,6 +79,7 @@ public:
int waitForAllJobs() override;
void waitForPerThreadFunction(JobFunction func, void *arg) override;
+ static int idealThreadCount();
private:
QThreadPooler *m_threadPooler;
diff --git a/src/core/jobs/qthreadpooler.cpp b/src/core/jobs/qthreadpooler.cpp
index 59c905f71..43de400b1 100644
--- a/src/core/jobs/qthreadpooler.cpp
+++ b/src/core/jobs/qthreadpooler.cpp
@@ -38,6 +38,7 @@
****************************************************************************/
#include "qthreadpooler_p.h"
+#include "qaspectjobmanager_p.h"
#include <QtCore/QDebug>
QT_BEGIN_NAMESPACE
@@ -49,10 +50,10 @@ QThreadPooler::QThreadPooler(QObject *parent)
, m_futureInterface(nullptr)
, m_mutex()
, m_taskCount(0)
- , m_threadPool(QThreadPool::globalInstance())
+ , m_threadPool(new QThreadPool(this))
, m_totalRunJobs(0)
{
- m_threadPool->setMaxThreadCount(QThreadPooler::maxThreadCount());
+ m_threadPool->setMaxThreadCount(QAspectJobManager::idealThreadCount());
// Ensures that threads will never be recycled
m_threadPool->setExpiryTimeout(-1);
}
@@ -199,24 +200,8 @@ int QThreadPooler::currentCount() const
return m_taskCount.loadRelaxed();
}
-int QThreadPooler::maxThreadCount()
-{
- static int threadCount = 0;
-
- if (threadCount == 0) {
- threadCount = QThread::idealThreadCount();
- const QByteArray maxThreadCount = qgetenv("QT3D_MAX_THREAD_COUNT");
- if (!maxThreadCount.isEmpty()) {
- bool conversionOK = false;
- const int maxThreadCountValue = maxThreadCount.toInt(&conversionOK);
- if (conversionOK)
- threadCount = std::min(threadCount, maxThreadCountValue);
- }
- }
-
- return threadCount;
-}
-
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qthreadpooler_p.cpp"
diff --git a/src/core/jobs/qthreadpooler_p.h b/src/core/jobs/qthreadpooler_p.h
index ea69b5b78..ee9e89925 100644
--- a/src/core/jobs/qthreadpooler_p.h
+++ b/src/core/jobs/qthreadpooler_p.h
@@ -77,8 +77,6 @@ public:
void taskFinished(RunnableInterface *task);
QFuture<void> future();
- static int maxThreadCount();
-
private:
void enqueueTasks(const QVector<RunnableInterface *> &tasks);
void skipTask(RunnableInterface *task);
diff --git a/src/core/nodes/propertychangehandler.cpp b/src/core/nodes/propertychangehandler.cpp
index 0a1d59932..3d58b5f0f 100644
--- a/src/core/nodes/propertychangehandler.cpp
+++ b/src/core/nodes/propertychangehandler.cpp
@@ -84,3 +84,5 @@ void PropertyChangeHandlerBase::disconnectFromPropertyChange(const QObject *obje
}
QT_END_NAMESPACE
+
+#include "moc_propertychangehandler_p.cpp"
diff --git a/src/core/nodes/qcomponent.cpp b/src/core/nodes/qcomponent.cpp
index 79bba229d..03501cef2 100644
--- a/src/core/nodes/qcomponent.cpp
+++ b/src/core/nodes/qcomponent.cpp
@@ -190,3 +190,5 @@ QComponent::QComponent(QComponentPrivate &dd, QNode *parent)
*/
QT_END_NAMESPACE
+
+#include "moc_qcomponent.cpp"
diff --git a/src/core/nodes/qentity.cpp b/src/core/nodes/qentity.cpp
index 7d64d4e70..6b6883bfa 100644
--- a/src/core/nodes/qentity.cpp
+++ b/src/core/nodes/qentity.cpp
@@ -338,3 +338,5 @@ void QEntity::onParentChanged(QObject *)
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qentity.cpp"
diff --git a/src/core/nodes/qnode.cpp b/src/core/nodes/qnode.cpp
index 7ae29f222..73b5efcee 100644
--- a/src/core/nodes/qnode.cpp
+++ b/src/core/nodes/qnode.cpp
@@ -1219,4 +1219,6 @@ void NodePostConstructorInit::processNodes()
QT_END_NAMESPACE
+#include "moc_qnode_p.cpp"
+
#include "moc_qnode.cpp"
diff --git a/src/core/qchangearbiter.cpp b/src/core/qchangearbiter.cpp
index 3672777de..4e6a11a4f 100644
--- a/src/core/qchangearbiter.cpp
+++ b/src/core/qchangearbiter.cpp
@@ -354,3 +354,5 @@ void QChangeArbiter::destroyThreadLocalChangeQueue(void *changeArbiter)
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qchangearbiter_p.cpp"
diff --git a/src/core/qscheduler.cpp b/src/core/qscheduler.cpp
index cb4a6f180..d803b67b9 100644
--- a/src/core/qscheduler.cpp
+++ b/src/core/qscheduler.cpp
@@ -152,3 +152,5 @@ int QScheduler::scheduleAndWaitForFrameAspectJobs(qint64 time, bool dumpJobs)
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qscheduler_p.cpp"
diff --git a/src/core/services/qabstractframeadvanceservice.cpp b/src/core/services/qabstractframeadvanceservice.cpp
index 15bf46afa..fc4752c62 100644
--- a/src/core/services/qabstractframeadvanceservice.cpp
+++ b/src/core/services/qabstractframeadvanceservice.cpp
@@ -91,3 +91,5 @@ QAbstractFrameAdvanceService::QAbstractFrameAdvanceService(QAbstractFrameAdvance
} // Qt3D
QT_END_NAMESPACE
+
+#include "moc_qabstractframeadvanceservice_p.cpp"
diff --git a/src/core/services/qdownloadnetworkworker.cpp b/src/core/services/qdownloadnetworkworker.cpp
index e1f806e92..ffc44b2a6 100644
--- a/src/core/services/qdownloadnetworkworker.cpp
+++ b/src/core/services/qdownloadnetworkworker.cpp
@@ -146,3 +146,5 @@ void QDownloadNetworkWorker::onDownloadProgressed(qint64 bytesReceived, qint64 b
QT_END_NAMESPACE
+#include "moc_qdownloadnetworkworker_p.cpp"
+
diff --git a/src/core/services/qeventfilterservice.cpp b/src/core/services/qeventfilterservice.cpp
index 036bcd7b4..513500f2b 100644
--- a/src/core/services/qeventfilterservice.cpp
+++ b/src/core/services/qeventfilterservice.cpp
@@ -187,4 +187,6 @@ bool InternalEventListener::eventFilter(QObject *obj, QEvent *e)
QT_END_NAMESPACE
+#include "moc_qeventfilterservice_p.cpp"
+
#include "qeventfilterservice.moc"
diff --git a/src/core/services/qopenglinformationservice.cpp b/src/core/services/qopenglinformationservice.cpp
index c1c05018e..76b4fa690 100644
--- a/src/core/services/qopenglinformationservice.cpp
+++ b/src/core/services/qopenglinformationservice.cpp
@@ -84,3 +84,5 @@ QOpenGLInformationService::QOpenGLInformationService(QOpenGLInformationServicePr
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qopenglinformationservice_p.cpp"
diff --git a/src/core/services/qservicelocator.cpp b/src/core/services/qservicelocator.cpp
index 73a40c2e4..2f8117bb4 100644
--- a/src/core/services/qservicelocator.cpp
+++ b/src/core/services/qservicelocator.cpp
@@ -267,3 +267,5 @@ QAbstractServiceProvider *QServiceLocator::_q_getServiceHelper(int type)
}
QT_END_NAMESPACE
+
+#include "moc_qservicelocator_p.cpp"
diff --git a/src/core/services/qsysteminformationservice.cpp b/src/core/services/qsysteminformationservice.cpp
index 87cc08e59..411f54346 100644
--- a/src/core/services/qsysteminformationservice.cpp
+++ b/src/core/services/qsysteminformationservice.cpp
@@ -436,3 +436,5 @@ void QSystemInformationService::dumpCommand(const QString &command)
}
QT_END_NAMESPACE
+
+#include "moc_qsysteminformationservice_p.cpp"
diff --git a/src/core/services/qtickclockservice.cpp b/src/core/services/qtickclockservice.cpp
index 225e70ec2..f3f67ab4c 100644
--- a/src/core/services/qtickclockservice.cpp
+++ b/src/core/services/qtickclockservice.cpp
@@ -98,3 +98,5 @@ void QTickClockService::stop()
} // Qt3D
QT_END_NAMESPACE
+
+#include "moc_qtickclockservice_p.cpp"
diff --git a/src/core/transforms/qabstractskeleton.cpp b/src/core/transforms/qabstractskeleton.cpp
index 4a30d0710..d0b66a5a1 100644
--- a/src/core/transforms/qabstractskeleton.cpp
+++ b/src/core/transforms/qabstractskeleton.cpp
@@ -137,3 +137,5 @@ void QAbstractSkeletonPrivate::setJointCount(int jointCount)
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qabstractskeleton.cpp"
diff --git a/src/core/transforms/qarmature.cpp b/src/core/transforms/qarmature.cpp
index d9fef7767..9827a329e 100644
--- a/src/core/transforms/qarmature.cpp
+++ b/src/core/transforms/qarmature.cpp
@@ -170,3 +170,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QArmature::createNodeCreationChange() const
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qarmature.cpp"
diff --git a/src/core/transforms/qjoint.cpp b/src/core/transforms/qjoint.cpp
index 408d42f6d..04d95b6e8 100644
--- a/src/core/transforms/qjoint.cpp
+++ b/src/core/transforms/qjoint.cpp
@@ -408,3 +408,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QJoint::createNodeCreationChange() const
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qjoint.cpp"
diff --git a/src/core/transforms/qskeleton.cpp b/src/core/transforms/qskeleton.cpp
index 141d8c0c4..b969f7a33 100644
--- a/src/core/transforms/qskeleton.cpp
+++ b/src/core/transforms/qskeleton.cpp
@@ -150,3 +150,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QSkeleton::createNodeCreationChange() const
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qskeleton.cpp"
diff --git a/src/core/transforms/qskeletonloader.cpp b/src/core/transforms/qskeletonloader.cpp
index b1a311a0c..9a78c9d8d 100644
--- a/src/core/transforms/qskeletonloader.cpp
+++ b/src/core/transforms/qskeletonloader.cpp
@@ -261,3 +261,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QSkeletonLoader::createNodeCreationChange()
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qskeletonloader.cpp"
diff --git a/src/extras/3dtext/qextrudedtextgeometry.cpp b/src/extras/3dtext/qextrudedtextgeometry.cpp
index b2612755c..1fc1c580f 100644
--- a/src/extras/3dtext/qextrudedtextgeometry.cpp
+++ b/src/extras/3dtext/qextrudedtextgeometry.cpp
@@ -514,3 +514,5 @@ Qt3DRender::QAttribute *QExtrudedTextGeometry::indexAttribute() const
} // Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qextrudedtextgeometry.cpp"
diff --git a/src/extras/3dtext/qextrudedtextmesh.cpp b/src/extras/3dtext/qextrudedtextmesh.cpp
index fc93726d2..d6555b52b 100644
--- a/src/extras/3dtext/qextrudedtextmesh.cpp
+++ b/src/extras/3dtext/qextrudedtextmesh.cpp
@@ -167,3 +167,5 @@ float QExtrudedTextMesh::depth() const
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qextrudedtextmesh.cpp"
diff --git a/src/extras/defaults/qabstractcameracontroller.cpp b/src/extras/defaults/qabstractcameracontroller.cpp
index c8ebf42f3..4a0497d11 100644
--- a/src/extras/defaults/qabstractcameracontroller.cpp
+++ b/src/extras/defaults/qabstractcameracontroller.cpp
@@ -285,7 +285,8 @@ QAbstractCameraController::QAbstractCameraController(QAbstractCameraControllerPr
d->init();
QObject::connect(d->m_frameAction, &Qt3DLogic::QFrameAction::triggered,
- this, [=] (float dt) {
+ this, [this] (float dt) {
+ Q_D(const QAbstractCameraController);
InputState state;
state.rxAxisValue = d->m_rxAxis->value();
diff --git a/src/extras/defaults/qabstractspritesheet.cpp b/src/extras/defaults/qabstractspritesheet.cpp
index 2cf134f7c..d70e924c4 100644
--- a/src/extras/defaults/qabstractspritesheet.cpp
+++ b/src/extras/defaults/qabstractspritesheet.cpp
@@ -141,3 +141,5 @@ void QAbstractSpriteSheet::setCurrentIndex(int currentIndex)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qabstractspritesheet.cpp"
diff --git a/src/extras/defaults/qdiffusemapmaterial.cpp b/src/extras/defaults/qdiffusemapmaterial.cpp
index 95ab7e9ac..fc6798f83 100644
--- a/src/extras/defaults/qdiffusemapmaterial.cpp
+++ b/src/extras/defaults/qdiffusemapmaterial.cpp
@@ -359,3 +359,5 @@ void QDiffuseMapMaterial::setTextureScale(float textureScale)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qdiffusemapmaterial.cpp"
diff --git a/src/extras/defaults/qdiffusespecularmapmaterial.cpp b/src/extras/defaults/qdiffusespecularmapmaterial.cpp
index 15dcb36bf..b5bb9c352 100644
--- a/src/extras/defaults/qdiffusespecularmapmaterial.cpp
+++ b/src/extras/defaults/qdiffusespecularmapmaterial.cpp
@@ -378,3 +378,5 @@ void QDiffuseSpecularMapMaterial::setTextureScale(float textureScale)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qdiffusespecularmapmaterial.cpp"
diff --git a/src/extras/defaults/qdiffusespecularmaterial.cpp b/src/extras/defaults/qdiffusespecularmaterial.cpp
index 2cb4c137c..f5c5929fa 100644
--- a/src/extras/defaults/qdiffusespecularmaterial.cpp
+++ b/src/extras/defaults/qdiffusespecularmaterial.cpp
@@ -539,3 +539,5 @@ void QDiffuseSpecularMaterial::setAlphaBlendingEnabled(bool enabled)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qdiffusespecularmaterial.cpp"
diff --git a/src/extras/defaults/qforwardrenderer.cpp b/src/extras/defaults/qforwardrenderer.cpp
index 71d99d84b..42283e88f 100644
--- a/src/extras/defaults/qforwardrenderer.cpp
+++ b/src/extras/defaults/qforwardrenderer.cpp
@@ -394,3 +394,5 @@ bool QForwardRenderer::showDebugOverlay() const
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qforwardrenderer.cpp"
diff --git a/src/extras/defaults/qgoochmaterial.cpp b/src/extras/defaults/qgoochmaterial.cpp
index b5665d776..a0088c80a 100644
--- a/src/extras/defaults/qgoochmaterial.cpp
+++ b/src/extras/defaults/qgoochmaterial.cpp
@@ -377,3 +377,5 @@ void QGoochMaterial::setShininess(float shininess)
}
QT_END_NAMESPACE
+
+#include "moc_qgoochmaterial.cpp"
diff --git a/src/extras/defaults/qmetalroughmaterial.cpp b/src/extras/defaults/qmetalroughmaterial.cpp
index 78e544ead..b2886c749 100644
--- a/src/extras/defaults/qmetalroughmaterial.cpp
+++ b/src/extras/defaults/qmetalroughmaterial.cpp
@@ -481,3 +481,5 @@ void QMetalRoughMaterial::setTextureScale(float textureScale)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qmetalroughmaterial.cpp"
diff --git a/src/extras/defaults/qmorphphongmaterial.cpp b/src/extras/defaults/qmorphphongmaterial.cpp
index 8469fc127..583af5ae9 100644
--- a/src/extras/defaults/qmorphphongmaterial.cpp
+++ b/src/extras/defaults/qmorphphongmaterial.cpp
@@ -330,3 +330,5 @@ void QMorphPhongMaterial::setInterpolator(float interpolator)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qmorphphongmaterial.cpp"
diff --git a/src/extras/defaults/qnormaldiffusemapalphamaterial.cpp b/src/extras/defaults/qnormaldiffusemapalphamaterial.cpp
index 03b8d8385..1d916ffc1 100644
--- a/src/extras/defaults/qnormaldiffusemapalphamaterial.cpp
+++ b/src/extras/defaults/qnormaldiffusemapalphamaterial.cpp
@@ -219,3 +219,5 @@ QNormalDiffuseMapAlphaMaterial::~QNormalDiffuseMapAlphaMaterial()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qnormaldiffusemapalphamaterial.cpp"
diff --git a/src/extras/defaults/qnormaldiffusemapmaterial.cpp b/src/extras/defaults/qnormaldiffusemapmaterial.cpp
index c4f3e15b2..09f075ed0 100644
--- a/src/extras/defaults/qnormaldiffusemapmaterial.cpp
+++ b/src/extras/defaults/qnormaldiffusemapmaterial.cpp
@@ -408,3 +408,5 @@ void QNormalDiffuseMapMaterial::setTextureScale(float textureScale)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qnormaldiffusemapmaterial.cpp"
diff --git a/src/extras/defaults/qnormaldiffusespecularmapmaterial.cpp b/src/extras/defaults/qnormaldiffusespecularmapmaterial.cpp
index 66586ef18..ff7d77af7 100644
--- a/src/extras/defaults/qnormaldiffusespecularmapmaterial.cpp
+++ b/src/extras/defaults/qnormaldiffusespecularmapmaterial.cpp
@@ -425,3 +425,5 @@ void QNormalDiffuseSpecularMapMaterial::setTextureScale(float textureScale)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qnormaldiffusespecularmapmaterial.cpp"
diff --git a/src/extras/defaults/qpervertexcolormaterial.cpp b/src/extras/defaults/qpervertexcolormaterial.cpp
index ef41cbce7..53ea83a7d 100644
--- a/src/extras/defaults/qpervertexcolormaterial.cpp
+++ b/src/extras/defaults/qpervertexcolormaterial.cpp
@@ -175,3 +175,5 @@ void QPerVertexColorMaterialPrivate::init()
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qpervertexcolormaterial.cpp"
diff --git a/src/extras/defaults/qphongalphamaterial.cpp b/src/extras/defaults/qphongalphamaterial.cpp
index 8d8464d85..1840cc659 100644
--- a/src/extras/defaults/qphongalphamaterial.cpp
+++ b/src/extras/defaults/qphongalphamaterial.cpp
@@ -470,3 +470,5 @@ void QPhongAlphaMaterial::setBlendFunctionArg(QBlendEquation::BlendFunction blen
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qphongalphamaterial.cpp"
diff --git a/src/extras/defaults/qphongmaterial.cpp b/src/extras/defaults/qphongmaterial.cpp
index 460bc9bb2..da044b32a 100644
--- a/src/extras/defaults/qphongmaterial.cpp
+++ b/src/extras/defaults/qphongmaterial.cpp
@@ -310,3 +310,5 @@ void QPhongMaterial::setShininess(float shininess)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qphongmaterial.cpp"
diff --git a/src/extras/defaults/qskyboxentity.cpp b/src/extras/defaults/qskyboxentity.cpp
index 8d01e8d82..cf5213295 100644
--- a/src/extras/defaults/qskyboxentity.cpp
+++ b/src/extras/defaults/qskyboxentity.cpp
@@ -383,3 +383,5 @@ bool QSkyboxEntity::isGammaCorrectEnabled() const
\since 5.9
*/
QT_END_NAMESPACE
+
+#include "moc_qskyboxentity.cpp"
diff --git a/src/extras/defaults/qspritegrid.cpp b/src/extras/defaults/qspritegrid.cpp
index 15016a891..0e4ab20ab 100644
--- a/src/extras/defaults/qspritegrid.cpp
+++ b/src/extras/defaults/qspritegrid.cpp
@@ -154,3 +154,5 @@ void QSpriteGrid::setColumns(int columns)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qspritegrid.cpp"
diff --git a/src/extras/defaults/qspritesheet.cpp b/src/extras/defaults/qspritesheet.cpp
index 8eb1e33e6..36fcb1f8d 100644
--- a/src/extras/defaults/qspritesheet.cpp
+++ b/src/extras/defaults/qspritesheet.cpp
@@ -171,3 +171,5 @@ void QSpriteSheet::setSprites(QVector<QSpriteSheetItem *> sprites)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qspritesheet.cpp"
diff --git a/src/extras/defaults/qspritesheetitem.cpp b/src/extras/defaults/qspritesheetitem.cpp
index b4e096ae9..e05e41bef 100644
--- a/src/extras/defaults/qspritesheetitem.cpp
+++ b/src/extras/defaults/qspritesheetitem.cpp
@@ -125,3 +125,5 @@ void QSpriteSheetItem::setHeight(int height)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qspritesheetitem.cpp"
diff --git a/src/extras/defaults/qt3dwindow.cpp b/src/extras/defaults/qt3dwindow.cpp
index 18ee6a730..aab919f0f 100644
--- a/src/extras/defaults/qt3dwindow.cpp
+++ b/src/extras/defaults/qt3dwindow.cpp
@@ -319,3 +319,5 @@ void setupWindowSurface(QWindow *window, Qt3DRender::API api) noexcept
} // Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qt3dwindow.cpp"
diff --git a/src/extras/defaults/qtexturematerial.cpp b/src/extras/defaults/qtexturematerial.cpp
index dca45fded..436c2a0fb 100644
--- a/src/extras/defaults/qtexturematerial.cpp
+++ b/src/extras/defaults/qtexturematerial.cpp
@@ -285,3 +285,5 @@ void QTextureMaterial::setAlphaBlendingEnabled(bool enabled)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qtexturematerial.cpp"
diff --git a/src/extras/geometries/qconegeometry.cpp b/src/extras/geometries/qconegeometry.cpp
index 2cf526142..62f05d45c 100644
--- a/src/extras/geometries/qconegeometry.cpp
+++ b/src/extras/geometries/qconegeometry.cpp
@@ -755,3 +755,5 @@ QAttribute *QConeGeometry::indexAttribute() const
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qconegeometry.cpp"
diff --git a/src/extras/geometries/qconemesh.cpp b/src/extras/geometries/qconemesh.cpp
index a0d1bd310..bcaa28467 100644
--- a/src/extras/geometries/qconemesh.cpp
+++ b/src/extras/geometries/qconemesh.cpp
@@ -243,3 +243,5 @@ float QConeMesh::length() const
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qconemesh.cpp"
diff --git a/src/extras/geometries/qcuboidgeometry.cpp b/src/extras/geometries/qcuboidgeometry.cpp
index f9efaaf9d..6b4f30e24 100644
--- a/src/extras/geometries/qcuboidgeometry.cpp
+++ b/src/extras/geometries/qcuboidgeometry.cpp
@@ -916,3 +916,5 @@ QAttribute *QCuboidGeometry::indexAttribute() const
} // Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qcuboidgeometry.cpp"
diff --git a/src/extras/geometries/qcuboidmesh.cpp b/src/extras/geometries/qcuboidmesh.cpp
index bdad566fc..166f3ee6d 100644
--- a/src/extras/geometries/qcuboidmesh.cpp
+++ b/src/extras/geometries/qcuboidmesh.cpp
@@ -225,3 +225,5 @@ QSize QCuboidMesh::xyMeshResolution() const
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qcuboidmesh.cpp"
diff --git a/src/extras/geometries/qcylindergeometry.cpp b/src/extras/geometries/qcylindergeometry.cpp
index 9d26068f2..7512c5707 100644
--- a/src/extras/geometries/qcylindergeometry.cpp
+++ b/src/extras/geometries/qcylindergeometry.cpp
@@ -607,3 +607,5 @@ QAttribute *QCylinderGeometry::indexAttribute() const
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qcylindergeometry.cpp"
diff --git a/src/extras/geometries/qcylindermesh.cpp b/src/extras/geometries/qcylindermesh.cpp
index 792944cd5..50ca42555 100644
--- a/src/extras/geometries/qcylindermesh.cpp
+++ b/src/extras/geometries/qcylindermesh.cpp
@@ -183,3 +183,5 @@ float QCylinderMesh::length() const
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qcylindermesh.cpp"
diff --git a/src/extras/geometries/qplanegeometry.cpp b/src/extras/geometries/qplanegeometry.cpp
index 7c77f5028..1df9e9601 100644
--- a/src/extras/geometries/qplanegeometry.cpp
+++ b/src/extras/geometries/qplanegeometry.cpp
@@ -573,3 +573,5 @@ void QPlaneGeometryPrivate::init()
} // Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qplanegeometry.cpp"
diff --git a/src/extras/geometries/qplanemesh.cpp b/src/extras/geometries/qplanemesh.cpp
index 223e5a628..d34bb4aff 100644
--- a/src/extras/geometries/qplanemesh.cpp
+++ b/src/extras/geometries/qplanemesh.cpp
@@ -175,3 +175,5 @@ bool QPlaneMesh::mirrored() const
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qplanemesh.cpp"
diff --git a/src/extras/geometries/qspheregeometry.cpp b/src/extras/geometries/qspheregeometry.cpp
index f5ec6bec2..391c00965 100644
--- a/src/extras/geometries/qspheregeometry.cpp
+++ b/src/extras/geometries/qspheregeometry.cpp
@@ -596,3 +596,5 @@ QAttribute *QSphereGeometry::indexAttribute() const
QT_END_NAMESPACE
+#include "moc_qspheregeometry.cpp"
+
diff --git a/src/extras/geometries/qspheremesh.cpp b/src/extras/geometries/qspheremesh.cpp
index 28854fe29..4d74b2582 100644
--- a/src/extras/geometries/qspheremesh.cpp
+++ b/src/extras/geometries/qspheremesh.cpp
@@ -172,3 +172,5 @@ float QSphereMesh::radius() const
} // Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qspheremesh.cpp"
diff --git a/src/extras/geometries/qtorusgeometry.cpp b/src/extras/geometries/qtorusgeometry.cpp
index 98707b03c..44cced67f 100644
--- a/src/extras/geometries/qtorusgeometry.cpp
+++ b/src/extras/geometries/qtorusgeometry.cpp
@@ -558,3 +558,5 @@ QAttribute *QTorusGeometry::indexAttribute() const
} // Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qtorusgeometry.cpp"
diff --git a/src/extras/geometries/qtorusmesh.cpp b/src/extras/geometries/qtorusmesh.cpp
index fd10afc1e..c09970bb1 100644
--- a/src/extras/geometries/qtorusmesh.cpp
+++ b/src/extras/geometries/qtorusmesh.cpp
@@ -175,3 +175,5 @@ float QTorusMesh::minorRadius() const
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qtorusmesh.cpp"
diff --git a/src/extras/text/distancefieldtextrenderer.cpp b/src/extras/text/distancefieldtextrenderer.cpp
index 4cf9c0b4a..6a6032b30 100644
--- a/src/extras/text/distancefieldtextrenderer.cpp
+++ b/src/extras/text/distancefieldtextrenderer.cpp
@@ -154,3 +154,5 @@ void DistanceFieldTextRenderer::setColor(const QColor &color)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_distancefieldtextrenderer_p.cpp"
diff --git a/src/extras/text/qdistancefieldglyphcache.cpp b/src/extras/text/qdistancefieldglyphcache.cpp
index 66d2c0495..65db1089b 100644
--- a/src/extras/text/qdistancefieldglyphcache.cpp
+++ b/src/extras/text/qdistancefieldglyphcache.cpp
@@ -161,6 +161,7 @@ DistanceFieldFont::DistanceFieldFont(const QRawFont &font, bool doubleRes, Qt3DC
, m_doubleGlyphResolution(doubleRes)
, m_parentNode(parent)
{
+ Q_ASSERT(m_parentNode);
}
DistanceFieldFont::~DistanceFieldFont()
@@ -197,13 +198,14 @@ StoredGlyph DistanceFieldFont::refGlyph(quint32 glyph)
// scenarios
const int size = m_doubleGlyphResolution ? 512 : 256;
- QTextureAtlas *atlas = new QTextureAtlas(m_parentNode);
+ QTextureAtlas *atlas = new QTextureAtlas();
atlas->setWidth(size);
atlas->setHeight(size);
atlas->setFormat(Qt3DRender::QAbstractTexture::R8_UNorm);
atlas->setPixelFormat(QOpenGLTexture::Red);
atlas->setMinificationFilter(Qt3DRender::QAbstractTexture::Linear);
atlas->setMagnificationFilter(Qt3DRender::QAbstractTexture::Linear);
+ atlas->setParent(m_parentNode);
m_atlasses << atlas;
if (!storedGlyph.addToTextureAtlas(atlas))
@@ -236,7 +238,12 @@ void DistanceFieldFont::derefGlyph(quint32 glyph)
Q_ASSERT(m_atlasses.contains(atlas));
m_atlasses.removeAll(atlas);
- delete atlas;
+
+ // This function might have been called as a result of destroying
+ // the scene root which traverses the entire scene tree. Calling
+ // delete on the atlas here could lead to dangling pointers in the
+ // least of children being traversed for destruction.
+ atlas->deleteLater();
}
m_glyphs.erase(it);
@@ -287,7 +294,8 @@ DistanceFieldFont* QDistanceFieldGlyphCache::getOrCreateDistanceFieldFont(const
// create new font cache
// we set the parent node to nullptr, since the parent node of QTextureAtlasses
// will be set when we pass them to QText2DMaterial later
- DistanceFieldFont *dff = new DistanceFieldFont(actualFont, useDoubleRes, nullptr);
+ Q_ASSERT(m_rootNode);
+ DistanceFieldFont *dff = new DistanceFieldFont(actualFont, useDoubleRes, m_rootNode);
m_fonts.insert(key, dff);
return dff;
}
@@ -324,11 +332,10 @@ QDistanceFieldGlyphCache::Glyph refAndGetGlyph(DistanceFieldFont *dff, quint32 g
if (dff) {
const auto entry = dff->refGlyph(glyph);
- if (entry.atlas()) {
- ret.glyphPathBoundingRect = entry.glyphPathBoundingRect();
- ret.texCoords = entry.texCoords();
- ret.texture = entry.atlas();
- }
+ Q_ASSERT(entry.atlas());
+ ret.glyphPathBoundingRect = entry.glyphPathBoundingRect();
+ ret.texCoords = entry.texCoords();
+ ret.texture = entry.atlas();
}
return ret;
diff --git a/src/extras/text/qtext2dentity.cpp b/src/extras/text/qtext2dentity.cpp
index 897672782..dba4f8ac8 100644
--- a/src/extras/text/qtext2dentity.cpp
+++ b/src/extras/text/qtext2dentity.cpp
@@ -304,8 +304,9 @@ void QText2DEntityPrivate::setCurrentGlyphRuns(const QVector<QGlyphRun> &runs)
delete m_renderers.takeLast();
while (m_renderers.size() < renderData.size()) {
- DistanceFieldTextRenderer *renderer = new DistanceFieldTextRenderer(q_func());
+ DistanceFieldTextRenderer *renderer = new DistanceFieldTextRenderer();
renderer->setColor(m_color);
+ renderer->setParent(q_func());
m_renderers << renderer;
}
@@ -485,3 +486,5 @@ void QText2DEntity::setHeight(float height)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qtext2dentity.cpp"
diff --git a/src/extras/text/qtext2dmaterial.cpp b/src/extras/text/qtext2dmaterial.cpp
index d8bf312c4..bbf24a4c4 100644
--- a/src/extras/text/qtext2dmaterial.cpp
+++ b/src/extras/text/qtext2dmaterial.cpp
@@ -177,3 +177,5 @@ void QText2DMaterial::setDistanceFieldTexture(Qt3DRender::QAbstractTexture *tex)
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qtext2dmaterial_p.cpp"
diff --git a/src/extras/text/qtextureatlas.cpp b/src/extras/text/qtextureatlas.cpp
index 4ab992224..b654a30e0 100644
--- a/src/extras/text/qtextureatlas.cpp
+++ b/src/extras/text/qtextureatlas.cpp
@@ -297,3 +297,5 @@ int QTextureAtlas::imagePadding(TextureId id) const
} // namespace Qt3DExtras
QT_END_NAMESPACE
+
+#include "moc_qtextureatlas_p.cpp"
diff --git a/src/input/backend/keyboardmousegenericdeviceintegration.cpp b/src/input/backend/keyboardmousegenericdeviceintegration.cpp
index 05430b0e8..85a3a5688 100644
--- a/src/input/backend/keyboardmousegenericdeviceintegration.cpp
+++ b/src/input/backend/keyboardmousegenericdeviceintegration.cpp
@@ -100,3 +100,5 @@ QStringList KeyboardMouseGenericDeviceIntegration::deviceNames() const
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_keyboardmousegenericdeviceintegration_p.cpp"
diff --git a/src/input/frontend/qabstractactioninput.cpp b/src/input/frontend/qabstractactioninput.cpp
index 5d7af72f8..6da0ab59d 100644
--- a/src/input/frontend/qabstractactioninput.cpp
+++ b/src/input/frontend/qabstractactioninput.cpp
@@ -81,3 +81,5 @@ QAbstractActionInput::~QAbstractActionInput()
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qabstractactioninput.cpp"
diff --git a/src/input/frontend/qabstractaxisinput.cpp b/src/input/frontend/qabstractaxisinput.cpp
index e3974421a..0c3f03b21 100644
--- a/src/input/frontend/qabstractaxisinput.cpp
+++ b/src/input/frontend/qabstractaxisinput.cpp
@@ -121,3 +121,5 @@ QAbstractPhysicalDevice *QAbstractAxisInput::sourceDevice() const
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qabstractaxisinput.cpp"
diff --git a/src/input/frontend/qabstractphysicaldevice.cpp b/src/input/frontend/qabstractphysicaldevice.cpp
index 33c86f7b8..8833d4600 100644
--- a/src/input/frontend/qabstractphysicaldevice.cpp
+++ b/src/input/frontend/qabstractphysicaldevice.cpp
@@ -221,3 +221,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QAbstractPhysicalDevice::createNodeCreationC
}
QT_END_NAMESPACE
+
+#include "moc_qabstractphysicaldevice.cpp"
diff --git a/src/input/frontend/qabstractphysicaldeviceproxy.cpp b/src/input/frontend/qabstractphysicaldeviceproxy.cpp
index 4ed116440..eb571858e 100644
--- a/src/input/frontend/qabstractphysicaldeviceproxy.cpp
+++ b/src/input/frontend/qabstractphysicaldeviceproxy.cpp
@@ -226,3 +226,5 @@ void QAbstractPhysicalDeviceProxyPrivate::resetDevice(QAbstractPhysicalDevice *d
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qabstractphysicaldeviceproxy_p.cpp"
diff --git a/src/input/frontend/qaction.cpp b/src/input/frontend/qaction.cpp
index 8cceaab51..67f5bb2b8 100644
--- a/src/input/frontend/qaction.cpp
+++ b/src/input/frontend/qaction.cpp
@@ -164,3 +164,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QAction::createNodeCreationChange() const
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qaction.cpp"
diff --git a/src/input/frontend/qactioninput.cpp b/src/input/frontend/qactioninput.cpp
index f013147f2..2349d6da8 100644
--- a/src/input/frontend/qactioninput.cpp
+++ b/src/input/frontend/qactioninput.cpp
@@ -213,3 +213,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QActionInput::createNodeCreationChange() con
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qactioninput.cpp"
diff --git a/src/input/frontend/qanalogaxisinput.cpp b/src/input/frontend/qanalogaxisinput.cpp
index 7b85983e3..7fb2b2f2f 100644
--- a/src/input/frontend/qanalogaxisinput.cpp
+++ b/src/input/frontend/qanalogaxisinput.cpp
@@ -124,3 +124,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QAnalogAxisInput::createNodeCreationChange()
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qanalogaxisinput.cpp"
diff --git a/src/input/frontend/qaxis.cpp b/src/input/frontend/qaxis.cpp
index d76135fd7..6af56f358 100644
--- a/src/input/frontend/qaxis.cpp
+++ b/src/input/frontend/qaxis.cpp
@@ -183,3 +183,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QAxis::createNodeCreationChange() const
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qaxis.cpp"
diff --git a/src/input/frontend/qaxisaccumulator.cpp b/src/input/frontend/qaxisaccumulator.cpp
index a7bb14441..073dea55f 100644
--- a/src/input/frontend/qaxisaccumulator.cpp
+++ b/src/input/frontend/qaxisaccumulator.cpp
@@ -309,3 +309,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QAxisAccumulator::createNodeCreationChange()
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qaxisaccumulator.cpp"
diff --git a/src/input/frontend/qaxissetting.cpp b/src/input/frontend/qaxissetting.cpp
index 4a8f37785..5ac8a8cad 100644
--- a/src/input/frontend/qaxissetting.cpp
+++ b/src/input/frontend/qaxissetting.cpp
@@ -242,3 +242,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QAxisSetting::createNodeCreationChange() con
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qaxissetting.cpp"
diff --git a/src/input/frontend/qbuttonaxisinput.cpp b/src/input/frontend/qbuttonaxisinput.cpp
index fb74b8efd..0b5e017b5 100644
--- a/src/input/frontend/qbuttonaxisinput.cpp
+++ b/src/input/frontend/qbuttonaxisinput.cpp
@@ -194,3 +194,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QButtonAxisInput::createNodeCreationChange()
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qbuttonaxisinput.cpp"
diff --git a/src/input/frontend/qgenericinputdevice.cpp b/src/input/frontend/qgenericinputdevice.cpp
index 84a1699fc..c9796a9cb 100644
--- a/src/input/frontend/qgenericinputdevice.cpp
+++ b/src/input/frontend/qgenericinputdevice.cpp
@@ -98,3 +98,5 @@ void QGenericInputDevice::setButtonsMap(const QVariantMap &buttonsMap)
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qgenericinputdevice_p.cpp"
diff --git a/src/input/frontend/qinputaspect.cpp b/src/input/frontend/qinputaspect.cpp
index e109461f0..df2052df6 100644
--- a/src/input/frontend/qinputaspect.cpp
+++ b/src/input/frontend/qinputaspect.cpp
@@ -316,3 +316,5 @@ void QInputAspect::onUnregistered()
QT_END_NAMESPACE
QT3D_REGISTER_NAMESPACED_ASPECT("input", QT_PREPEND_NAMESPACE(Qt3DInput), QInputAspect)
+
+#include "moc_qinputaspect.cpp"
diff --git a/src/input/frontend/qinputchord.cpp b/src/input/frontend/qinputchord.cpp
index 0c4d15190..dfdcd289c 100644
--- a/src/input/frontend/qinputchord.cpp
+++ b/src/input/frontend/qinputchord.cpp
@@ -206,3 +206,5 @@ QInputChordPrivate::QInputChordPrivate()
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qinputchord.cpp"
diff --git a/src/input/frontend/qinputdeviceintegration.cpp b/src/input/frontend/qinputdeviceintegration.cpp
index 29691531f..a08a4b9f4 100644
--- a/src/input/frontend/qinputdeviceintegration.cpp
+++ b/src/input/frontend/qinputdeviceintegration.cpp
@@ -127,3 +127,5 @@ QInputAspect *QInputDeviceIntegration::inputAspect() const
*/
QT_END_NAMESPACE
+
+#include "moc_qinputdeviceintegration_p.cpp"
diff --git a/src/input/frontend/qinputdeviceplugin.cpp b/src/input/frontend/qinputdeviceplugin.cpp
index cae80c05b..272f9395b 100644
--- a/src/input/frontend/qinputdeviceplugin.cpp
+++ b/src/input/frontend/qinputdeviceplugin.cpp
@@ -62,3 +62,5 @@ QInputDeviceIntegration *QInputDevicePlugin::create(const QString &key, const QS
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qinputdeviceplugin_p.cpp"
diff --git a/src/input/frontend/qinputsequence.cpp b/src/input/frontend/qinputsequence.cpp
index d59ebc0f3..fc1ecee26 100644
--- a/src/input/frontend/qinputsequence.cpp
+++ b/src/input/frontend/qinputsequence.cpp
@@ -254,3 +254,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QInputSequence::createNodeCreationChange() c
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qinputsequence.cpp"
diff --git a/src/input/frontend/qinputsettings.cpp b/src/input/frontend/qinputsettings.cpp
index ccc53e47b..49d55f5a0 100644
--- a/src/input/frontend/qinputsettings.cpp
+++ b/src/input/frontend/qinputsettings.cpp
@@ -147,3 +147,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QInputSettings::createNodeCreationChange() c
QT_END_NAMESPACE
+
+#include "moc_qinputsettings.cpp"
diff --git a/src/input/frontend/qkeyboarddevice.cpp b/src/input/frontend/qkeyboarddevice.cpp
index 1ec1f8ead..660d6f199 100644
--- a/src/input/frontend/qkeyboarddevice.cpp
+++ b/src/input/frontend/qkeyboarddevice.cpp
@@ -329,3 +329,5 @@ void QKeyboardDevice::setActiveInput(QKeyboardHandler *activeInput)
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qkeyboarddevice.cpp"
diff --git a/src/input/frontend/qkeyboardhandler.cpp b/src/input/frontend/qkeyboardhandler.cpp
index 92ce39c31..21a6dd1ac 100644
--- a/src/input/frontend/qkeyboardhandler.cpp
+++ b/src/input/frontend/qkeyboardhandler.cpp
@@ -738,3 +738,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QKeyboardHandler::createNodeCreationChange()
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qkeyboardhandler.cpp"
diff --git a/src/input/frontend/qkeyevent.cpp b/src/input/frontend/qkeyevent.cpp
index efbddc771..e7d1b1f63 100644
--- a/src/input/frontend/qkeyevent.cpp
+++ b/src/input/frontend/qkeyevent.cpp
@@ -249,3 +249,5 @@ QKeyEvent::~QKeyEvent()
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qkeyevent.cpp"
diff --git a/src/input/frontend/qlogicaldevice.cpp b/src/input/frontend/qlogicaldevice.cpp
index 44e04baa8..0b942c720 100644
--- a/src/input/frontend/qlogicaldevice.cpp
+++ b/src/input/frontend/qlogicaldevice.cpp
@@ -265,3 +265,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QLogicalDevice::createNodeCreationChange() c
} // Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qlogicaldevice.cpp"
diff --git a/src/input/frontend/qmousedevice.cpp b/src/input/frontend/qmousedevice.cpp
index bc783fbfa..f0f0ea4a2 100644
--- a/src/input/frontend/qmousedevice.cpp
+++ b/src/input/frontend/qmousedevice.cpp
@@ -280,3 +280,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QMouseDevice::createNodeCreationChange() con
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qmousedevice.cpp"
diff --git a/src/input/frontend/qmouseevent.cpp b/src/input/frontend/qmouseevent.cpp
index 2b06c824d..0e48803bb 100644
--- a/src/input/frontend/qmouseevent.cpp
+++ b/src/input/frontend/qmouseevent.cpp
@@ -507,3 +507,5 @@ QWheelEvent::Modifiers QWheelEvent::modifiers() const
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qmouseevent.cpp"
diff --git a/src/input/frontend/qmousehandler.cpp b/src/input/frontend/qmousehandler.cpp
index 068fe1964..73805b1f1 100644
--- a/src/input/frontend/qmousehandler.cpp
+++ b/src/input/frontend/qmousehandler.cpp
@@ -354,3 +354,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QMouseHandler::createNodeCreationChange() co
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_qmousehandler.cpp"
diff --git a/src/logic/executor.cpp b/src/logic/executor.cpp
index 5a2f2dc51..44cb5900b 100644
--- a/src/logic/executor.cpp
+++ b/src/logic/executor.cpp
@@ -78,3 +78,5 @@ void Executor::processLogicFrameUpdates(const QVector<QNodeId> &nodeIds, float d
} // namespace Qt3DLogic
QT_END_NAMESPACE
+
+#include "moc_executor_p.cpp"
diff --git a/src/logic/qframeaction.cpp b/src/logic/qframeaction.cpp
index a3ae748be..b23cd9797 100644
--- a/src/logic/qframeaction.cpp
+++ b/src/logic/qframeaction.cpp
@@ -137,3 +137,5 @@ void QFrameAction::onTriggered(float dt)
} // namespace Qt3DLogic
QT_END_NAMESPACE
+
+#include "moc_qframeaction.cpp"
diff --git a/src/logic/qlogicaspect.cpp b/src/logic/qlogicaspect.cpp
index 30a46886d..acdc298fd 100644
--- a/src/logic/qlogicaspect.cpp
+++ b/src/logic/qlogicaspect.cpp
@@ -70,7 +70,6 @@ namespace Qt3DLogic {
QLogicAspectPrivate::QLogicAspectPrivate()
: QAbstractAspectPrivate()
, m_time(0)
- , m_initialized(false)
, m_manager(new Logic::Manager)
, m_executor(new Logic::Executor)
, m_callbackJob(new Logic::CallbackJob)
@@ -147,3 +146,4 @@ QT_END_NAMESPACE
QT3D_REGISTER_NAMESPACED_ASPECT("logic", QT_PREPEND_NAMESPACE(Qt3DLogic), QLogicAspect)
+#include "moc_qlogicaspect.cpp"
diff --git a/src/logic/qlogicaspect_p.h b/src/logic/qlogicaspect_p.h
index 2a6a7259a..d3388c72c 100644
--- a/src/logic/qlogicaspect_p.h
+++ b/src/logic/qlogicaspect_p.h
@@ -75,7 +75,6 @@ class QLogicAspectPrivate : public Qt3DCore::QAbstractAspectPrivate
void registerBackendTypes();
qint64 m_time;
- bool m_initialized;
QScopedPointer<Logic::Manager> m_manager;
QScopedPointer<Logic::Executor> m_executor;
QSharedPointer<Logic::CallbackJob> m_callbackJob;
diff --git a/src/plugins/geometryloaders/default/basegeometryloader.cpp b/src/plugins/geometryloaders/default/basegeometryloader.cpp
index 46e912a4e..9de2ca967 100644
--- a/src/plugins/geometryloaders/default/basegeometryloader.cpp
+++ b/src/plugins/geometryloaders/default/basegeometryloader.cpp
@@ -278,3 +278,5 @@ void BaseGeometryLoader::center(QVector<QVector3D>& points)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_basegeometryloader_p.cpp"
diff --git a/src/plugins/geometryloaders/gltf/gltfgeometryloader.cpp b/src/plugins/geometryloaders/gltf/gltfgeometryloader.cpp
index 2c8bb14c3..878e4674d 100644
--- a/src/plugins/geometryloaders/gltf/gltfgeometryloader.cpp
+++ b/src/plugins/geometryloaders/gltf/gltfgeometryloader.cpp
@@ -340,15 +340,6 @@ void GLTFGeometryLoader::processJSONBufferViewV2(const QJsonObject &json)
}
const auto bufferData = m_gltf2.m_bufferDatas[bufferIndex];
- int target = json.value(KEY_TARGET).toInt();
- switch (target) {
- case GL_ARRAY_BUFFER:
- case GL_ELEMENT_ARRAY_BUFFER:
- break;
- default:
- return;
- }
-
quint64 offset = 0;
const auto byteOffset = json.value(KEY_BYTE_OFFSET);
if (!byteOffset.isUndefined()) {
@@ -624,3 +615,5 @@ uint GLTFGeometryLoader::accessorDataSizeFromJson(const QString &type)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_gltfgeometryloader.cpp"
diff --git a/src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3.cpp b/src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3.cpp
index 97a256b9c..2a0f449fb 100644
--- a/src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3.cpp
+++ b/src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3.cpp
@@ -263,6 +263,17 @@ void GraphicsHelperES3::drawArraysInstanced(GLenum primitiveType, GLint first, G
instances);
}
+void GraphicsHelperES3::drawArraysInstancedBaseInstance(GLenum primitiveType, GLint first, GLsizei count, GLsizei instances, GLsizei baseInstance)
+{
+ if (baseInstance != 0)
+ qWarning() << "glDrawElementsInstancedBaseVertexBaseInstance is not supported with OpenGL ES 3";
+
+ m_extraFuncs->glDrawArraysInstanced(primitiveType,
+ first,
+ count,
+ instances);
+}
+
void GraphicsHelperES3::readBuffer(GLenum mode)
{
m_extraFuncs->glReadBuffer(mode);
diff --git a/src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3_2.cpp b/src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3_2.cpp
index 65108800b..5f5bc8578 100644
--- a/src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3_2.cpp
+++ b/src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3_2.cpp
@@ -140,7 +140,7 @@ void GraphicsHelperES3_2::setVerticesPerPatch(GLint verticesPerPatch)
void GraphicsHelperES3_2::drawElementsInstancedBaseVertexBaseInstance(GLenum primitiveType, GLsizei primitiveCount, GLint indexType, void *indices, GLsizei instances, GLint baseVertex, GLint baseInstance)
{
if (baseInstance != 0)
- qWarning() << "glDrawElementsInstancedBaseVertexBaseInstance is not supported with OpenGL ES 2";
+ qWarning() << "glDrawElementsInstancedBaseVertexBaseInstance is not supported with OpenGL ES 3.2";
m_extraFuncs->glDrawElementsInstancedBaseVertex(primitiveType,
primitiveCount,
diff --git a/src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3_p.h b/src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3_p.h
index 5c34a8abb..9ac9ea159 100644
--- a/src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3_p.h
+++ b/src/plugins/renderers/opengl/graphicshelpers/graphicshelperes3_p.h
@@ -76,6 +76,7 @@ public:
void buildUniformBuffer(const QVariant &v, const ShaderUniform &description, QByteArray &buffer) override;
void drawBuffers(GLsizei n, const int *bufs) override;
void drawArraysInstanced(GLenum primitiveType, GLint first, GLsizei count, GLsizei instances) override;
+ void drawArraysInstancedBaseInstance(GLenum primitiveType, GLint first, GLsizei count, GLsizei instances, GLsizei baseInstance) override;
void drawElementsInstancedBaseVertexBaseInstance(GLenum primitiveType, GLsizei primitiveCount, GLint indexType, void *indices, GLsizei instances, GLint baseVertex = 0, GLint baseInstance = 0) override;
void readBuffer(GLenum mode) override;
void drawBuffer(GLenum mode) override;
diff --git a/src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl3_2.cpp b/src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl3_2.cpp
index 8e843bca7..d220fb16d 100644
--- a/src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl3_2.cpp
+++ b/src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl3_2.cpp
@@ -105,7 +105,7 @@ void GraphicsHelperGL3_2::drawElementsInstancedBaseVertexBaseInstance(GLenum pri
GLint baseInstance)
{
if (baseInstance != 0)
- qWarning() << "glDrawElementsInstancedBaseVertexBaseInstance is not supported with OpenGL ES 2";
+ qWarning() << "glDrawElementsInstancedBaseVertexBaseInstance is not supported with OpenGL 3.2";
// glDrawElements OpenGL 3.1 or greater
m_funcs->glDrawElementsInstancedBaseVertex(primitiveType,
diff --git a/src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl3_3.cpp b/src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl3_3.cpp
index 3a8c8bde8..065cb1c0b 100644
--- a/src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl3_3.cpp
+++ b/src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl3_3.cpp
@@ -104,7 +104,7 @@ void GraphicsHelperGL3_3::drawElementsInstancedBaseVertexBaseInstance(GLenum pri
GLint baseInstance)
{
if (baseInstance != 0)
- qWarning() << "glDrawElementsInstancedBaseVertexBaseInstance is not supported with OpenGL 3";
+ qWarning() << "glDrawElementsInstancedBaseVertexBaseInstance is not supported with OpenGL 3.3";
// glDrawElements OpenGL 3.1 or greater
m_funcs->glDrawElementsInstancedBaseVertex(primitiveType,
diff --git a/src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl4.cpp b/src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl4.cpp
index a472da774..7130bb0be 100644
--- a/src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl4.cpp
+++ b/src/plugins/renderers/opengl/graphicshelpers/graphicshelpergl4.cpp
@@ -188,16 +188,13 @@ void GraphicsHelperGL4::drawElementsInstancedBaseVertexBaseInstance(GLenum primi
GLint baseVertex,
GLint baseInstance)
{
- if (baseInstance != 0)
- qWarning() << "glDrawElementsInstancedBaseVertexBaseInstance is not supported with OpenGL ES 2";
-
- // glDrawElements OpenGL 3.1 or greater
- m_funcs->glDrawElementsInstancedBaseVertex(primitiveType,
+ m_funcs->glDrawElementsInstancedBaseVertexBaseInstance(primitiveType,
primitiveCount,
indexType,
indices,
instances,
- baseVertex);
+ baseVertex,
+ baseInstance);
}
void GraphicsHelperGL4::drawArraysInstanced(GLenum primitiveType,
diff --git a/src/plugins/renderers/opengl/graphicshelpers/submissioncontext.cpp b/src/plugins/renderers/opengl/graphicshelpers/submissioncontext.cpp
index ef32594e1..7ba67fed9 100644
--- a/src/plugins/renderers/opengl/graphicshelpers/submissioncontext.cpp
+++ b/src/plugins/renderers/opengl/graphicshelpers/submissioncontext.cpp
@@ -481,6 +481,10 @@ bool SubmissionContext::beginDrawing(QSurface *surface)
}
m_boundArrayBuffer = nullptr;
+
+ // Record the default FBO value as there's no guarantee it remains constant over time
+ m_defaultFBO = m_gl->defaultFramebufferObject();
+
return true;
}
@@ -1226,6 +1230,10 @@ bool SubmissionContext::setParameters(ShaderParameterPack &parameterPack, GLShad
}
}
+ // Set the pinned images of the previous material
+ // to pinable so that we should easily find an available image unit
+ m_imageContext.deactivateImages();
+
// Fill Image Uniform Value with proper image units
// so that they can be applied as regular uniforms in a second step
for (int i = 0; i < parameterPack.images().size(); ++i) {
diff --git a/src/plugins/renderers/opengl/renderer/renderer.cpp b/src/plugins/renderers/opengl/renderer/renderer.cpp
index 4de847bf3..24326a546 100644
--- a/src/plugins/renderers/opengl/renderer/renderer.cpp
+++ b/src/plugins/renderers/opengl/renderer/renderer.cpp
@@ -1180,6 +1180,9 @@ void Renderer::sendShaderChangesToFrontend(Qt3DCore::QAspectManager *manager)
const std::vector<HShader> &activeShaders = m_nodesManager->shaderManager()->activeHandles();
for (const HShader &handle :activeShaders) {
Shader *s = m_nodesManager->shaderManager()->data(handle);
+ if (!s)
+ continue;
+
if (s->requiresFrontendSync()) {
QShaderProgram *frontend = static_cast<decltype(frontend)>(manager->lookupNode(s->peerId()));
// Could happen as a backend shader might live beyong the frontend
@@ -1952,7 +1955,7 @@ QVector<Qt3DCore::QAspectJobPtr> Renderer::renderBinJobs()
m_updatedDisableSubtreeEnablers.push_back(node->peerId());
}
- int idealThreadCount = QThreadPooler::maxThreadCount();
+ int idealThreadCount = Qt3DCore::QAspectJobManager::idealThreadCount();
const int fgBranchCount = m_frameGraphLeaves.size();
if (fgBranchCount > 1) {
diff --git a/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp b/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp
index 41aef69a0..99683a6d8 100644
--- a/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp
+++ b/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp
@@ -41,6 +41,7 @@
#include <Qt3DRender/private/qrenderaspect_p.h>
#include <QThread>
+#include <Qt3DCore/private/qaspectjobmanager_p.h>
QT_BEGIN_NAMESPACE
@@ -567,7 +568,7 @@ RenderViewBuilder::RenderViewBuilder(Render::FrameGraphNode *leafNode, int rende
// In some cases having less jobs is better (especially on fast cpus where
// splitting just adds more overhead). Ideally, we should try to set the value
// depending on the platform/CPU/nbr of cores
- m_optimalParallelJobCount = QThread::idealThreadCount();
+ m_optimalParallelJobCount = Qt3DCore::QAspectJobManager::idealThreadCount();
}
RenderViewInitializerJobPtr RenderViewBuilder::renderViewJob() const
@@ -917,22 +918,7 @@ bool RenderViewBuilder::lightCacheNeedsToBeRebuilt() const
int RenderViewBuilder::defaultJobCount()
{
- static int jobCount = 0;
- if (jobCount)
- return jobCount;
-
- const QByteArray maxThreadCount = qgetenv("QT3D_MAX_THREAD_COUNT");
- if (!maxThreadCount.isEmpty()) {
- bool conversionOK = false;
- const int maxThreadCountValue = maxThreadCount.toInt(&conversionOK);
- if (conversionOK) {
- jobCount = maxThreadCountValue;
- return jobCount;
- }
- }
-
- jobCount = QThread::idealThreadCount();
- return jobCount;
+ return Qt3DCore::QAspectJobManager::idealThreadCount();
}
int RenderViewBuilder::optimalJobCount() const
diff --git a/src/plugins/renderers/opengl/renderer/shaderparameterpack.cpp b/src/plugins/renderers/opengl/renderer/shaderparameterpack.cpp
index 43b0b90c1..bf7d5fce6 100644
--- a/src/plugins/renderers/opengl/renderer/shaderparameterpack.cpp
+++ b/src/plugins/renderers/opengl/renderer/shaderparameterpack.cpp
@@ -100,12 +100,28 @@ void ShaderParameterPack::setImage(const int glslNameId, int uniformArrayIndex,
// Contains Uniform Block Index and QNodeId of the ShaderData (UBO)
void ShaderParameterPack::setUniformBuffer(BlockToUBO blockToUBO)
{
- m_uniformBuffers.push_back(std::move(blockToUBO));
+ const auto uEnd = m_uniformBuffers.end();
+ auto it = std::find_if(m_uniformBuffers.begin(), uEnd, [&] (const BlockToUBO &block) {
+ return blockToUBO.m_blockIndex == block.m_blockIndex;
+ });
+
+ if (it == uEnd)
+ m_uniformBuffers.push_back(std::move(blockToUBO));
+ else
+ *it = std::move(blockToUBO);
}
void ShaderParameterPack::setShaderStorageBuffer(BlockToSSBO blockToSSBO)
{
- m_shaderStorageBuffers.push_back(std::move(blockToSSBO));
+ const auto uEnd = m_shaderStorageBuffers.end();
+ auto it = std::find_if(m_shaderStorageBuffers.begin(), uEnd, [&] (const BlockToSSBO &block) {
+ return blockToSSBO.m_blockIndex == block.m_blockIndex;
+ });
+
+ if (it == uEnd)
+ m_shaderStorageBuffers.push_back(std::move(blockToSSBO));
+ else
+ *it = std::move(blockToSSBO);
}
void ShaderParameterPack::setSubmissionUniformIndex(const int uniformIdx)
diff --git a/src/plugins/renderers/rhi/renderer/renderviewbuilder.cpp b/src/plugins/renderers/rhi/renderer/renderviewbuilder.cpp
index 387c5ff8d..870eb2cd0 100644
--- a/src/plugins/renderers/rhi/renderer/renderviewbuilder.cpp
+++ b/src/plugins/renderers/rhi/renderer/renderviewbuilder.cpp
@@ -39,19 +39,13 @@
#include "renderviewbuilder_p.h"
#include <Qt3DRender/private/qrenderaspect_p.h>
-
-#include <QThread>
+#include <Qt3DCore/private/qaspectjobmanager_p.h>
namespace Qt3DRender {
namespace Render {
namespace Rhi {
-// In some cases having less jobs is better (especially on fast cpus where
-// splitting just adds more overhead). Ideally, we should try to set the value
-// depending on the platform/CPU/nbr of cores
-const int RenderViewBuilder::m_optimalParallelJobCount = QThread::idealThreadCount();
-
namespace {
int findIdealNumberOfWorkers(int elementCount, int packetSize = 100)
@@ -498,6 +492,10 @@ RenderViewBuilder::RenderViewBuilder(Render::FrameGraphNode *leafNode, int rende
m_syncFilterEntityByLayerJob(),
m_filterProximityJob(Render::FilterProximityDistanceJobPtr::create())
{
+ // In some cases having less jobs is better (especially on fast cpus where
+ // splitting just adds more overhead). Ideally, we should try to set the value
+ // depending on the platform/CPU/nbr of cores
+ m_optimalParallelJobCount = Qt3DCore::QAspectJobManager::idealThreadCount();
}
RenderViewInitializerJobPtr RenderViewBuilder::renderViewJob() const
diff --git a/src/plugins/renderers/rhi/renderer/renderviewbuilder_p.h b/src/plugins/renderers/rhi/renderer/renderviewbuilder_p.h
index 4df57b139..974f9e9bb 100644
--- a/src/plugins/renderers/rhi/renderer/renderviewbuilder_p.h
+++ b/src/plugins/renderers/rhi/renderer/renderviewbuilder_p.h
@@ -139,7 +139,7 @@ private:
SynchronizerJobPtr m_syncMaterialGathererJob;
FilterProximityDistanceJobPtr m_filterProximityJob;
- static const int m_optimalParallelJobCount;
+ int m_optimalParallelJobCount;
};
} // Rhi
diff --git a/src/plugins/sceneparsers/assimp/assimpimporter.cpp b/src/plugins/sceneparsers/assimp/assimpimporter.cpp
index ef28c577f..694057ae5 100644
--- a/src/plugins/sceneparsers/assimp/assimpimporter.cpp
+++ b/src/plugins/sceneparsers/assimp/assimpimporter.cpp
@@ -1391,4 +1391,6 @@ AssimpImporter::SceneImporter::~SceneImporter()
QT_END_NAMESPACE
+#include "moc_assimpimporter.cpp"
+
#include "assimpimporter.moc"
diff --git a/src/plugins/sceneparsers/gltf/gltfimporter.cpp b/src/plugins/sceneparsers/gltf/gltfimporter.cpp
index 860dec3e7..bf382f099 100644
--- a/src/plugins/sceneparsers/gltf/gltfimporter.cpp
+++ b/src/plugins/sceneparsers/gltf/gltfimporter.cpp
@@ -2628,4 +2628,5 @@ bool GLTFRawTextureImage::GLTFRawTextureImageFunctor::operator ==(const QTexture
QT_END_NAMESPACE
+#include "moc_gltfimporter.cpp"
#include "gltfimporter.moc"
diff --git a/src/quick3d/imports/animation/qt3dquick3danimationplugin.cpp b/src/quick3d/imports/animation/qt3dquick3danimationplugin.cpp
index efb9fa706..7ca56d483 100644
--- a/src/quick3d/imports/animation/qt3dquick3danimationplugin.cpp
+++ b/src/quick3d/imports/animation/qt3dquick3danimationplugin.cpp
@@ -107,3 +107,5 @@ void Qt3DQuick3DAnimationPlugin::registerTypes(const char *uri)
}
QT_END_NAMESPACE
+
+#include "moc_qt3dquick3danimationplugin.cpp"
diff --git a/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp b/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp
index 59df221ab..f66b7250e 100644
--- a/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp
+++ b/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp
@@ -94,3 +94,5 @@ Qt3DQuick3DCorePlugin::~Qt3DQuick3DCorePlugin()
}
QT_END_NAMESPACE
+
+#include "moc_qt3dquick3dcoreplugin.cpp"
diff --git a/src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp b/src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp
index 9739b6604..f20dc74e0 100644
--- a/src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp
+++ b/src/quick3d/imports/extras/qt3dquick3dextrasplugin.cpp
@@ -153,3 +153,5 @@ QT_WARNING_POP
QT_END_NAMESPACE
+
+#include "moc_qt3dquick3dextrasplugin.cpp"
diff --git a/src/quick3d/imports/input/qt3dquick3dinputplugin.cpp b/src/quick3d/imports/input/qt3dquick3dinputplugin.cpp
index 2a9596a00..d197dc1f0 100644
--- a/src/quick3d/imports/input/qt3dquick3dinputplugin.cpp
+++ b/src/quick3d/imports/input/qt3dquick3dinputplugin.cpp
@@ -111,3 +111,5 @@ void Qt3DQuick3DInputPlugin::registerTypes(const char *uri)
}
QT_END_NAMESPACE
+
+#include "moc_qt3dquick3dinputplugin.cpp"
diff --git a/src/quick3d/imports/logic/qt3dquick3dlogicplugin.cpp b/src/quick3d/imports/logic/qt3dquick3dlogicplugin.cpp
index 0fbe64002..a1090259a 100644
--- a/src/quick3d/imports/logic/qt3dquick3dlogicplugin.cpp
+++ b/src/quick3d/imports/logic/qt3dquick3dlogicplugin.cpp
@@ -53,3 +53,5 @@ void Qt3DQuick3DLogicPlugin::registerTypes(const char *uri)
}
QT_END_NAMESPACE
+
+#include "moc_qt3dquick3dlogicplugin.cpp"
diff --git a/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp b/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp
index 8acd71715..8fabceba0 100644
--- a/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp
+++ b/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp
@@ -330,4 +330,6 @@ void Qt3DQuick3DRenderPlugin::registerTypes(const char *uri)
QT_END_NAMESPACE
+#include "moc_qt3dquick3drenderplugin.cpp"
+
diff --git a/src/quick3d/imports/scene2d/qtquickscene2dplugin.cpp b/src/quick3d/imports/scene2d/qtquickscene2dplugin.cpp
index 0c410e84b..0213fd0b7 100644
--- a/src/quick3d/imports/scene2d/qtquickscene2dplugin.cpp
+++ b/src/quick3d/imports/scene2d/qtquickscene2dplugin.cpp
@@ -59,3 +59,5 @@ void QtQuickScene2DPlugin::registerTypes(const char *uri)
}
QT_END_NAMESPACE
+
+#include "moc_qtquickscene2dplugin.cpp"
diff --git a/src/quick3d/imports/scene3d/qtquickscene3dplugin.cpp b/src/quick3d/imports/scene3d/qtquickscene3dplugin.cpp
index 00f24070e..254211371 100644
--- a/src/quick3d/imports/scene3d/qtquickscene3dplugin.cpp
+++ b/src/quick3d/imports/scene3d/qtquickscene3dplugin.cpp
@@ -57,3 +57,5 @@ void QtQuickScene3DPlugin::registerTypes(const char *uri)
}
QT_END_NAMESPACE
+
+#include "moc_qtquickscene3dplugin.cpp"
diff --git a/src/quick3d/imports/scene3d/scene3ditem.cpp b/src/quick3d/imports/scene3d/scene3ditem.cpp
index 126680595..57e6b0e6e 100644
--- a/src/quick3d/imports/scene3d/scene3ditem.cpp
+++ b/src/quick3d/imports/scene3d/scene3ditem.cpp
@@ -200,6 +200,9 @@ private:
expression that depends on property updates driven by the Qt 3D simulation
loop (FrameAction) will never reavaluates.
*/
+
+qint8 Scene3DItem::ms_framesNeededToFlushPipeline = 3;
+
Scene3DItem::Scene3DItem(QQuickItem *parent)
: QQuickItem(parent)
, m_entity(nullptr)
@@ -230,6 +233,11 @@ Scene3DItem::Scene3DItem(QQuickItem *parent)
// we still won't get ignored by the QtQuick SG when in Underlay mode
setWidth(1);
setHeight(1);
+
+ const QByteArray framesToFlushCountEnvVar = qgetenv("QT3D_SCENE3D_FRAMES_FLUSH_COUNT");
+ if (!framesToFlushCountEnvVar.isEmpty()) {
+ ms_framesNeededToFlushPipeline = framesToFlushCountEnvVar.toInt();
+ }
}
Scene3DItem::~Scene3DItem()
@@ -1014,4 +1022,5 @@ void Scene3DItem::mousePressEvent(QMouseEvent *event)
QT_END_NAMESPACE
+#include "moc_scene3ditem_p.cpp"
#include "scene3ditem.moc"
diff --git a/src/quick3d/imports/scene3d/scene3ditem_p.h b/src/quick3d/imports/scene3d/scene3ditem_p.h
index 3a6ca5007..41e82e9f1 100644
--- a/src/quick3d/imports/scene3d/scene3ditem_p.h
+++ b/src/quick3d/imports/scene3d/scene3ditem_p.h
@@ -171,7 +171,7 @@ private:
QMetaObject::Connection m_windowConnection;
qint8 m_framesToRender;
- static const qint8 ms_framesNeededToFlushPipeline = 2;
+ static qint8 ms_framesNeededToFlushPipeline;
};
} // Qt3DRender
diff --git a/src/quick3d/imports/scene3d/scene3drenderer.cpp b/src/quick3d/imports/scene3d/scene3drenderer.cpp
index d39410836..275068b60 100644
--- a/src/quick3d/imports/scene3d/scene3drenderer.cpp
+++ b/src/quick3d/imports/scene3d/scene3drenderer.cpp
@@ -148,6 +148,7 @@ Scene3DRenderer::Scene3DRenderer()
, m_shouldRender(false)
, m_dirtyViews(false)
, m_skipFrame(false)
+ , m_skippedLastFrame(false)
, m_allowRendering(0)
, m_compositingMode(Scene3DItem::FBO)
{
@@ -235,9 +236,16 @@ void Scene3DRenderer::beforeSynchronize()
m_skipFrame = false;
ContextSaver saver;
static_cast<QRenderAspectPrivate*>(QRenderAspectPrivate::get(m_renderAspect))->renderSynchronous(false);
+
+ // Ensure the QtQuick GL state is reset to prevent previous Qt3D calls from leaving some objects bound in the state
+ if (!m_skippedLastFrame)
+ m_window->resetOpenGLState();
+
+ m_skippedLastFrame = true;
return;
}
+ m_skippedLastFrame = false;
m_shouldRender = true;
// Check size / multisampling
@@ -400,3 +408,5 @@ void Scene3DRenderer::render()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_scene3drenderer_p.cpp"
diff --git a/src/quick3d/imports/scene3d/scene3drenderer_p.h b/src/quick3d/imports/scene3d/scene3drenderer_p.h
index 22ce478e1..7c749b513 100644
--- a/src/quick3d/imports/scene3d/scene3drenderer_p.h
+++ b/src/quick3d/imports/scene3d/scene3drenderer_p.h
@@ -123,6 +123,7 @@ private:
bool m_shouldRender;
bool m_dirtyViews;
bool m_skipFrame;
+ bool m_skippedLastFrame;
QSemaphore m_allowRendering;
Scene3DItem::CompositingMode m_compositingMode;
QVector<Scene3DView *> m_views;
diff --git a/src/quick3d/imports/scene3d/scene3dview.cpp b/src/quick3d/imports/scene3d/scene3dview.cpp
index f38d135f0..ddf58ccad 100644
--- a/src/quick3d/imports/scene3d/scene3dview.cpp
+++ b/src/quick3d/imports/scene3d/scene3dview.cpp
@@ -118,6 +118,10 @@ namespace Qt3DRender {
There are no restriction on the sharing of elements between different scenes
in different Scene3DView instances.
+
+ By default, you are in charge of ensuring the lifetime of the referenced
+ Entity. If you wish to transfer this duty to the Scene3DView, the
+ ownsEntity property can be set to true (defaults to false).
*/
namespace {
@@ -146,6 +150,7 @@ Scene3DView::Scene3DView(QQuickItem *parent)
, m_holderViewport(new Qt3DRender::QViewport())
, m_dirtyFlags(DirtyNode|DirtyTexture)
, m_texture(nullptr)
+ , m_ownsEntity(false)
{
setFlag(QQuickItem::ItemHasContents, true);\
@@ -157,8 +162,11 @@ Scene3DView::Scene3DView(QQuickItem *parent)
Scene3DView::~Scene3DView()
{
- if (m_entity)
- abandonSubtree(m_entity);
+ if (m_entity) {
+ abandonSubtree(m_entity.data());
+ if (m_ownsEntity)
+ m_entity->deleteLater();
+ }
if (m_scene3D)
m_scene3D->removeView(this);
@@ -166,7 +174,7 @@ Scene3DView::~Scene3DView()
Qt3DCore::QEntity *Scene3DView::entity() const
{
- return m_entity;
+ return m_entity.data();
}
Scene3DItem *Scene3DView::scene3D() const
@@ -197,6 +205,11 @@ QSGTexture *Scene3DView::texture() const
return m_texture;
}
+bool Scene3DView::ownsEntity() const
+{
+ return m_ownsEntity;
+}
+
// Called by Scene3DRender::beforeSynchronizing in RenderThread
void Scene3DView::markSGNodeDirty()
{
@@ -207,17 +220,20 @@ void Scene3DView::markSGNodeDirty()
// Main Thread
void Scene3DView::setEntity(Qt3DCore::QEntity *entity)
{
- if (m_entity == entity)
+ if (m_entity.data() == entity)
return;
- if (m_entity)
- abandonSubtree(m_entity);
+ if (m_entity) {
+ abandonSubtree(m_entity.data());
+ if (m_ownsEntity)
+ m_entity->deleteLater();
+ }
m_entity = entity;
emit entityChanged();
if (m_entity)
- adoptSubtree(m_entity);
+ adoptSubtree(m_entity.data());
}
// Main Thread
@@ -247,6 +263,14 @@ void Scene3DView::setScene3D(Scene3DItem *scene3D)
}
}
+void Scene3DView::setOwnsEntity(bool ownsEntity)
+{
+ if (ownsEntity == m_ownsEntity)
+ return;
+ m_ownsEntity = ownsEntity;
+ emit ownsEntityChanged();
+}
+
// Render Thread
QSGNode *Scene3DView::updatePaintNode(QSGNode *node, QQuickItem::UpdatePaintNodeData *)
{
diff --git a/src/quick3d/imports/scene3d/scene3dview_p.h b/src/quick3d/imports/scene3d/scene3dview_p.h
index ffb80f93b..5181073c8 100644
--- a/src/quick3d/imports/scene3d/scene3dview_p.h
+++ b/src/quick3d/imports/scene3d/scene3dview_p.h
@@ -53,6 +53,7 @@
#include <QtQuick/QQuickItem>
#include <QtCore/QFlags>
+#include <QtCore/QPointer>
QT_BEGIN_NAMESPACE
@@ -76,6 +77,7 @@ class Scene3DView : public QQuickItem
Q_OBJECT
Q_PROPERTY(Qt3DCore::QEntity* entity READ entity WRITE setEntity NOTIFY entityChanged)
Q_PROPERTY(Qt3DRender::Scene3DItem *scene3D READ scene3D WRITE setScene3D NOTIFY scene3DChanged)
+ Q_PROPERTY(bool ownsEntity READ ownsEntity WRITE setOwnsEntity NOTIFY ownsEntityChanged)
Q_CLASSINFO("DefaultProperty", "entity")
public:
@@ -97,15 +99,19 @@ public:
void setTexture(QSGTexture *texture);
QSGTexture *texture() const;
+ bool ownsEntity() const;
+
void markSGNodeDirty();
public Q_SLOTS:
void setEntity(Qt3DCore::QEntity *entity);
void setScene3D(Scene3DItem *scene3D);
+ void setOwnsEntity(bool ownsEntity);
Q_SIGNALS:
void entityChanged();
void scene3DChanged();
+ void ownsEntityChanged();
private:
QSGNode *updatePaintNode(QSGNode *node, UpdatePaintNodeData *nodeData) override;
@@ -113,7 +119,7 @@ private:
void abandonSubtree(Qt3DCore::QEntity *subtree);
Scene3DItem *m_scene3D;
- Qt3DCore::QEntity *m_entity;
+ QPointer<Qt3DCore::QEntity> m_entity;
Qt3DCore::QNode *m_previousFGParent;
Qt3DCore::QEntity *m_holderEntity;
@@ -125,6 +131,7 @@ private:
DirtyFlags m_dirtyFlags;
QSGTexture *m_texture;
+ bool m_ownsEntity;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(Scene3DView::DirtyFlags)
diff --git a/src/quick3d/quick3d/items/quick3dentity.cpp b/src/quick3d/quick3d/items/quick3dentity.cpp
index c2814a79e..8bb20c185 100644
--- a/src/quick3d/quick3d/items/quick3dentity.cpp
+++ b/src/quick3d/quick3d/items/quick3dentity.cpp
@@ -121,3 +121,5 @@ void Quick3DEntity::qmlClearComponents(QQmlListProperty<QComponent> *list)
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_quick3dentity_p.cpp"
diff --git a/src/quick3d/quick3d/items/quick3djoint.cpp b/src/quick3d/quick3d/items/quick3djoint.cpp
index 810e37e1a..f6b6a91fa 100644
--- a/src/quick3d/quick3d/items/quick3djoint.cpp
+++ b/src/quick3d/quick3d/items/quick3djoint.cpp
@@ -93,3 +93,5 @@ void Quick3DJoint::clearJoints(QQmlListProperty<QJoint> *list)
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_quick3djoint_p.cpp"
diff --git a/src/quick3d/quick3d/items/quick3dnode.cpp b/src/quick3d/quick3d/items/quick3dnode.cpp
index fb91f4ae0..eaed92e8b 100644
--- a/src/quick3d/quick3d/items/quick3dnode.cpp
+++ b/src/quick3d/quick3d/items/quick3dnode.cpp
@@ -170,3 +170,5 @@ void Quick3DNode::childRemoved(int, QObject *obj)
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_quick3dnode_p.cpp"
diff --git a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp
index 938747a95..44c75a4df 100644
--- a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp
+++ b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp
@@ -73,6 +73,7 @@ public:
#endif
void _q_createdItem(int, QObject *);
void _q_modelUpdated(const QQmlChangeSet &, bool);
+ QObject *modelObject(int index, bool async);
bool m_componentComplete:1;
bool m_effectiveReset:1;
@@ -81,6 +82,7 @@ public:
#if QT_CONFIG(qml_delegate_model)
bool m_ownModel:1;
#endif
+ int m_requestedIndex;
QVariant m_model;
QQmlInstanceModel *m_instanceModel;
QQmlComponent *m_delegate;
@@ -99,6 +101,7 @@ Quick3DNodeInstantiatorPrivate::Quick3DNodeInstantiatorPrivate()
#if QT_CONFIG(qml_delegate_model)
, m_ownModel(false)
#endif
+ , m_requestedIndex(-1)
, m_model(QVariant(1))
, m_instanceModel(0)
, m_delegate(0)
@@ -129,6 +132,14 @@ void Quick3DNodeInstantiatorPrivate::clear()
emit q->objectChanged();
}
+QObject *Quick3DNodeInstantiatorPrivate::modelObject(int index, bool async)
+{
+ m_requestedIndex = index;
+ QObject *o = m_instanceModel->object(index, async ? QQmlIncubator::Asynchronous : QQmlIncubator::AsynchronousIfNested);
+ m_requestedIndex = -1;
+ return o;
+}
+
void Quick3DNodeInstantiatorPrivate::regenerate()
{
Q_Q(Quick3DNodeInstantiator);
@@ -146,8 +157,7 @@ void Quick3DNodeInstantiatorPrivate::regenerate()
}
for (int i = 0; i < m_instanceModel->count(); i++) {
- QObject *object = m_instanceModel->object(i, m_async ?
- QQmlIncubator::Asynchronous : QQmlIncubator::AsynchronousIfNested);
+ QObject *object = modelObject(i, m_async);
// If the item was already created we won't get a createdItem
if (object)
_q_createdItem(i, object);
@@ -161,8 +171,19 @@ void Quick3DNodeInstantiatorPrivate::_q_createdItem(int idx, QObject *item)
Q_Q(Quick3DNodeInstantiator);
if (m_objects.contains(item)) //Case when it was created synchronously in regenerate
return;
+ if (m_requestedIndex != idx) // Asynchronous creation, reference the object |
+ (void)m_instanceModel->object(idx);
static_cast<QNode *>(item)->setParent(q->parentNode());
- m_objects.insert(idx, item);
+ if (m_objects.size() < idx + 1) {
+ int modelCount = m_instanceModel->count();
+ if (m_objects.capacity() < modelCount)
+ m_objects.reserve(modelCount);
+ m_objects.resize(idx + 1);
+ }
+ if (QObject *o = m_objects.at(idx))
+ m_instanceModel->release(o);
+ m_objects.replace(idx, item);
+
if (m_objects.count() == 1)
emit q->objectChanged();
emit q->objectAdded(idx, item);
@@ -213,11 +234,14 @@ void Quick3DNodeInstantiatorPrivate::_q_modelUpdated(const QQmlChangeSet &change
QVector<QPointer<QObject> > movedObjects = moved.value(insert.moveId);
m_objects = m_objects.mid(0, index) + movedObjects + m_objects.mid(index);
} else for (int i = 0; i < insert.count; ++i) {
- int modelIndex = index + i;
- QObject *obj = m_instanceModel->object(modelIndex, m_async ?
- QQmlIncubator::Asynchronous : QQmlIncubator::AsynchronousIfNested);
- if (obj)
- _q_createdItem(modelIndex, obj);
+ if (insert.index <= m_objects.count())
+ m_objects.insert(insert.index, insert.count, nullptr);
+ for (int i = 0; i < insert.count; ++i) {
+ int modelIndex = index + i;
+ QObject *obj = modelObject(modelIndex, m_async);
+ if (obj)
+ _q_createdItem(modelIndex, obj);
+ }
}
difference += insert.count;
}
diff --git a/src/quick3d/quick3d/qquaternionanimation.cpp b/src/quick3d/quick3d/qquaternionanimation.cpp
index 933a08ee4..78e07ea6a 100644
--- a/src/quick3d/quick3d/qquaternionanimation.cpp
+++ b/src/quick3d/quick3d/qquaternionanimation.cpp
@@ -257,3 +257,5 @@ void QQuaternionAnimation::setToZRotation(float f)
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qquaternionanimation_p.cpp"
diff --git a/src/quick3d/quick3d/qt3dquickvaluetypes.cpp b/src/quick3d/quick3d/qt3dquickvaluetypes.cpp
index 7cc1a4a0c..49ecb5062 100644
--- a/src/quick3d/quick3d/qt3dquickvaluetypes.cpp
+++ b/src/quick3d/quick3d/qt3dquickvaluetypes.cpp
@@ -610,3 +610,5 @@ QString Quick3DMatrix4x4ValueType::toString() const
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qt3dquickvaluetypes_p.cpp"
diff --git a/src/quick3d/quick3danimation/items/quick3danimationcontroller.cpp b/src/quick3d/quick3danimation/items/quick3danimationcontroller.cpp
index dc6183989..11444afe6 100644
--- a/src/quick3d/quick3danimation/items/quick3danimationcontroller.cpp
+++ b/src/quick3d/quick3danimation/items/quick3danimationcontroller.cpp
@@ -93,3 +93,5 @@ void QQuick3DAnimationController::clearAnimationGroups(QQmlListProperty<QAnimati
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_quick3danimationcontroller_p.cpp"
diff --git a/src/quick3d/quick3danimation/items/quick3danimationgroup.cpp b/src/quick3d/quick3danimation/items/quick3danimationgroup.cpp
index f10450280..80b1fadf6 100644
--- a/src/quick3d/quick3danimation/items/quick3danimationgroup.cpp
+++ b/src/quick3d/quick3danimation/items/quick3danimationgroup.cpp
@@ -97,3 +97,5 @@ void QQuick3DAnimationGroup::clearAnimation(QQmlListProperty<Qt3DAnimation::QAbs
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_quick3danimationgroup_p.cpp"
diff --git a/src/quick3d/quick3danimation/items/quick3dchannelmapper.cpp b/src/quick3d/quick3danimation/items/quick3dchannelmapper.cpp
index 66ee7faef..37d9f9128 100644
--- a/src/quick3d/quick3danimation/items/quick3dchannelmapper.cpp
+++ b/src/quick3d/quick3danimation/items/quick3dchannelmapper.cpp
@@ -90,3 +90,5 @@ void Quick3DChannelMapper::clearMappings(QQmlListProperty<QAbstractChannelMappin
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_quick3dchannelmapper_p.cpp"
diff --git a/src/quick3d/quick3danimation/items/quick3dkeyframeanimation.cpp b/src/quick3d/quick3danimation/items/quick3dkeyframeanimation.cpp
index f7cf133fe..30a7e3d52 100644
--- a/src/quick3d/quick3danimation/items/quick3dkeyframeanimation.cpp
+++ b/src/quick3d/quick3danimation/items/quick3dkeyframeanimation.cpp
@@ -99,3 +99,5 @@ void QQuick3DKeyframeAnimation::clearKeyframes(QQmlListProperty<Qt3DCore::QTrans
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_quick3dkeyframeanimation_p.cpp"
diff --git a/src/quick3d/quick3danimation/items/quick3dmorphinganimation.cpp b/src/quick3d/quick3danimation/items/quick3dmorphinganimation.cpp
index 997e2e215..aa1de2dae 100644
--- a/src/quick3d/quick3danimation/items/quick3dmorphinganimation.cpp
+++ b/src/quick3d/quick3danimation/items/quick3dmorphinganimation.cpp
@@ -95,3 +95,5 @@ void QQuick3DMorphingAnimation::clearMorphTargets(QQmlListProperty<Qt3DAnimation
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_quick3dmorphinganimation_p.cpp"
diff --git a/src/quick3d/quick3danimation/items/quick3dmorphtarget.cpp b/src/quick3d/quick3danimation/items/quick3dmorphtarget.cpp
index 81144e186..60ce75dbe 100644
--- a/src/quick3d/quick3danimation/items/quick3dmorphtarget.cpp
+++ b/src/quick3d/quick3danimation/items/quick3dmorphtarget.cpp
@@ -91,3 +91,5 @@ void QQuick3DMorphTarget::clearAttributes(QQmlListProperty<Qt3DRender::QAttribut
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_quick3dmorphtarget_p.cpp"
diff --git a/src/quick3d/quick3danimation/items/quick3dvertexblendanimation.cpp b/src/quick3d/quick3danimation/items/quick3dvertexblendanimation.cpp
index 2dffb7858..844f64a52 100644
--- a/src/quick3d/quick3danimation/items/quick3dvertexblendanimation.cpp
+++ b/src/quick3d/quick3danimation/items/quick3dvertexblendanimation.cpp
@@ -102,3 +102,5 @@ void QQuick3DVertexBlendAnimation::clearMorphTargets(QQmlListProperty<Qt3DAnimat
} // namespace Qt3DAnimation
QT_END_NAMESPACE
+
+#include "moc_quick3dvertexblendanimation_p.cpp"
diff --git a/src/quick3d/quick3dextras/items/quick3dlevelofdetailloader.cpp b/src/quick3d/quick3dextras/items/quick3dlevelofdetailloader.cpp
index 087342063..8b9cbd0ef 100644
--- a/src/quick3d/quick3dextras/items/quick3dlevelofdetailloader.cpp
+++ b/src/quick3d/quick3dextras/items/quick3dlevelofdetailloader.cpp
@@ -191,4 +191,6 @@ QUrl Quick3DLevelOfDetailLoader::source() const
QT_END_NAMESPACE
+#include "moc_quick3dlevelofdetailloader_p.cpp"
+
diff --git a/src/quick3d/quick3dextras/items/quick3dspritesheet.cpp b/src/quick3d/quick3dextras/items/quick3dspritesheet.cpp
index a38581cc7..8e0cae9b3 100644
--- a/src/quick3d/quick3dextras/items/quick3dspritesheet.cpp
+++ b/src/quick3d/quick3dextras/items/quick3dspritesheet.cpp
@@ -98,3 +98,5 @@ void Quick3DSpriteSheet::clearSprites(QQmlListProperty<Qt3DExtras::QSpriteSheetI
QT_END_NAMESPACE
+#include "moc_quick3dspritesheet_p.cpp"
+
diff --git a/src/quick3d/quick3dextras/qt3dquickwindow.cpp b/src/quick3d/quick3dextras/qt3dquickwindow.cpp
index ead45d51d..fd366ebc8 100644
--- a/src/quick3d/quick3dextras/qt3dquickwindow.cpp
+++ b/src/quick3d/quick3dextras/qt3dquickwindow.cpp
@@ -273,4 +273,5 @@ void Qt3DQuickWindow::updateCameraAspectRatio()
QT_END_NAMESPACE
+#include "moc_qt3dquickwindow.cpp"
#include "qt3dquickwindow.moc"
diff --git a/src/quick3d/quick3dinput/items/quick3daction.cpp b/src/quick3d/quick3dinput/items/quick3daction.cpp
index 33752c6e0..016ce92fe 100644
--- a/src/quick3d/quick3dinput/items/quick3daction.cpp
+++ b/src/quick3d/quick3dinput/items/quick3daction.cpp
@@ -91,3 +91,5 @@ void Quick3DAction::clearActionInputs(QQmlListProperty<QAbstractActionInput> *li
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_quick3daction_p.cpp"
diff --git a/src/quick3d/quick3dinput/items/quick3daxis.cpp b/src/quick3d/quick3dinput/items/quick3daxis.cpp
index 966aa250d..13a7e2037 100644
--- a/src/quick3d/quick3dinput/items/quick3daxis.cpp
+++ b/src/quick3d/quick3dinput/items/quick3daxis.cpp
@@ -91,3 +91,5 @@ void Quick3DAxis::clearAxisInputs(QQmlListProperty<QAbstractAxisInput> *list)
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_quick3daxis_p.cpp"
diff --git a/src/quick3d/quick3dinput/items/quick3dinputchord.cpp b/src/quick3d/quick3dinput/items/quick3dinputchord.cpp
index 16a5e8181..e1ae6b17d 100644
--- a/src/quick3d/quick3dinput/items/quick3dinputchord.cpp
+++ b/src/quick3d/quick3dinput/items/quick3dinputchord.cpp
@@ -90,3 +90,5 @@ void Quick3DInputChord::clearActionInputs(QQmlListProperty<QAbstractActionInput>
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_quick3dinputchord_p.cpp"
diff --git a/src/quick3d/quick3dinput/items/quick3dinputsequence.cpp b/src/quick3d/quick3dinput/items/quick3dinputsequence.cpp
index 4f4eed9d3..88ad49eb9 100644
--- a/src/quick3d/quick3dinput/items/quick3dinputsequence.cpp
+++ b/src/quick3d/quick3dinput/items/quick3dinputsequence.cpp
@@ -91,3 +91,5 @@ void Quick3DInputSequence::clearActionInputs(QQmlListProperty<QAbstractActionInp
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_quick3dinputsequence_p.cpp"
diff --git a/src/quick3d/quick3dinput/items/quick3dlogicaldevice.cpp b/src/quick3d/quick3dinput/items/quick3dlogicaldevice.cpp
index 50218dd25..efc774318 100644
--- a/src/quick3d/quick3dinput/items/quick3dlogicaldevice.cpp
+++ b/src/quick3d/quick3dinput/items/quick3dlogicaldevice.cpp
@@ -126,3 +126,5 @@ void Quick3DLogicalDevice::clearActions(QQmlListProperty<QAction> *list)
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_quick3dlogicaldevice_p.cpp"
diff --git a/src/quick3d/quick3dinput/items/quick3dphysicaldevice.cpp b/src/quick3d/quick3dinput/items/quick3dphysicaldevice.cpp
index 5c8d55b54..bb8991260 100644
--- a/src/quick3d/quick3dinput/items/quick3dphysicaldevice.cpp
+++ b/src/quick3d/quick3dinput/items/quick3dphysicaldevice.cpp
@@ -90,3 +90,5 @@ void Quick3DPhysicalDevice::clearAxisSettings(QQmlListProperty<QAxisSetting> *li
} // namespace Qt3DInput
QT_END_NAMESPACE
+
+#include "moc_quick3dphysicaldevice_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dbuffer.cpp b/src/quick3d/quick3drender/items/quick3dbuffer.cpp
index 9ff349118..7d5e27564 100644
--- a/src/quick3d/quick3drender/items/quick3dbuffer.cpp
+++ b/src/quick3d/quick3drender/items/quick3dbuffer.cpp
@@ -143,3 +143,5 @@ void Quick3DBuffer::initEngines()
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3dbuffer_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3deffect.cpp b/src/quick3d/quick3drender/items/quick3deffect.cpp
index fa82c6eff..ef064c1e4 100644
--- a/src/quick3d/quick3drender/items/quick3deffect.cpp
+++ b/src/quick3d/quick3drender/items/quick3deffect.cpp
@@ -137,3 +137,5 @@ void Quick3DEffect::clearParameterList(QQmlListProperty<QParameter> *list)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3deffect_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dlayerfilter.cpp b/src/quick3d/quick3drender/items/quick3dlayerfilter.cpp
index 951b4f82f..c925cebc3 100644
--- a/src/quick3d/quick3drender/items/quick3dlayerfilter.cpp
+++ b/src/quick3d/quick3drender/items/quick3dlayerfilter.cpp
@@ -106,3 +106,5 @@ void Quick3DLayerFilter::clearLayers(QQmlListProperty<QLayer> *list)
} // Qt3D
QT_END_NAMESPACE
+
+#include "moc_quick3dlayerfilter_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dmaterial.cpp b/src/quick3d/quick3drender/items/quick3dmaterial.cpp
index 3dfbec83e..9292df95b 100644
--- a/src/quick3d/quick3drender/items/quick3dmaterial.cpp
+++ b/src/quick3d/quick3drender/items/quick3dmaterial.cpp
@@ -105,3 +105,5 @@ void Quick3DMaterial::clearParameters(QQmlListProperty<QParameter> *list)
} // Qt3D
QT_END_NAMESPACE
+
+#include "moc_quick3dmaterial_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dmemorybarrier.cpp b/src/quick3d/quick3drender/items/quick3dmemorybarrier.cpp
index 0754a0cf5..504ff3af9 100644
--- a/src/quick3d/quick3drender/items/quick3dmemorybarrier.cpp
+++ b/src/quick3d/quick3drender/items/quick3dmemorybarrier.cpp
@@ -72,3 +72,5 @@ int Quick3DMemoryBarrier::waitFor() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3dmemorybarrier_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dparameter.cpp b/src/quick3d/quick3drender/items/quick3dparameter.cpp
index 2ef95a4d4..a4e6178e1 100644
--- a/src/quick3d/quick3drender/items/quick3dparameter.cpp
+++ b/src/quick3d/quick3drender/items/quick3dparameter.cpp
@@ -85,4 +85,6 @@ Quick3DParameter::Quick3DParameter(Quick3DParameterPrivate &dd, QNode *parent)
QT_END_NAMESPACE
+#include "moc_quick3dparameter_p.cpp"
+
diff --git a/src/quick3d/quick3drender/items/quick3draycaster.cpp b/src/quick3d/quick3drender/items/quick3draycaster.cpp
index b8f086983..49cce2ff9 100644
--- a/src/quick3d/quick3drender/items/quick3draycaster.cpp
+++ b/src/quick3d/quick3drender/items/quick3draycaster.cpp
@@ -173,3 +173,5 @@ QQmlListProperty<Qt3DRender::QLayer> Qt3DRender::Render::Quick::Quick3DRayCaster
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3draycaster_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3drenderpass.cpp b/src/quick3d/quick3drender/items/quick3drenderpass.cpp
index 7bd50a0d5..1724fba6c 100644
--- a/src/quick3d/quick3drender/items/quick3drenderpass.cpp
+++ b/src/quick3d/quick3drender/items/quick3drenderpass.cpp
@@ -162,3 +162,5 @@ void Quick3DRenderPass::clearParameterList(QQmlListProperty<QParameter> *list)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3drenderpass_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3drenderpassfilter.cpp b/src/quick3d/quick3drender/items/quick3drenderpassfilter.cpp
index 0a8fa8a3a..bc101a6dc 100644
--- a/src/quick3d/quick3drender/items/quick3drenderpassfilter.cpp
+++ b/src/quick3d/quick3drender/items/quick3drenderpassfilter.cpp
@@ -135,3 +135,5 @@ void Quick3DRenderPassFilter::clearParameterList(QQmlListProperty<QParameter> *l
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3drenderpassfilter_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3drendertargetoutput.cpp b/src/quick3d/quick3drender/items/quick3drendertargetoutput.cpp
index 024789a4c..6a1c28e9a 100644
--- a/src/quick3d/quick3drender/items/quick3drendertargetoutput.cpp
+++ b/src/quick3d/quick3drender/items/quick3drendertargetoutput.cpp
@@ -97,3 +97,5 @@ void Quick3DRenderTargetOutput::clearRenderAttachments(QQmlListProperty<QRenderT
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3drendertargetoutput_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dscene.cpp b/src/quick3d/quick3drender/items/quick3dscene.cpp
index af4f44f0e..d118fa51d 100644
--- a/src/quick3d/quick3drender/items/quick3dscene.cpp
+++ b/src/quick3d/quick3drender/items/quick3dscene.cpp
@@ -55,3 +55,5 @@ Quick3DScene::Quick3DScene(QObject *parent)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3dscene_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dscreenraycaster.cpp b/src/quick3d/quick3drender/items/quick3dscreenraycaster.cpp
index dd3d1f758..243ab4a01 100644
--- a/src/quick3d/quick3drender/items/quick3dscreenraycaster.cpp
+++ b/src/quick3d/quick3drender/items/quick3dscreenraycaster.cpp
@@ -91,3 +91,5 @@ QQmlListProperty<Qt3DRender::QLayer> Qt3DRender::Render::Quick::Quick3DScreenRay
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3dscreenraycaster_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dshaderdata.cpp b/src/quick3d/quick3drender/items/quick3dshaderdata.cpp
index 539391da9..0cc669e44 100644
--- a/src/quick3d/quick3drender/items/quick3dshaderdata.cpp
+++ b/src/quick3d/quick3drender/items/quick3dshaderdata.cpp
@@ -104,3 +104,5 @@ Quick3DShaderData::Quick3DShaderData(QNode *parent)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3dshaderdata_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp b/src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp
index 9dac7bbc6..61f4b5e96 100644
--- a/src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp
+++ b/src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp
@@ -114,3 +114,5 @@ void Quick3DShaderDataArray::clearValues(QQmlListProperty<QShaderData> *list)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3dshaderdataarray_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dstateset.cpp b/src/quick3d/quick3drender/items/quick3dstateset.cpp
index 468364493..5dda0754f 100644
--- a/src/quick3d/quick3drender/items/quick3dstateset.cpp
+++ b/src/quick3d/quick3drender/items/quick3dstateset.cpp
@@ -96,3 +96,5 @@ void Quick3DStateSet::clearRenderStates(QQmlListProperty<QRenderState> *list)
QT_END_NAMESPACE
+#include "moc_quick3dstateset_p.cpp"
+
diff --git a/src/quick3d/quick3drender/items/quick3dtechnique.cpp b/src/quick3d/quick3drender/items/quick3dtechnique.cpp
index 0a15c9f7e..8b54687bc 100644
--- a/src/quick3d/quick3drender/items/quick3dtechnique.cpp
+++ b/src/quick3d/quick3drender/items/quick3dtechnique.cpp
@@ -178,3 +178,5 @@ void Quick3DTechnique::clearFilterKeyList(QQmlListProperty<QFilterKey> *list)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3dtechnique_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dtechniquefilter.cpp b/src/quick3d/quick3drender/items/quick3dtechniquefilter.cpp
index 2019093c9..3c1edeede 100644
--- a/src/quick3d/quick3drender/items/quick3dtechniquefilter.cpp
+++ b/src/quick3d/quick3drender/items/quick3dtechniquefilter.cpp
@@ -134,3 +134,5 @@ void Quick3DTechniqueFilter::clearParameterList(QQmlListProperty<QParameter> *li
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3dtechniquefilter_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dtexture.cpp b/src/quick3d/quick3drender/items/quick3dtexture.cpp
index 7627a3283..2155ac76c 100644
--- a/src/quick3d/quick3drender/items/quick3dtexture.cpp
+++ b/src/quick3d/quick3drender/items/quick3dtexture.cpp
@@ -98,3 +98,5 @@ void Quick3DTextureExtension::clearTextureImageList(QQmlListProperty<QAbstractTe
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3dtexture_p.cpp"
diff --git a/src/quick3d/quick3drender/items/quick3dviewport.cpp b/src/quick3d/quick3drender/items/quick3dviewport.cpp
index 3b4bf33f5..855b631eb 100644
--- a/src/quick3d/quick3drender/items/quick3dviewport.cpp
+++ b/src/quick3d/quick3drender/items/quick3dviewport.cpp
@@ -55,3 +55,5 @@ Quick3DViewport::Quick3DViewport(QObject *parent)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_quick3dviewport_p.cpp"
diff --git a/src/quick3d/quick3dscene2d/items/qscene2d.cpp b/src/quick3d/quick3dscene2d/items/qscene2d.cpp
index b12adb8ed..4f41b2d21 100644
--- a/src/quick3d/quick3dscene2d/items/qscene2d.cpp
+++ b/src/quick3d/quick3dscene2d/items/qscene2d.cpp
@@ -369,3 +369,5 @@ void QScene2D::setMouseEnabled(bool enabled)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qscene2d.cpp"
diff --git a/src/quick3d/quick3dscene2d/items/qt3dquick3dscene2d.cpp b/src/quick3d/quick3dscene2d/items/qt3dquick3dscene2d.cpp
index 83cbefc59..5cae698b3 100644
--- a/src/quick3d/quick3dscene2d/items/qt3dquick3dscene2d.cpp
+++ b/src/quick3d/quick3dscene2d/items/qt3dquick3dscene2d.cpp
@@ -98,3 +98,5 @@ void QQuick3DScene2D::clearEntities(QQmlListProperty<Qt3DCore::QEntity> *list)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qt3dquick3dscene2d_p.cpp"
diff --git a/src/quick3d/quick3dscene2d/items/scene2d.cpp b/src/quick3d/quick3dscene2d/items/scene2d.cpp
index 063464b95..a6647d8d2 100644
--- a/src/quick3d/quick3dscene2d/items/scene2d.cpp
+++ b/src/quick3d/quick3dscene2d/items/scene2d.cpp
@@ -524,3 +524,5 @@ void Scene2D::handlePickEvent(int type, const Qt3DRender::QPickEvent *ev)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_scene2d_p.cpp"
diff --git a/src/quick3d/quick3dscene2d/items/scene2dmanager.cpp b/src/quick3d/quick3dscene2d/items/scene2dmanager.cpp
index 2b967f2d2..862bbcfc6 100644
--- a/src/quick3d/quick3dscene2d/items/scene2dmanager.cpp
+++ b/src/quick3d/quick3dscene2d/items/scene2dmanager.cpp
@@ -254,3 +254,5 @@ void Scene2DManager::cleanup()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_scene2dmanager_p.cpp"
diff --git a/src/render/backend/offscreensurfacehelper.cpp b/src/render/backend/offscreensurfacehelper.cpp
index 38558d484..60c80d7b5 100644
--- a/src/render/backend/offscreensurfacehelper.cpp
+++ b/src/render/backend/offscreensurfacehelper.cpp
@@ -80,3 +80,5 @@ void OffscreenSurfaceHelper::createOffscreenSurface()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_offscreensurfacehelper_p.cpp"
diff --git a/src/render/backend/platformsurfacefilter.cpp b/src/render/backend/platformsurfacefilter.cpp
index 115fb637f..8004bf2e4 100644
--- a/src/render/backend/platformsurfacefilter.cpp
+++ b/src/render/backend/platformsurfacefilter.cpp
@@ -168,3 +168,5 @@ bool SurfaceLocker::isSurfaceValid() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_platformsurfacefilter_p.cpp"
diff --git a/src/render/framegraph/qblitframebuffer.cpp b/src/render/framegraph/qblitframebuffer.cpp
index 252758af4..9a2c4ddfd 100644
--- a/src/render/framegraph/qblitframebuffer.cpp
+++ b/src/render/framegraph/qblitframebuffer.cpp
@@ -456,3 +456,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QBlitFramebuffer::createNodeCreationChange()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qblitframebuffer.cpp"
diff --git a/src/render/framegraph/qbuffercapture.cpp b/src/render/framegraph/qbuffercapture.cpp
index 3eaa5dfd2..862866838 100644
--- a/src/render/framegraph/qbuffercapture.cpp
+++ b/src/render/framegraph/qbuffercapture.cpp
@@ -83,3 +83,5 @@ QBufferCapture::~QBufferCapture()
} //Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qbuffercapture.cpp"
diff --git a/src/render/framegraph/qcameraselector.cpp b/src/render/framegraph/qcameraselector.cpp
index af293dc56..409d5e83e 100644
--- a/src/render/framegraph/qcameraselector.cpp
+++ b/src/render/framegraph/qcameraselector.cpp
@@ -151,3 +151,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QCameraSelector::createNodeCreationChange()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qcameraselector.cpp"
diff --git a/src/render/framegraph/qclearbuffers.cpp b/src/render/framegraph/qclearbuffers.cpp
index 31a31420c..d5d27fa60 100644
--- a/src/render/framegraph/qclearbuffers.cpp
+++ b/src/render/framegraph/qclearbuffers.cpp
@@ -248,3 +248,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QClearBuffers::createNodeCreationChange() co
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qclearbuffers.cpp"
diff --git a/src/render/framegraph/qdebugoverlay.cpp b/src/render/framegraph/qdebugoverlay.cpp
index d82ae88ba..e0360b1d8 100644
--- a/src/render/framegraph/qdebugoverlay.cpp
+++ b/src/render/framegraph/qdebugoverlay.cpp
@@ -65,3 +65,5 @@ QDebugOverlay::QDebugOverlay(Qt3DCore::QNode *parent)
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qdebugoverlay.cpp"
diff --git a/src/render/framegraph/qdispatchcompute.cpp b/src/render/framegraph/qdispatchcompute.cpp
index 6e018d8ef..4e5e84039 100644
--- a/src/render/framegraph/qdispatchcompute.cpp
+++ b/src/render/framegraph/qdispatchcompute.cpp
@@ -177,3 +177,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QDispatchCompute::createNodeCreationChange()
QT_END_NAMESPACE
+#include "moc_qdispatchcompute.cpp"
+
diff --git a/src/render/framegraph/qframegraphnode.cpp b/src/render/framegraph/qframegraphnode.cpp
index 6cddf543b..f01aab941 100644
--- a/src/render/framegraph/qframegraphnode.cpp
+++ b/src/render/framegraph/qframegraphnode.cpp
@@ -440,3 +440,5 @@ void QFrameGraphNode::onParentChanged(QObject *)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qframegraphnode.cpp"
diff --git a/src/render/framegraph/qfrustumculling.cpp b/src/render/framegraph/qfrustumculling.cpp
index c34d666b5..d86044725 100644
--- a/src/render/framegraph/qfrustumculling.cpp
+++ b/src/render/framegraph/qfrustumculling.cpp
@@ -96,3 +96,5 @@ QFrustumCulling::~QFrustumCulling()
QT_END_NAMESPACE
+#include "moc_qfrustumculling.cpp"
+
diff --git a/src/render/framegraph/qlayerfilter.cpp b/src/render/framegraph/qlayerfilter.cpp
index 5557687ce..5cceb420e 100644
--- a/src/render/framegraph/qlayerfilter.cpp
+++ b/src/render/framegraph/qlayerfilter.cpp
@@ -258,3 +258,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QLayerFilter::createNodeCreationChange() con
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qlayerfilter.cpp"
diff --git a/src/render/framegraph/qmemorybarrier.cpp b/src/render/framegraph/qmemorybarrier.cpp
index 5da462f1b..345600cb9 100644
--- a/src/render/framegraph/qmemorybarrier.cpp
+++ b/src/render/framegraph/qmemorybarrier.cpp
@@ -168,3 +168,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QMemoryBarrier::createNodeCreationChange() c
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qmemorybarrier.cpp"
diff --git a/src/render/framegraph/qnodraw.cpp b/src/render/framegraph/qnodraw.cpp
index 46756557e..bd77727ed 100644
--- a/src/render/framegraph/qnodraw.cpp
+++ b/src/render/framegraph/qnodraw.cpp
@@ -140,3 +140,5 @@ QNoDraw::~QNoDraw()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qnodraw.cpp"
diff --git a/src/render/framegraph/qnopicking.cpp b/src/render/framegraph/qnopicking.cpp
index 069560175..f7bfe6d47 100644
--- a/src/render/framegraph/qnopicking.cpp
+++ b/src/render/framegraph/qnopicking.cpp
@@ -137,3 +137,5 @@ QNoPicking::~QNoPicking()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qnopicking.cpp"
diff --git a/src/render/framegraph/qproximityfilter.cpp b/src/render/framegraph/qproximityfilter.cpp
index cd1ecf776..7b15c2cbe 100644
--- a/src/render/framegraph/qproximityfilter.cpp
+++ b/src/render/framegraph/qproximityfilter.cpp
@@ -194,3 +194,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QProximityFilter::createNodeCreationChange()
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qproximityfilter.cpp"
diff --git a/src/render/framegraph/qrendercapture.cpp b/src/render/framegraph/qrendercapture.cpp
index 020befd63..45d4a3763 100644
--- a/src/render/framegraph/qrendercapture.cpp
+++ b/src/render/framegraph/qrendercapture.cpp
@@ -408,3 +408,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QRenderCapture::createNodeCreationChange() c
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qrendercapture.cpp"
diff --git a/src/render/framegraph/qrenderpassfilter.cpp b/src/render/framegraph/qrenderpassfilter.cpp
index f7fafb7d1..22c368ab2 100644
--- a/src/render/framegraph/qrenderpassfilter.cpp
+++ b/src/render/framegraph/qrenderpassfilter.cpp
@@ -222,3 +222,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QRenderPassFilter::createNodeCreationChange(
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qrenderpassfilter.cpp"
diff --git a/src/render/framegraph/qrenderstateset.cpp b/src/render/framegraph/qrenderstateset.cpp
index ac82954c8..5bc831706 100644
--- a/src/render/framegraph/qrenderstateset.cpp
+++ b/src/render/framegraph/qrenderstateset.cpp
@@ -231,3 +231,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QRenderStateSet::createNodeCreationChange()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qrenderstateset.cpp"
diff --git a/src/render/framegraph/qrendersurfaceselector.cpp b/src/render/framegraph/qrendersurfaceselector.cpp
index df30663cb..2ad97b53c 100644
--- a/src/render/framegraph/qrendersurfaceselector.cpp
+++ b/src/render/framegraph/qrendersurfaceselector.cpp
@@ -257,7 +257,7 @@ void QRenderSurfaceSelector::setSurface(QObject *surfaceObject)
d->m_heightConn = QObject::connect(window, &QWindow::heightChanged, [=] (int) {
d->update();
});
- d->m_screenConn = QObject::connect(window, &QWindow::screenChanged, [=] (QScreen *screen) {
+ d->m_screenConn = QObject::connect(window, &QWindow::screenChanged, [this] (QScreen *screen) {
if (screen && !qFuzzyCompare(surfacePixelRatio(), float(screen->devicePixelRatio())))
setSurfacePixelRatio(float(screen->devicePixelRatio()));
});
@@ -329,3 +329,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QRenderSurfaceSelector::createNodeCreationCh
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qrendersurfaceselector.cpp"
diff --git a/src/render/framegraph/qrendertargetselector.cpp b/src/render/framegraph/qrendertargetselector.cpp
index c997c23cc..ab187f486 100644
--- a/src/render/framegraph/qrendertargetselector.cpp
+++ b/src/render/framegraph/qrendertargetselector.cpp
@@ -184,3 +184,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QRenderTargetSelector::createNodeCreationCha
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qrendertargetselector.cpp"
diff --git a/src/render/framegraph/qsetfence.cpp b/src/render/framegraph/qsetfence.cpp
index 262dbd4ad..9dfb0849c 100644
--- a/src/render/framegraph/qsetfence.cpp
+++ b/src/render/framegraph/qsetfence.cpp
@@ -173,3 +173,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QSetFence::createNodeCreationChange() const
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qsetfence.cpp"
diff --git a/src/render/framegraph/qsortpolicy.cpp b/src/render/framegraph/qsortpolicy.cpp
index 5c04025b0..9e70c532e 100644
--- a/src/render/framegraph/qsortpolicy.cpp
+++ b/src/render/framegraph/qsortpolicy.cpp
@@ -201,3 +201,5 @@ void QSortPolicy::setSortTypes(const QVector<int> &sortTypesInt)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qsortpolicy.cpp"
diff --git a/src/render/framegraph/qsubtreeenabler.cpp b/src/render/framegraph/qsubtreeenabler.cpp
index e5d182d00..c0f143864 100644
--- a/src/render/framegraph/qsubtreeenabler.cpp
+++ b/src/render/framegraph/qsubtreeenabler.cpp
@@ -183,3 +183,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QSubtreeEnabler::createNodeCreationChange()
} //Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qsubtreeenabler.cpp"
diff --git a/src/render/framegraph/qtechniquefilter.cpp b/src/render/framegraph/qtechniquefilter.cpp
index 2149d147e..f42ee1868 100644
--- a/src/render/framegraph/qtechniquefilter.cpp
+++ b/src/render/framegraph/qtechniquefilter.cpp
@@ -224,3 +224,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QTechniqueFilter::createNodeCreationChange()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qtechniquefilter.cpp"
diff --git a/src/render/framegraph/qviewport.cpp b/src/render/framegraph/qviewport.cpp
index 34716c5b5..f8aa9282d 100644
--- a/src/render/framegraph/qviewport.cpp
+++ b/src/render/framegraph/qviewport.cpp
@@ -88,7 +88,7 @@ QViewportPrivate::QViewportPrivate()
*/
/*!
- \qmlproperty rect Viewport::gamma
+ \qmlproperty real Viewport::gamma
Specifies the gamma factor for the viewport. The default is 2.2 which should give proper result on most screens.
*/
@@ -168,3 +168,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QViewport::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qviewport.cpp"
diff --git a/src/render/framegraph/qwaitfence.cpp b/src/render/framegraph/qwaitfence.cpp
index 737f4e54d..91238c5fa 100644
--- a/src/render/framegraph/qwaitfence.cpp
+++ b/src/render/framegraph/qwaitfence.cpp
@@ -217,3 +217,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QWaitFence::createNodeCreationChange() const
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qwaitfence.cpp"
diff --git a/src/render/frontend/qcamera.cpp b/src/render/frontend/qcamera.cpp
index 4d4e5bf4d..c721ee728 100644
--- a/src/render/frontend/qcamera.cpp
+++ b/src/render/frontend/qcamera.cpp
@@ -1127,3 +1127,5 @@ QMatrix4x4 QCamera::viewMatrix() const
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qcamera.cpp"
diff --git a/src/render/frontend/qcameralens.cpp b/src/render/frontend/qcameralens.cpp
index 621b22778..1d379776a 100644
--- a/src/render/frontend/qcameralens.cpp
+++ b/src/render/frontend/qcameralens.cpp
@@ -634,3 +634,5 @@ void QCameraLens::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &change)
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qcameralens.cpp"
diff --git a/src/render/frontend/qcomputecommand.cpp b/src/render/frontend/qcomputecommand.cpp
index dfd9c2033..86825ddad 100644
--- a/src/render/frontend/qcomputecommand.cpp
+++ b/src/render/frontend/qcomputecommand.cpp
@@ -292,3 +292,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QComputeCommand::createNodeCreationChange()
} // Render
QT_END_NAMESPACE
+
+#include "moc_qcomputecommand.cpp"
diff --git a/src/render/frontend/qlayer.cpp b/src/render/frontend/qlayer.cpp
index 416525360..8a1c80cea 100644
--- a/src/render/frontend/qlayer.cpp
+++ b/src/render/frontend/qlayer.cpp
@@ -199,3 +199,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QLayer::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qlayer.cpp"
diff --git a/src/render/frontend/qlevelofdetailboundingsphere.cpp b/src/render/frontend/qlevelofdetailboundingsphere.cpp
index 8354365d8..ce9688e38 100644
--- a/src/render/frontend/qlevelofdetailboundingsphere.cpp
+++ b/src/render/frontend/qlevelofdetailboundingsphere.cpp
@@ -155,3 +155,5 @@ bool QLevelOfDetailBoundingSphere::operator !=(const QLevelOfDetailBoundingSpher
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qlevelofdetailboundingsphere.cpp"
diff --git a/src/render/frontend/qlevelofdetailswitch.cpp b/src/render/frontend/qlevelofdetailswitch.cpp
index c07d4c4b1..c4a92ba23 100644
--- a/src/render/frontend/qlevelofdetailswitch.cpp
+++ b/src/render/frontend/qlevelofdetailswitch.cpp
@@ -141,3 +141,5 @@ void QLevelOfDetailSwitch::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qlevelofdetailswitch.cpp"
diff --git a/src/render/frontend/qpickingsettings.cpp b/src/render/frontend/qpickingsettings.cpp
index 0c858aef2..e176f0329 100644
--- a/src/render/frontend/qpickingsettings.cpp
+++ b/src/render/frontend/qpickingsettings.cpp
@@ -308,3 +308,5 @@ void QPickingSettings::setWorldSpaceTolerance(float worldSpaceTolerance)
} // namespace Qt3Drender
QT_END_NAMESPACE
+
+#include "moc_qpickingsettings.cpp"
diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp
index bbf1013d9..fe772faf8 100644
--- a/src/render/frontend/qrenderaspect.cpp
+++ b/src/render/frontend/qrenderaspect.cpp
@@ -1002,3 +1002,5 @@ void QRenderAspectPrivate::configurePlugin(const QString &plugin)
QT_END_NAMESPACE
QT3D_REGISTER_NAMESPACED_ASPECT("render", QT_PREPEND_NAMESPACE(Qt3DRender), QRenderAspect)
+
+#include "moc_qrenderaspect.cpp"
diff --git a/src/render/frontend/qrendercapabilities.cpp b/src/render/frontend/qrendercapabilities.cpp
index 3ef0ba01d..5b3e2b710 100644
--- a/src/render/frontend/qrendercapabilities.cpp
+++ b/src/render/frontend/qrendercapabilities.cpp
@@ -875,3 +875,5 @@ int QRenderCapabilities::maxComputeSharedMemorySize() const
} // namespace Qt3Drender
QT_END_NAMESPACE
+
+#include "moc_qrendercapabilities.cpp"
diff --git a/src/render/frontend/qrenderpluginfactoryif.cpp b/src/render/frontend/qrenderpluginfactoryif.cpp
index af567084c..976f3035d 100644
--- a/src/render/frontend/qrenderpluginfactoryif.cpp
+++ b/src/render/frontend/qrenderpluginfactoryif.cpp
@@ -63,3 +63,5 @@ QRenderPlugin *QRenderPluginFactoryIf::create(const QString &key, const QStringL
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qrenderpluginfactoryif_p.cpp"
diff --git a/src/render/frontend/qrendertarget.cpp b/src/render/frontend/qrendertarget.cpp
index 7e0403c13..ae0fb4e3a 100644
--- a/src/render/frontend/qrendertarget.cpp
+++ b/src/render/frontend/qrendertarget.cpp
@@ -161,3 +161,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QRenderTarget::createNodeCreationChange() co
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qrendertarget.cpp"
diff --git a/src/render/frontend/qrendertargetoutput.cpp b/src/render/frontend/qrendertargetoutput.cpp
index 8c0d86134..4eb413d4f 100644
--- a/src/render/frontend/qrendertargetoutput.cpp
+++ b/src/render/frontend/qrendertargetoutput.cpp
@@ -316,3 +316,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QRenderTargetOutput::createNodeCreationChang
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qrendertargetoutput.cpp"
diff --git a/src/render/geometry/geometry.cpp b/src/render/geometry/geometry.cpp
index 56ea936be..58bbcc3ad 100644
--- a/src/render/geometry/geometry.cpp
+++ b/src/render/geometry/geometry.cpp
@@ -55,8 +55,6 @@ namespace Render {
Geometry::Geometry()
: BackendNode(ReadWrite)
, m_geometryDirty(false)
- , m_shouldNotifyMinExtentChanged(false)
- , m_shouldNotifyMaxExtentChanged(false)
{
}
@@ -72,8 +70,6 @@ void Geometry::cleanup()
m_boundingPositionAttribute = Qt3DCore::QNodeId();
m_min = QVector3D();
m_max = QVector3D();
- m_shouldNotifyMinExtentChanged = false;
- m_shouldNotifyMaxExtentChanged = false;
}
void Geometry::syncFromFrontEnd(const QNode *frontEnd, bool firstTime)
@@ -113,27 +109,10 @@ void Geometry::updateExtent(const QVector3D &min, const QVector3D &max)
// Send notification to frontend
if (m_min != min) {
m_min = min;
- m_shouldNotifyMinExtentChanged = true;
}
if (m_max != max) {
m_max = max;
- m_shouldNotifyMaxExtentChanged = true;
- }
-}
-
-// Called from calcboundingvolumejob after all bounding volumes have been
-// updated (in an aspect thread)
-void Geometry::notifyExtentChanged()
-{
- if (m_shouldNotifyMinExtentChanged || m_shouldNotifyMaxExtentChanged) {
- auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(peerId());
- change->setDeliveryFlags(Qt3DCore::QSceneChange::Nodes);
- change->setPropertyName("extent");
- change->setValue(QVariant::fromValue(QPair<QVector3D, QVector3D>(m_min, m_max)));
- notifyObservers(change);
- m_shouldNotifyMinExtentChanged = false;
- m_shouldNotifyMaxExtentChanged = false;
}
}
diff --git a/src/render/geometry/geometry_p.h b/src/render/geometry/geometry_p.h
index fdad63286..8b8a1aa38 100644
--- a/src/render/geometry/geometry_p.h
+++ b/src/render/geometry/geometry_p.h
@@ -79,7 +79,6 @@ public:
inline QVector3D max() const { return m_max; }
void updateExtent(const QVector3D &min, const QVector3D &max);
- void notifyExtentChanged();
private:
QVector<Qt3DCore::QNodeId> m_attributes;
@@ -87,8 +86,6 @@ private:
Qt3DCore::QNodeId m_boundingPositionAttribute;
QVector3D m_min;
QVector3D m_max;
- bool m_shouldNotifyMinExtentChanged;
- bool m_shouldNotifyMaxExtentChanged;
};
} // namespace Render
diff --git a/src/render/geometry/qattribute.cpp b/src/render/geometry/qattribute.cpp
index 84d14cfe1..e58c7d324 100644
--- a/src/render/geometry/qattribute.cpp
+++ b/src/render/geometry/qattribute.cpp
@@ -519,3 +519,5 @@ The signal is emitted with \a vertexBaseType when the dataType changed.
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qattribute.cpp" \ No newline at end of file
diff --git a/src/render/geometry/qbuffer.cpp b/src/render/geometry/qbuffer.cpp
index daf6f91c8..17afce2ce 100644
--- a/src/render/geometry/qbuffer.cpp
+++ b/src/render/geometry/qbuffer.cpp
@@ -493,3 +493,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QBuffer::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qbuffer.cpp"
diff --git a/src/render/geometry/qgeometry.cpp b/src/render/geometry/qgeometry.cpp
index ac22f2db1..2438932cb 100644
--- a/src/render/geometry/qgeometry.cpp
+++ b/src/render/geometry/qgeometry.cpp
@@ -64,6 +64,24 @@ QGeometryPrivate::~QGeometryPrivate()
{
}
+void QGeometryPrivate::setExtent(const QVector3D &minExtent, const QVector3D &maxExtent)
+{
+ Q_Q(QGeometry);
+ if (m_minExtent != minExtent) {
+ m_minExtent = minExtent;
+ const auto wasBlocked = q->blockNotifications(true);
+ emit q->minExtentChanged(minExtent);
+ q->blockNotifications(wasBlocked);
+ }
+
+ if (m_maxExtent != maxExtent) {
+ m_maxExtent = maxExtent;
+ const auto wasBlocked = q->blockNotifications(true);
+ emit q->maxExtentChanged(maxExtent);
+ q->blockNotifications(wasBlocked);
+ }
+}
+
/*!
\qmltype Geometry
\instantiates Qt3DRender::QGeometry
@@ -151,26 +169,9 @@ QGeometry::QGeometry(QGeometryPrivate &dd, QNode *parent)
{
}
-void QGeometry::sceneChangeEvent(const QSceneChangePtr &change)
+// TODO Unused remove in Qt6
+void QGeometry::sceneChangeEvent(const QSceneChangePtr &)
{
- Q_D(QGeometry);
- QPropertyUpdatedChangePtr e = qSharedPointerCast<QPropertyUpdatedChange>(change);
- if (e->type() == PropertyUpdated) {
- const bool blocked = blockNotifications(true);
- if (e->propertyName() == QByteArrayLiteral("extent")) {
- const QPair<QVector3D, QVector3D> extent = e->value().value<QPair<QVector3D, QVector3D>>();
-
- if (extent.first != d->m_minExtent) {
- d->m_minExtent = extent.first;
- emit minExtentChanged(extent.first);
- }
- if (extent.second != d->m_maxExtent) {
- d->m_maxExtent = extent.second;
- emit maxExtentChanged(d->m_maxExtent);
- }
- }
- blockNotifications(blocked);
- }
}
/*!
diff --git a/src/render/geometry/qgeometry.h b/src/render/geometry/qgeometry.h
index cae637f1f..a4c69cc73 100644
--- a/src/render/geometry/qgeometry.h
+++ b/src/render/geometry/qgeometry.h
@@ -77,6 +77,7 @@ Q_SIGNALS:
Q_REVISION(13) void maxExtentChanged(const QVector3D &maxExtent);
protected:
explicit QGeometry(QGeometryPrivate &dd, Qt3DCore::QNode *parent = nullptr);
+ // TODO Unused remove in Qt6
void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &change) override;
private:
diff --git a/src/render/geometry/qgeometry_p.h b/src/render/geometry/qgeometry_p.h
index 94f71d780..c2b3b2851 100644
--- a/src/render/geometry/qgeometry_p.h
+++ b/src/render/geometry/qgeometry_p.h
@@ -66,6 +66,7 @@ public:
QGeometryPrivate();
~QGeometryPrivate();
+ void setExtent(const QVector3D &minExtent, const QVector3D &maxExtent);
QVector<QAttribute *> m_attributes;
QAttribute *m_boundingVolumePositionAttribute;
diff --git a/src/render/geometry/qgeometryrenderer.cpp b/src/render/geometry/qgeometryrenderer.cpp
index 7abbe8db8..de3896da1 100644
--- a/src/render/geometry/qgeometryrenderer.cpp
+++ b/src/render/geometry/qgeometryrenderer.cpp
@@ -530,3 +530,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QGeometryRenderer::createNodeCreationChange(
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qgeometryrenderer.cpp"
diff --git a/src/render/geometry/qmesh.cpp b/src/render/geometry/qmesh.cpp
index c350a3891..61c0d5c18 100644
--- a/src/render/geometry/qmesh.cpp
+++ b/src/render/geometry/qmesh.cpp
@@ -445,3 +445,5 @@ void MeshDownloadRequest::onCompleted()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qmesh.cpp"
diff --git a/src/render/io/qgeometryloaderfactory.cpp b/src/render/io/qgeometryloaderfactory.cpp
index c34469dc1..d33fa8ae3 100644
--- a/src/render/io/qgeometryloaderfactory.cpp
+++ b/src/render/io/qgeometryloaderfactory.cpp
@@ -56,3 +56,5 @@ QGeometryLoaderFactory::~QGeometryLoaderFactory()
QT_END_NAMESPACE
+#include "moc_qgeometryloaderfactory_p.cpp"
+
diff --git a/src/render/io/qsceneexporter.cpp b/src/render/io/qsceneexporter.cpp
index 71a0120c0..fcc9f93c0 100644
--- a/src/render/io/qsceneexporter.cpp
+++ b/src/render/io/qsceneexporter.cpp
@@ -72,3 +72,5 @@ void QSceneExporter::logInfo(const QString &info)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qsceneexporter_p.cpp"
diff --git a/src/render/io/qsceneexportplugin.cpp b/src/render/io/qsceneexportplugin.cpp
index b7dea8f63..f16195006 100644
--- a/src/render/io/qsceneexportplugin.cpp
+++ b/src/render/io/qsceneexportplugin.cpp
@@ -64,3 +64,5 @@ QSceneExporter *QSceneExportPlugin::create(const QString &key, const QStringList
QT_END_NAMESPACE
+#include "moc_qsceneexportplugin_p.cpp"
+
diff --git a/src/render/io/qsceneimporter.cpp b/src/render/io/qsceneimporter.cpp
index f58a435eb..8c8633eea 100644
--- a/src/render/io/qsceneimporter.cpp
+++ b/src/render/io/qsceneimporter.cpp
@@ -86,3 +86,5 @@ void QSceneImporter::logInfo(const QString &info)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qsceneimporter_p.cpp"
diff --git a/src/render/io/qsceneimportplugin.cpp b/src/render/io/qsceneimportplugin.cpp
index 97e7f3d35..4f185ae44 100644
--- a/src/render/io/qsceneimportplugin.cpp
+++ b/src/render/io/qsceneimportplugin.cpp
@@ -64,3 +64,5 @@ QSceneImporter *QSceneImportPlugin::create(const QString &key, const QStringList
QT_END_NAMESPACE
+#include "moc_qsceneimportplugin_p.cpp"
+
diff --git a/src/render/io/qsceneloader.cpp b/src/render/io/qsceneloader.cpp
index ce2aa034e..d59564f2e 100644
--- a/src/render/io/qsceneloader.cpp
+++ b/src/render/io/qsceneloader.cpp
@@ -393,3 +393,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QSceneLoader::createNodeCreationChange() con
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qsceneloader.cpp"
diff --git a/src/render/jobs/calcboundingvolumejob.cpp b/src/render/jobs/calcboundingvolumejob.cpp
index dc58eb6b9..b906bf9af 100644
--- a/src/render/jobs/calcboundingvolumejob.cpp
+++ b/src/render/jobs/calcboundingvolumejob.cpp
@@ -53,6 +53,7 @@
#include <Qt3DRender/private/buffervisitor_p.h>
#include <Qt3DRender/private/entityvisitor_p.h>
#include <Qt3DCore/private/qaspectmanager_p.h>
+#include <Qt3DRender/private/qgeometry_p.h>
#include <QtCore/qmath.h>
#if QT_CONFIG(concurrent)
@@ -399,8 +400,33 @@ public:
} // anonymous
+class CalculateBoundingVolumeJobPrivate : public Qt3DCore::QAspectJobPrivate
+{
+public:
+ CalculateBoundingVolumeJobPrivate(CalculateBoundingVolumeJob *q) : q_ptr(q) {}
+ ~CalculateBoundingVolumeJobPrivate() override = default;
+
+ void postFrame(Qt3DCore::QAspectManager *aspectManager) override
+ {
+ for (Geometry *backend : m_updatedGeometries) {
+ Qt3DRender::QGeometry *node = qobject_cast<Qt3DRender::QGeometry *>(aspectManager->lookupNode(backend->peerId()));
+ if (!node)
+ continue;
+ Qt3DRender::QGeometryPrivate *dNode = static_cast<Qt3DRender::QGeometryPrivate *>(Qt3DCore::QNodePrivate::get(node));
+ dNode->setExtent(backend->min(), backend->max());
+ }
+
+ m_updatedGeometries.clear();
+ }
+
+ QVector<Geometry *> m_updatedGeometries;
+ CalculateBoundingVolumeJob *q_ptr;
+ Q_DECLARE_PUBLIC(CalculateBoundingVolumeJob)
+};
+
CalculateBoundingVolumeJob::CalculateBoundingVolumeJob()
- : m_manager(nullptr)
+ : Qt3DCore::QAspectJob(*new CalculateBoundingVolumeJobPrivate(this))
+ , m_manager(nullptr)
, m_node(nullptr)
{
SET_JOB_RUN_STAT_TYPE(this, JobTypes::CalcBoundingVolume, 0)
@@ -429,9 +455,8 @@ void CalculateBoundingVolumeJob::run()
updatedGeometries += calculateLocalBoundingVolume(m_manager, data);
}
- // Send extent updates to frontend
- for (Geometry *geometry : updatedGeometries)
- geometry->notifyExtentChanged();
+ Q_D(CalculateBoundingVolumeJob);
+ d->m_updatedGeometries = std::move(updatedGeometries);
}
void CalculateBoundingVolumeJob::setRoot(Entity *node)
diff --git a/src/render/jobs/calcboundingvolumejob_p.h b/src/render/jobs/calcboundingvolumejob_p.h
index 3b62c83cd..ee9ac8889 100644
--- a/src/render/jobs/calcboundingvolumejob_p.h
+++ b/src/render/jobs/calcboundingvolumejob_p.h
@@ -64,6 +64,7 @@ namespace Render {
class NodeManagers;
class Entity;
+class CalculateBoundingVolumeJobPrivate;
class Q_3DRENDERSHARED_PRIVATE_EXPORT CalculateBoundingVolumeJob : public Qt3DCore::QAspectJob
{
@@ -75,6 +76,7 @@ public:
void run() override;
private:
+ Q_DECLARE_PRIVATE(CalculateBoundingVolumeJob);
NodeManagers *m_manager;
Entity *m_node;
};
diff --git a/src/render/lights/qabstractlight.cpp b/src/render/lights/qabstractlight.cpp
index 5ad16d3b4..0d25a247d 100644
--- a/src/render/lights/qabstractlight.cpp
+++ b/src/render/lights/qabstractlight.cpp
@@ -183,3 +183,5 @@ void QAbstractLight::setIntensity(float value)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qabstractlight.cpp"
diff --git a/src/render/lights/qdirectionallight.cpp b/src/render/lights/qdirectionallight.cpp
index 51827b644..1ab43704c 100644
--- a/src/render/lights/qdirectionallight.cpp
+++ b/src/render/lights/qdirectionallight.cpp
@@ -146,3 +146,5 @@ QVector3D QDirectionalLight::worldDirection() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qdirectionallight.cpp"
diff --git a/src/render/lights/qpointlight.cpp b/src/render/lights/qpointlight.cpp
index c16291709..2a14a2d40 100644
--- a/src/render/lights/qpointlight.cpp
+++ b/src/render/lights/qpointlight.cpp
@@ -226,3 +226,5 @@ void QPointLight::setQuadraticAttenuation(float value)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qpointlight.cpp"
diff --git a/src/render/lights/qspotlight.cpp b/src/render/lights/qspotlight.cpp
index c725a6baf..5b650dfe0 100644
--- a/src/render/lights/qspotlight.cpp
+++ b/src/render/lights/qspotlight.cpp
@@ -292,3 +292,5 @@ void QSpotLight::setCutOffAngle(float value)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qspotlight.cpp"
diff --git a/src/render/materialsystem/filterkey.cpp b/src/render/materialsystem/filterkey.cpp
index e6c37b241..c6a4fb47c 100644
--- a/src/render/materialsystem/filterkey.cpp
+++ b/src/render/materialsystem/filterkey.cpp
@@ -83,7 +83,7 @@ void FilterKey::syncFromFrontEnd(const QNode *frontEnd, bool firstTime)
}
}
-bool FilterKey::operator ==(const FilterKey &other)
+bool FilterKey::equals(const FilterKey &other) const
{
if (&other == this)
return true;
@@ -97,11 +97,6 @@ bool FilterKey::operator ==(const FilterKey &other)
other.value() == value());
}
-bool FilterKey::operator !=(const FilterKey &other)
-{
- return !operator ==(other);
-}
-
} // namespace Render
} // namespace Qt3DRender
diff --git a/src/render/materialsystem/filterkey_p.h b/src/render/materialsystem/filterkey_p.h
index 91d0ba1f0..1fe6bba7b 100644
--- a/src/render/materialsystem/filterkey_p.h
+++ b/src/render/materialsystem/filterkey_p.h
@@ -72,10 +72,15 @@ public:
const QVariant &value() const { return m_value; }
const QString &name() const { return m_name; }
void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override;
- bool operator ==(const FilterKey &other);
- bool operator !=(const FilterKey &other);
+
+ friend bool operator==(const FilterKey &lhs, const FilterKey &rhs)
+ { return lhs.equals(rhs); }
+ friend bool operator !=(const FilterKey &lhs, const FilterKey &rhs)
+ { return !lhs.equals(rhs); }
private:
+ bool equals(const FilterKey &other) const;
+
QVariant m_value;
QString m_name;
};
diff --git a/src/render/materialsystem/qeffect.cpp b/src/render/materialsystem/qeffect.cpp
index 01d887792..f846c6bd3 100644
--- a/src/render/materialsystem/qeffect.cpp
+++ b/src/render/materialsystem/qeffect.cpp
@@ -280,3 +280,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QEffect::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qeffect.cpp"
diff --git a/src/render/materialsystem/qfilterkey.cpp b/src/render/materialsystem/qfilterkey.cpp
index 2105da987..9b65e82a3 100644
--- a/src/render/materialsystem/qfilterkey.cpp
+++ b/src/render/materialsystem/qfilterkey.cpp
@@ -155,3 +155,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QFilterKey::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qfilterkey.cpp"
diff --git a/src/render/materialsystem/qgraphicsapifilter.cpp b/src/render/materialsystem/qgraphicsapifilter.cpp
index e8b93de6e..5e04f2a20 100644
--- a/src/render/materialsystem/qgraphicsapifilter.cpp
+++ b/src/render/materialsystem/qgraphicsapifilter.cpp
@@ -373,3 +373,5 @@ bool operator !=(const QGraphicsApiFilter &reference, const QGraphicsApiFilter &
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qgraphicsapifilter.cpp"
diff --git a/src/render/materialsystem/qmaterial.cpp b/src/render/materialsystem/qmaterial.cpp
index f41dcacde..00c36b69a 100644
--- a/src/render/materialsystem/qmaterial.cpp
+++ b/src/render/materialsystem/qmaterial.cpp
@@ -313,3 +313,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QMaterial::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qmaterial.cpp"
diff --git a/src/render/materialsystem/qparameter.cpp b/src/render/materialsystem/qparameter.cpp
index 969882564..d07b4b685 100644
--- a/src/render/materialsystem/qparameter.cpp
+++ b/src/render/materialsystem/qparameter.cpp
@@ -329,3 +329,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QParameter::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qparameter.cpp"
diff --git a/src/render/materialsystem/qrenderpass.cpp b/src/render/materialsystem/qrenderpass.cpp
index 33181f4fe..b2881ac20 100644
--- a/src/render/materialsystem/qrenderpass.cpp
+++ b/src/render/materialsystem/qrenderpass.cpp
@@ -413,3 +413,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QRenderPass::createNodeCreationChange() cons
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qrenderpass.cpp"
diff --git a/src/render/materialsystem/qshaderdata.cpp b/src/render/materialsystem/qshaderdata.cpp
index b70b99846..f695ebe3b 100644
--- a/src/render/materialsystem/qshaderdata.cpp
+++ b/src/render/materialsystem/qshaderdata.cpp
@@ -166,3 +166,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QShaderData::createNodeCreationChange() cons
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qshaderdata.cpp"
diff --git a/src/render/materialsystem/qshaderimage.cpp b/src/render/materialsystem/qshaderimage.cpp
index 7ab9e25e0..33b452026 100644
--- a/src/render/materialsystem/qshaderimage.cpp
+++ b/src/render/materialsystem/qshaderimage.cpp
@@ -989,3 +989,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr Qt3DRender::QShaderImage::createNodeCreation
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qshaderimage.cpp"
diff --git a/src/render/materialsystem/qshaderprogram.cpp b/src/render/materialsystem/qshaderprogram.cpp
index 49117dd98..dc6cb3c64 100644
--- a/src/render/materialsystem/qshaderprogram.cpp
+++ b/src/render/materialsystem/qshaderprogram.cpp
@@ -747,3 +747,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QShaderProgram::createNodeCreationChange() c
} // of namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qshaderprogram.cpp"
diff --git a/src/render/materialsystem/qshaderprogrambuilder.cpp b/src/render/materialsystem/qshaderprogrambuilder.cpp
index 5530db2ee..ccb35084f 100644
--- a/src/render/materialsystem/qshaderprogrambuilder.cpp
+++ b/src/render/materialsystem/qshaderprogrambuilder.cpp
@@ -516,3 +516,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QShaderProgramBuilder::createNodeCreationCha
} // of namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qshaderprogrambuilder.cpp"
diff --git a/src/render/picking/pickeventfilter.cpp b/src/render/picking/pickeventfilter.cpp
index b10383c72..f76161393 100644
--- a/src/render/picking/pickeventfilter.cpp
+++ b/src/render/picking/pickeventfilter.cpp
@@ -115,3 +115,5 @@ bool PickEventFilter::eventFilter(QObject *obj, QEvent *e)
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_pickeventfilter_p.cpp"
diff --git a/src/render/picking/qabstractraycaster.cpp b/src/render/picking/qabstractraycaster.cpp
index 42c7bc1e5..ca9cbb379 100644
--- a/src/render/picking/qabstractraycaster.cpp
+++ b/src/render/picking/qabstractraycaster.cpp
@@ -400,3 +400,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QAbstractRayCaster::createNodeCreationChange
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qabstractraycaster.cpp"
diff --git a/src/render/picking/qobjectpicker.cpp b/src/render/picking/qobjectpicker.cpp
index 4f039b361..efa5f14d5 100644
--- a/src/render/picking/qobjectpicker.cpp
+++ b/src/render/picking/qobjectpicker.cpp
@@ -492,3 +492,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QObjectPicker::createNodeCreationChange() co
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qobjectpicker.cpp"
diff --git a/src/render/picking/qpickevent.cpp b/src/render/picking/qpickevent.cpp
index ae5748082..180925faf 100644
--- a/src/render/picking/qpickevent.cpp
+++ b/src/render/picking/qpickevent.cpp
@@ -353,3 +353,5 @@ Qt3DCore::QEntity *QPickEvent::entity() const
QT_END_NAMESPACE
+#include "moc_qpickevent.cpp"
+
diff --git a/src/render/picking/qpicklineevent.cpp b/src/render/picking/qpicklineevent.cpp
index a079fb557..50b8e7803 100644
--- a/src/render/picking/qpicklineevent.cpp
+++ b/src/render/picking/qpicklineevent.cpp
@@ -171,3 +171,5 @@ uint QPickLineEvent::vertex2Index() const
QT_END_NAMESPACE
+#include "moc_qpicklineevent.cpp"
+
diff --git a/src/render/picking/qpickpointevent.cpp b/src/render/picking/qpickpointevent.cpp
index 2e035d3f2..76680ff92 100644
--- a/src/render/picking/qpickpointevent.cpp
+++ b/src/render/picking/qpickpointevent.cpp
@@ -129,3 +129,5 @@ uint QPickPointEvent::pointIndex() const
QT_END_NAMESPACE
+#include "moc_qpickpointevent.cpp"
+
diff --git a/src/render/picking/qpicktriangleevent.cpp b/src/render/picking/qpicktriangleevent.cpp
index c077d412f..05d0014cc 100644
--- a/src/render/picking/qpicktriangleevent.cpp
+++ b/src/render/picking/qpicktriangleevent.cpp
@@ -273,3 +273,5 @@ QVector3D QPickTriangleEvent::uvw() const
QT_END_NAMESPACE
+#include "moc_qpicktriangleevent.cpp"
+
diff --git a/src/render/picking/qraycaster.cpp b/src/render/picking/qraycaster.cpp
index f32ea32f1..e8fab7967 100644
--- a/src/render/picking/qraycaster.cpp
+++ b/src/render/picking/qraycaster.cpp
@@ -206,3 +206,5 @@ void QRayCaster::trigger(const QVector3D &origin, const QVector3D &direction, fl
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qraycaster.cpp"
diff --git a/src/render/picking/qraycasterhit.cpp b/src/render/picking/qraycasterhit.cpp
index 6e81c05d0..37ba26956 100644
--- a/src/render/picking/qraycasterhit.cpp
+++ b/src/render/picking/qraycasterhit.cpp
@@ -231,3 +231,5 @@ void QRayCasterHit::setEntity(Qt3DCore::QEntity *entity) const
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qraycasterhit.cpp"
diff --git a/src/render/picking/qscreenraycaster.cpp b/src/render/picking/qscreenraycaster.cpp
index 3e47c2a01..0276bcac9 100644
--- a/src/render/picking/qscreenraycaster.cpp
+++ b/src/render/picking/qscreenraycaster.cpp
@@ -143,3 +143,5 @@ void QScreenRayCaster::trigger(const QPoint &position)
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qscreenraycaster.cpp"
diff --git a/src/render/qrendererplugin.cpp b/src/render/qrendererplugin.cpp
index eb54a0ead..24a4f6a2c 100644
--- a/src/render/qrendererplugin.cpp
+++ b/src/render/qrendererplugin.cpp
@@ -66,3 +66,5 @@ AbstractRenderer *QRendererPlugin::create(const QString &key, QRenderAspect::Ren
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qrendererplugin_p.cpp"
diff --git a/src/render/raycasting/qabstractcollisionqueryservice.cpp b/src/render/raycasting/qabstractcollisionqueryservice.cpp
index 5148df911..852c11794 100644
--- a/src/render/raycasting/qabstractcollisionqueryservice.cpp
+++ b/src/render/raycasting/qabstractcollisionqueryservice.cpp
@@ -72,3 +72,5 @@ void QAbstractCollisionQueryService::addEntityHit(QCollisionQueryResult &result,
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qabstractcollisionqueryservice_p.cpp"
diff --git a/src/render/renderstates/qalphacoverage.cpp b/src/render/renderstates/qalphacoverage.cpp
index 785e79057..6b372860f 100644
--- a/src/render/renderstates/qalphacoverage.cpp
+++ b/src/render/renderstates/qalphacoverage.cpp
@@ -161,3 +161,5 @@ QAlphaCoverage::~QAlphaCoverage()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qalphacoverage.cpp"
diff --git a/src/render/renderstates/qalphatest.cpp b/src/render/renderstates/qalphatest.cpp
index 1e6606c02..16457dd42 100644
--- a/src/render/renderstates/qalphatest.cpp
+++ b/src/render/renderstates/qalphatest.cpp
@@ -173,3 +173,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QAlphaTest::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qalphatest.cpp"
diff --git a/src/render/renderstates/qblendequation.cpp b/src/render/renderstates/qblendequation.cpp
index 1f3f56f92..1144f2abb 100644
--- a/src/render/renderstates/qblendequation.cpp
+++ b/src/render/renderstates/qblendequation.cpp
@@ -133,3 +133,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QBlendEquation::createNodeCreationChange() c
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qblendequation.cpp"
diff --git a/src/render/renderstates/qblendequationarguments.cpp b/src/render/renderstates/qblendequationarguments.cpp
index 94693cab9..088594fa3 100644
--- a/src/render/renderstates/qblendequationarguments.cpp
+++ b/src/render/renderstates/qblendequationarguments.cpp
@@ -307,3 +307,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QBlendEquationArguments::createNodeCreationC
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qblendequationarguments.cpp"
diff --git a/src/render/renderstates/qclipplane.cpp b/src/render/renderstates/qclipplane.cpp
index 8f67ae11c..8c1a2ae96 100644
--- a/src/render/renderstates/qclipplane.cpp
+++ b/src/render/renderstates/qclipplane.cpp
@@ -178,3 +178,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QClipPlane::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qclipplane.cpp"
diff --git a/src/render/renderstates/qcolormask.cpp b/src/render/renderstates/qcolormask.cpp
index fde09d7b0..e9fad7dc2 100644
--- a/src/render/renderstates/qcolormask.cpp
+++ b/src/render/renderstates/qcolormask.cpp
@@ -199,3 +199,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QColorMask::createNodeCreationChange() const
QT_END_NAMESPACE
+#include "moc_qcolormask.cpp"
+
diff --git a/src/render/renderstates/qcullface.cpp b/src/render/renderstates/qcullface.cpp
index 4be395464..b1c9edc8e 100644
--- a/src/render/renderstates/qcullface.cpp
+++ b/src/render/renderstates/qcullface.cpp
@@ -202,3 +202,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QCullFace::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qcullface.cpp"
diff --git a/src/render/renderstates/qdepthrange.cpp b/src/render/renderstates/qdepthrange.cpp
index ec5bbce9f..f7011c844 100644
--- a/src/render/renderstates/qdepthrange.cpp
+++ b/src/render/renderstates/qdepthrange.cpp
@@ -154,3 +154,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QDepthRange::createNodeCreationChange() cons
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qdepthrange.cpp"
diff --git a/src/render/renderstates/qdepthtest.cpp b/src/render/renderstates/qdepthtest.cpp
index 7e67ba5ba..f751b5770 100644
--- a/src/render/renderstates/qdepthtest.cpp
+++ b/src/render/renderstates/qdepthtest.cpp
@@ -158,3 +158,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QDepthTest::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qdepthtest.cpp"
diff --git a/src/render/renderstates/qdithering.cpp b/src/render/renderstates/qdithering.cpp
index a449be508..409e3c9c3 100644
--- a/src/render/renderstates/qdithering.cpp
+++ b/src/render/renderstates/qdithering.cpp
@@ -99,3 +99,5 @@ QDithering::~QDithering()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qdithering.cpp"
diff --git a/src/render/renderstates/qfrontface.cpp b/src/render/renderstates/qfrontface.cpp
index a814be82f..761bfc687 100644
--- a/src/render/renderstates/qfrontface.cpp
+++ b/src/render/renderstates/qfrontface.cpp
@@ -131,3 +131,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QFrontFace::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qfrontface.cpp"
diff --git a/src/render/renderstates/qlinewidth.cpp b/src/render/renderstates/qlinewidth.cpp
index f5ef04ebb..755d80fd9 100644
--- a/src/render/renderstates/qlinewidth.cpp
+++ b/src/render/renderstates/qlinewidth.cpp
@@ -123,3 +123,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QLineWidth::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qlinewidth.cpp"
diff --git a/src/render/renderstates/qmultisampleantialiasing.cpp b/src/render/renderstates/qmultisampleantialiasing.cpp
index 249dcd4bd..303474fbb 100644
--- a/src/render/renderstates/qmultisampleantialiasing.cpp
+++ b/src/render/renderstates/qmultisampleantialiasing.cpp
@@ -203,3 +203,5 @@ QMultiSampleAntiAliasing::~QMultiSampleAntiAliasing()
QT_END_NAMESPACE
+#include "moc_qmultisampleantialiasing.cpp"
+
diff --git a/src/render/renderstates/qnodepthmask.cpp b/src/render/renderstates/qnodepthmask.cpp
index 241751a26..bd1af22f0 100644
--- a/src/render/renderstates/qnodepthmask.cpp
+++ b/src/render/renderstates/qnodepthmask.cpp
@@ -100,3 +100,5 @@ QNoDepthMask::~QNoDepthMask()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qnodepthmask.cpp"
diff --git a/src/render/renderstates/qpointsize.cpp b/src/render/renderstates/qpointsize.cpp
index 10687f8f2..060aeea9e 100644
--- a/src/render/renderstates/qpointsize.cpp
+++ b/src/render/renderstates/qpointsize.cpp
@@ -151,3 +151,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QPointSize::createNodeCreationChange() const
QT_END_NAMESPACE
+#include "moc_qpointsize.cpp"
+
diff --git a/src/render/renderstates/qpolygonoffset.cpp b/src/render/renderstates/qpolygonoffset.cpp
index 0d397f159..159168557 100644
--- a/src/render/renderstates/qpolygonoffset.cpp
+++ b/src/render/renderstates/qpolygonoffset.cpp
@@ -152,3 +152,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QPolygonOffset::createNodeCreationChange() c
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qpolygonoffset.cpp"
diff --git a/src/render/renderstates/qrastermode.cpp b/src/render/renderstates/qrastermode.cpp
index 648872a84..e1a71a7b8 100644
--- a/src/render/renderstates/qrastermode.cpp
+++ b/src/render/renderstates/qrastermode.cpp
@@ -193,3 +193,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QRasterMode::createNodeCreationChange() cons
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qrastermode.cpp"
diff --git a/src/render/renderstates/qrenderstate.cpp b/src/render/renderstates/qrenderstate.cpp
index cd5346710..0e01efb73 100644
--- a/src/render/renderstates/qrenderstate.cpp
+++ b/src/render/renderstates/qrenderstate.cpp
@@ -114,3 +114,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QRenderState::createNodeCreationChange() con
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qrenderstate.cpp"
diff --git a/src/render/renderstates/qscissortest.cpp b/src/render/renderstates/qscissortest.cpp
index 718978b7a..0940bd006 100644
--- a/src/render/renderstates/qscissortest.cpp
+++ b/src/render/renderstates/qscissortest.cpp
@@ -203,3 +203,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QScissorTest::createNodeCreationChange() con
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qscissortest.cpp"
diff --git a/src/render/renderstates/qseamlesscubemap.cpp b/src/render/renderstates/qseamlesscubemap.cpp
index 8458aded8..b05e4b9ca 100644
--- a/src/render/renderstates/qseamlesscubemap.cpp
+++ b/src/render/renderstates/qseamlesscubemap.cpp
@@ -97,3 +97,5 @@ QSeamlessCubemap::~QSeamlessCubemap()
QT_END_NAMESPACE
+#include "moc_qseamlesscubemap.cpp"
+
diff --git a/src/render/renderstates/qstencilmask.cpp b/src/render/renderstates/qstencilmask.cpp
index 1b9b2cd10..1bbb8dced 100644
--- a/src/render/renderstates/qstencilmask.cpp
+++ b/src/render/renderstates/qstencilmask.cpp
@@ -155,3 +155,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QStencilMask::createNodeCreationChange() con
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qstencilmask.cpp"
diff --git a/src/render/renderstates/qstenciloperation.cpp b/src/render/renderstates/qstenciloperation.cpp
index 34f95c03d..0af9ec5fa 100644
--- a/src/render/renderstates/qstenciloperation.cpp
+++ b/src/render/renderstates/qstenciloperation.cpp
@@ -158,3 +158,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QStencilOperation::createNodeCreationChange(
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qstenciloperation.cpp"
diff --git a/src/render/renderstates/qstenciloperationarguments.cpp b/src/render/renderstates/qstenciloperationarguments.cpp
index f5d0c1f4f..06c8016da 100644
--- a/src/render/renderstates/qstenciloperationarguments.cpp
+++ b/src/render/renderstates/qstenciloperationarguments.cpp
@@ -227,3 +227,5 @@ QStencilOperationArguments::Operation QStencilOperationArguments::allTestsPassOp
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qstenciloperationarguments.cpp"
diff --git a/src/render/renderstates/qstenciltest.cpp b/src/render/renderstates/qstenciltest.cpp
index 7284af140..3ef6f2e79 100644
--- a/src/render/renderstates/qstenciltest.cpp
+++ b/src/render/renderstates/qstenciltest.cpp
@@ -161,3 +161,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QStencilTest::createNodeCreationChange() con
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qstenciltest.cpp"
diff --git a/src/render/renderstates/qstenciltestarguments.cpp b/src/render/renderstates/qstenciltestarguments.cpp
index dc8ff7292..9aeb0c5ac 100644
--- a/src/render/renderstates/qstenciltestarguments.cpp
+++ b/src/render/renderstates/qstenciltestarguments.cpp
@@ -217,3 +217,5 @@ QStencilTestArguments::StencilFaceMode QStencilTestArguments::faceMode() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qstenciltestarguments.cpp"
diff --git a/src/render/shadergraph/qshaderlanguage.cpp b/src/render/shadergraph/qshaderlanguage.cpp
index 1630e3de8..25c19cb18 100644
--- a/src/render/shadergraph/qshaderlanguage.cpp
+++ b/src/render/shadergraph/qshaderlanguage.cpp
@@ -55,3 +55,5 @@ void qt_register_ShaderLanguage_enums()
}
QT_END_NAMESPACE
+
+#include "moc_qshaderlanguage_p.cpp"
diff --git a/src/render/texture/qabstracttexture.cpp b/src/render/texture/qabstracttexture.cpp
index 364cd4bb6..187d09816 100644
--- a/src/render/texture/qabstracttexture.cpp
+++ b/src/render/texture/qabstracttexture.cpp
@@ -1191,3 +1191,5 @@ void QAbstractTexture::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &change)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qabstracttexture.cpp"
diff --git a/src/render/texture/qabstracttextureimage.cpp b/src/render/texture/qabstracttextureimage.cpp
index 6f68221fd..440e2fdfa 100644
--- a/src/render/texture/qabstracttextureimage.cpp
+++ b/src/render/texture/qabstracttextureimage.cpp
@@ -284,3 +284,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QAbstractTextureImage::createNodeCreationCha
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qabstracttextureimage.cpp"
diff --git a/src/render/texture/qpaintedtextureimage.cpp b/src/render/texture/qpaintedtextureimage.cpp
index 86df2c562..13d9d1ae1 100644
--- a/src/render/texture/qpaintedtextureimage.cpp
+++ b/src/render/texture/qpaintedtextureimage.cpp
@@ -87,6 +87,7 @@ void QPaintedTextureImagePrivate::repaint()
{
m_image.reset(new QImage(m_imageSize, QImage::Format_RGBA8888));
m_image->setDevicePixelRatio(m_devicePixelRatio);
+ m_image->fill(Qt::transparent);
}
QPainter painter(m_image.data());
@@ -264,3 +265,5 @@ bool QPaintedTextureImageDataGenerator::operator ==(const QTextureImageDataGener
QT_END_NAMESPACE
+#include "moc_qpaintedtextureimage.cpp"
+
diff --git a/src/render/texture/qtexture.cpp b/src/render/texture/qtexture.cpp
index 6b7b92166..cabd3f54e 100644
--- a/src/render/texture/qtexture.cpp
+++ b/src/render/texture/qtexture.cpp
@@ -1514,8 +1514,8 @@ QTextureLoader::QTextureLoader(QNode *parent)
// Regenerate the texture functor when properties we support overriding
// from QAbstractTexture get changed.
- Q_D(QTextureLoader);
- auto regenerate = [=] () {
+ auto regenerate = [this] () {
+ Q_D(QTextureLoader);
if (!notificationsBlocked()) // check the change doesn't come from the backend
d->updateGenerator();
};
@@ -1775,3 +1775,5 @@ void QSharedGLTexture::setTextureId(int id)
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qtexture.cpp"
diff --git a/src/render/texture/qtextureimage.cpp b/src/render/texture/qtextureimage.cpp
index b4e9ed46f..5b1346d2f 100644
--- a/src/render/texture/qtextureimage.cpp
+++ b/src/render/texture/qtextureimage.cpp
@@ -332,3 +332,5 @@ bool QImageTextureDataFunctor::isMirrored() const
QT_END_NAMESPACE
+#include "moc_qtextureimage.cpp"
+
diff --git a/src/render/texture/qtexturewrapmode.cpp b/src/render/texture/qtexturewrapmode.cpp
index cb9272895..18a7f78a1 100644
--- a/src/render/texture/qtexturewrapmode.cpp
+++ b/src/render/texture/qtexturewrapmode.cpp
@@ -182,3 +182,5 @@ QTextureWrapMode::WrapMode QTextureWrapMode::z() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qtexturewrapmode.cpp"
diff --git a/tests/auto/core/common/qbackendnodetester.cpp b/tests/auto/core/common/qbackendnodetester.cpp
index 13f4683d9..0bec5e5dd 100644
--- a/tests/auto/core/common/qbackendnodetester.cpp
+++ b/tests/auto/core/common/qbackendnodetester.cpp
@@ -84,3 +84,5 @@ QNodeCreatedChangeBasePtr QBackendNodeTester::creationChange(QNode *frontend) co
} // namespace Qt3DCore
QT_END_NAMESPACE
+
+#include "moc_qbackendnodetester.cpp"
diff --git a/tests/auto/core/matrix4x4_sse/tst_matrix4x4_sse.cpp b/tests/auto/core/matrix4x4_sse/tst_matrix4x4_sse.cpp
index dccf90d10..9bd3afc83 100644
--- a/tests/auto/core/matrix4x4_sse/tst_matrix4x4_sse.cpp
+++ b/tests/auto/core/matrix4x4_sse/tst_matrix4x4_sse.cpp
@@ -29,7 +29,9 @@
#include <QtTest/QtTest>
#include <Qt3DCore/private/matrix4x4_sse_p.h>
+#ifdef QT_COMPILER_SUPPORTS_SSE2
using namespace Qt3DCore;
+#endif
class tst_Matrix4x4_SSE: public QObject
{
@@ -37,6 +39,7 @@ class tst_Matrix4x4_SSE: public QObject
private Q_SLOTS:
+#ifdef QT_COMPILER_SUPPORTS_SSE2
void defaultConstruction()
{
// GIVEN
@@ -520,6 +523,7 @@ private Q_SLOTS:
QCOMPARE(resultingVec.toQVector3D(), tmpMat.mapVector(tmpVec3));
}
}
+#endif // QT_COMPILER_SUPPORTS_SSE2
};
QTEST_MAIN(tst_Matrix4x4_SSE)
diff --git a/tests/auto/core/qchangearbiter/qchangearbiter.pro b/tests/auto/core/qchangearbiter/qchangearbiter.pro
index 64a7b36e7..4628bf6cd 100644
--- a/tests/auto/core/qchangearbiter/qchangearbiter.pro
+++ b/tests/auto/core/qchangearbiter/qchangearbiter.pro
@@ -6,3 +6,5 @@ QT += testlib core core-private 3dcore 3dcore-private
SOURCES += \
tst_qchangearbiter.cpp
+
+include(../common/common.pri)
diff --git a/tests/auto/core/qchangearbiter/tst_qchangearbiter.cpp b/tests/auto/core/qchangearbiter/tst_qchangearbiter.cpp
index 4837ac87b..9f79e4272 100644
--- a/tests/auto/core/qchangearbiter/tst_qchangearbiter.cpp
+++ b/tests/auto/core/qchangearbiter/tst_qchangearbiter.cpp
@@ -31,17 +31,7 @@
QT_WARNING_DISABLE_DEPRECATED
#include <QtTest/QTest>
-#include <Qt3DCore/private/qobserverinterface_p.h>
-#include <Qt3DCore/private/qobservableinterface_p.h>
#include <Qt3DCore/private/qchangearbiter_p.h>
-#include <Qt3DCore/private/qpostman_p.h>
-#include <Qt3DCore/qscenechange.h>
-#include <Qt3DCore/qcomponentaddedchange.h>
-#include <Qt3DCore/qcomponentremovedchange.h>
-#include <Qt3DCore/qpropertyupdatedchange.h>
-#include <Qt3DCore/qpropertynodeaddedchange.h>
-#include <Qt3DCore/qpropertynoderemovedchange.h>
-#include <Qt3DCore/qscenechange.h>
#include <Qt3DCore/private/qscene_p.h>
#include <Qt3DCore/qnode.h>
#include <Qt3DCore/qentity.h>
@@ -51,95 +41,14 @@ QT_WARNING_DISABLE_DEPRECATED
#include <Qt3DCore/private/qbackendnode_p.h>
#include <QThread>
#include <QWaitCondition>
+#include "testpostmanarbiter.h"
class tst_QChangeArbiter : public QObject
{
Q_OBJECT
private slots:
- void registerObservers();
- void registerSceneObserver();
- void unregisterObservers();
- void unregisterSceneObservers();
- void distributeFrontendChanges();
- void distributePropertyChanges();
- void distributeBackendChanges();
-};
-
-class AllChangesChange : public Qt3DCore::QSceneChange
-{
-public:
- AllChangesChange(Qt3DCore::QNodeId subjectId)
- : Qt3DCore::QSceneChange(Qt3DCore::AllChanges, subjectId)
- {
- }
-};
-
-class tst_Node : public Qt3DCore::QEntity
-{
-public:
- explicit tst_Node(Qt3DCore::QNode *parent = 0) : Qt3DCore::QEntity(parent)
- {}
-
- void sendNodeAddedNotification(QNode *node)
- {
- Qt3DCore::QPropertyNodeAddedChangePtr e(new Qt3DCore::QPropertyNodeAddedChange(id(), node));
- e->setPropertyName("PropertyValueAdded");
- Qt3DCore::QNodePrivate::get(this)->notifyObservers(e);
- }
-
- void sendNodeRemovedNotification(QNode *node)
- {
- Qt3DCore::QPropertyNodeRemovedChangePtr e(new Qt3DCore::QPropertyNodeRemovedChange(id(), node));
- e->setPropertyName("PropertyValueRemoved");
- Qt3DCore::QNodePrivate::get(this)->notifyObservers(e);
- }
-
- void sendNodeUpdatedNotification()
- {
- Qt3DCore::QPropertyUpdatedChangePtr e(new Qt3DCore::QPropertyUpdatedChange(id()));
- e->setPropertyName("PropertyUpdated");
- Qt3DCore::QNodePrivate::get(this)->notifyObservers(e);
- }
-
- void sendComponentAddedNotification(Qt3DCore::QComponent *component)
- {
- Qt3DCore::QComponentAddedChangePtr e(new Qt3DCore::QComponentAddedChange(this, component));
- Qt3DCore::QNodePrivate::get(this)->notifyObservers(e);
- }
-
- void sendComponentRemovedNotification(Qt3DCore::QComponent *component)
- {
- Qt3DCore::QComponentRemovedChangePtr e(new Qt3DCore::QComponentRemovedChange(this, component));
- Qt3DCore::QNodePrivate::get(this)->notifyObservers(e);
- }
-
- void sendAllChangesNotification()
- {
- Qt3DCore::QSceneChangePtr e(new AllChangesChange(id()));
- Qt3DCore::QNodePrivate::get(this)->notifyObservers(e);
- }
-
- void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &change) override
- {
- QVERIFY(!change.isNull());
- m_lastChanges << change;
- }
-
- Qt3DCore::QSceneChangePtr lastChange() const
- {
- if (m_lastChanges.isEmpty())
- return Qt3DCore::QSceneChangePtr();
- return m_lastChanges.last();
- }
-
- QList<Qt3DCore::QSceneChangePtr> lastChanges() const
- {
- return m_lastChanges;
- }
-
-private:
- QList<Qt3DCore::QSceneChangePtr> m_lastChanges;
+ void recordsDirtyNodes();
};
// used to test property change notifications
@@ -180,722 +89,51 @@ private:
float m_prop2 = 0.0f;
};
-class tst_SimpleObserver : public Qt3DCore::QObserverInterface
-{
-public:
-
- // QObserverInterface interface
- void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) override
- {
- QVERIFY(!e.isNull());
- m_lastChanges.append(e);
- }
-
- Qt3DCore::QSceneChangePtr lastChange() const
- {
- if (m_lastChanges.isEmpty())
- return Qt3DCore::QSceneChangePtr();
- return m_lastChanges.last();
- }
-
- QList<Qt3DCore::QSceneChangePtr> lastChanges() const
- {
- return m_lastChanges;
- }
-
- void clear()
- {
- m_lastChanges.clear();
- }
-
-private:
- QList<Qt3DCore::QSceneChangePtr> m_lastChanges;
-};
-
-class tst_BackendObserverObservable : public Qt3DCore::QBackendNode
-{
-public:
-
- tst_BackendObserverObservable()
- : Qt3DCore::QBackendNode(ReadWrite)
- {}
-
- // QObserverInterface interface
- void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) override
- {
- QVERIFY(!e.isNull());
- m_lastChanges << e;
- m_targetId = e->subjectId();
- }
-
- // should be called in thread
- void sendReply()
- {
- Qt3DCore::QPropertyUpdatedChangePtr reply;
- reply = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(m_targetId);
- reply->setDeliveryFlags(Qt3DCore::QSceneChange::DeliverToAll);
- reply->setPropertyName("Reply");
- notifyObservers(reply);
- qDebug() << Q_FUNC_INFO;
- }
-
- Qt3DCore::QSceneChangePtr lastChange() const
- {
- if (m_lastChanges.isEmpty())
- return Qt3DCore::QSceneChangePtr();
- return m_lastChanges.last();
- }
-
- QList<Qt3DCore::QSceneChangePtr> lastChanges() const
- {
- return m_lastChanges;
- }
-
- void clear()
- {
- m_lastChanges.clear();
- }
-
-private:
- QList<Qt3DCore::QSceneChangePtr> m_lastChanges;
- Qt3DCore::QNodeId m_targetId;
-
-};
-
-class ThreadedAnswer : public QThread
-{
- Q_OBJECT
-public:
- ThreadedAnswer(Qt3DCore::QChangeArbiter *arbiter, tst_BackendObserverObservable *backend)
- : QThread()
- , m_arbiter(arbiter)
- , m_backendObs(backend)
- {}
-
- ~ThreadedAnswer() { qDebug() << this; }
-
- void run() override
- {
- // create backend change queue on QChangeArbiter
- Qt3DCore::QChangeArbiter::createThreadLocalChangeQueue(m_arbiter);
- m_backendObs->sendReply();
- // gives time for other threads to start waiting
- QThread::currentThread()->sleep(1);
- // wake waiting condition
- m_waitingForReplyToBeSent.wakeOne();
- exec();
- Qt3DCore::QChangeArbiter::destroyThreadLocalChangeQueue(m_arbiter);
- }
-
- QWaitCondition *waitingCondition() { return &m_waitingForReplyToBeSent; }
-
-private:
- Qt3DCore::QChangeArbiter *m_arbiter;
- tst_BackendObserverObservable *m_backendObs;
- QWaitCondition m_waitingForReplyToBeSent;
-};
-
-class tst_PostManObserver : public Qt3DCore::QAbstractPostman
-{
-public:
-
- tst_PostManObserver()
- : m_sceneInterface(nullptr)
- , m_allowFrontendNotifications(false)
- {}
-
- void setScene(Qt3DCore::QScene *scene) final
- {
- m_sceneInterface = scene;
- }
-
- void setAllowFrontendNotifications(bool allow)
- {
- m_allowFrontendNotifications = allow;
- }
-
- // QObserverInterface interface
- void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
- {
- QVERIFY(!e.isNull());
- Qt3DCore::QPropertyUpdatedChangePtr change = qSharedPointerDynamicCast<Qt3DCore::QPropertyUpdatedChange>(e);
- QVERIFY(!change.isNull());
- Qt3DCore::QNode *targetNode = m_sceneInterface->lookupNode(change->subjectId());
- QVERIFY(targetNode != nullptr);
- m_lastChanges << e;
- }
-
- Qt3DCore::QSceneChangePtr lastChange() const
- {
- if (m_lastChanges.isEmpty())
- return Qt3DCore::QSceneChangePtr();
- return m_lastChanges.last();
- }
-
- QList<Qt3DCore::QSceneChangePtr> lastChanges() const
- {
- return m_lastChanges;
- }
-
- void notifyBackend(const Qt3DCore::QSceneChangePtr &e) final
- {
- m_sceneInterface->arbiter()->sceneChangeEventWithLock(e);
- }
-
- bool shouldNotifyFrontend(const Qt3DCore::QSceneChangePtr &)
- {
- return m_allowFrontendNotifications;
- }
-
-private:
- Qt3DCore::QScene *m_sceneInterface;
- QList<Qt3DCore::QSceneChangePtr> m_lastChanges;
- bool m_allowFrontendNotifications;
-};
-
-void tst_QChangeArbiter::registerObservers()
-{
- // GIVEN
- QScopedPointer<Qt3DCore::QChangeArbiter> arbiter(new Qt3DCore::QChangeArbiter());
- QScopedPointer<Qt3DCore::QScene> scene(new Qt3DCore::QScene());
- QScopedPointer<Qt3DCore::QAbstractPostman> postman(new tst_PostManObserver);
- arbiter->setPostman(postman.data());
- arbiter->setScene(scene.data());
- postman->setScene(scene.data());
- scene->setArbiter(arbiter.data());
- // Replaces initialize as we have no JobManager in this case
- Qt3DCore::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data());
-
- // WHEN
- Qt3DCore::QNode *root = new tst_Node();
- Qt3DCore::QNode *child = new tst_Node();
- Qt3DCore::QNodePrivate::get(root)->setScene(scene.data());
- scene->addObservable(root);
-
- QList<tst_SimpleObserver *> observers;
- for (int i = 0; i < 5; i++) {
- tst_SimpleObserver *s = new tst_SimpleObserver();
- arbiter->registerObserver(s, root->id());
- observers << s;
- }
-
- arbiter->syncChanges();
-
- // THEN
- for (tst_SimpleObserver *o : qAsConst(observers))
- QVERIFY(o->lastChange().isNull());
-
- child->setParent(root);
- arbiter->syncChanges();
- for (tst_SimpleObserver *o : qAsConst(observers)) {
- QCOMPARE(o->lastChanges().size(), 1);
- QVERIFY(o->lastChanges().last()->type() == Qt3DCore::PropertyValueAdded);
- }
-
- Qt3DCore::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data());
-}
-
-void tst_QChangeArbiter::registerSceneObserver()
-{
- // GIVEN
- Qt3DCore::QComponent dummyComponent;
- QScopedPointer<Qt3DCore::QChangeArbiter> arbiter(new Qt3DCore::QChangeArbiter());
- QScopedPointer<Qt3DCore::QScene> scene(new Qt3DCore::QScene());
- QScopedPointer<Qt3DCore::QAbstractPostman> postman(new tst_PostManObserver);
- arbiter->setPostman(postman.data());
- arbiter->setScene(scene.data());
- postman->setScene(scene.data());
- scene->setArbiter(arbiter.data());
- // Replaces initialize as we have no JobManager in this case
- Qt3DCore::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data());
-
- // WHEN
- tst_Node *root = new tst_Node();
- Qt3DCore::QNode *child = new tst_Node();
- Qt3DCore::QNodePrivate::get(root)->setScene(scene.data());
- Qt3DCore::QNodePrivate::get(root)->m_hasBackendNode = true;
- scene->addObservable(root);
-
- QList<tst_SimpleObserver *> observers;
- for (int i = 0; i < 5; i++) {
- tst_SimpleObserver *s = new tst_SimpleObserver();
- arbiter->registerObserver(s, root->id());
- observers << s;
- }
-
- arbiter->syncChanges();
-
- // THEN
- for (tst_SimpleObserver *o : qAsConst(observers))
- QVERIFY(o->lastChange().isNull());
-
- // WHEN
- child->setParent(root);
- arbiter->syncChanges();
-
- // THEN
- for (tst_SimpleObserver *o : qAsConst(observers)) {
- QVERIFY(!o->lastChange().isNull());
- QVERIFY(o->lastChange()->type() == Qt3DCore::PropertyValueAdded);
- }
-
- // WHEN
- root->sendComponentAddedNotification(&dummyComponent);
- arbiter->syncChanges();
-
- // THEN
- for (tst_SimpleObserver *o : qAsConst(observers)) {
- QVERIFY(!o->lastChange().isNull());
- QVERIFY(o->lastChange()->type() == Qt3DCore::ComponentAdded);
- }
-
- Qt3DCore::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data());
-}
-
-void tst_QChangeArbiter::unregisterObservers()
-{
- // GIVEN
- QScopedPointer<Qt3DCore::QChangeArbiter> arbiter(new Qt3DCore::QChangeArbiter());
- QScopedPointer<Qt3DCore::QScene> scene(new Qt3DCore::QScene());
- QScopedPointer<Qt3DCore::QAbstractPostman> postman(new tst_PostManObserver);
- arbiter->setPostman(postman.data());
- arbiter->setScene(scene.data());
- postman->setScene(scene.data());
- scene->setArbiter(arbiter.data());
- // Replaces initialize as we have no JobManager in this case
- Qt3DCore::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data());
-
- // WHEN
- tst_Node *root = new tst_Node();
- Qt3DCore::QNode *child = new tst_Node();
- Qt3DCore::QNodePrivate::get(root)->setScene(scene.data());
- scene->addObservable(root);
-
- QList<tst_SimpleObserver *> observers;
- for (int i = 0; i < 5; i++) {
- tst_SimpleObserver *s = new tst_SimpleObserver();
- arbiter->registerObserver(s, root->id());
- observers << s;
- }
-
- arbiter->syncChanges();
-
- // THEN
- for (tst_SimpleObserver *o : qAsConst(observers))
- QVERIFY(o->lastChange().isNull());
-
- // WHEN
- child->setParent(root);
- arbiter->syncChanges();
-
- // THEN
- for (tst_SimpleObserver *o : qAsConst(observers)) {
- QVERIFY(!o->lastChange().isNull());
- QVERIFY(o->lastChange()->type() == Qt3DCore::PropertyValueAdded);
- }
-
- // WHEN
- for (tst_SimpleObserver *o : qAsConst(observers))
- arbiter->unregisterObserver(o, root->id());
-
- root->sendAllChangesNotification();
- arbiter->syncChanges();
-
- // THEN
- for (tst_SimpleObserver *o : qAsConst(observers)) {
- QVERIFY(!o->lastChange().isNull());
- QVERIFY(o->lastChange()->type() == Qt3DCore::PropertyValueAdded);
- }
-
- Qt3DCore::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data());
-}
-
-void tst_QChangeArbiter::unregisterSceneObservers()
-{
- // GIVEN
- Qt3DCore::QComponent dummyComponent;
- QScopedPointer<Qt3DCore::QChangeArbiter> arbiter(new Qt3DCore::QChangeArbiter());
- QScopedPointer<Qt3DCore::QScene> scene(new Qt3DCore::QScene());
- QScopedPointer<Qt3DCore::QAbstractPostman> postman(new tst_PostManObserver);
- arbiter->setPostman(postman.data());
- arbiter->setScene(scene.data());
- postman->setScene(scene.data());
- scene->setArbiter(arbiter.data());
- // Replaces initialize as we have no JobManager in this case
- Qt3DCore::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data());
-
- // WHEN
- tst_Node *root = new tst_Node();
- Qt3DCore::QNode *child = new tst_Node();
- Qt3DCore::QNodePrivate::get(root)->setScene(scene.data());
- Qt3DCore::QNodePrivate::get(root)->m_hasBackendNode = true;
- Qt3DCore::QNodePrivate::get(child)->m_hasBackendNode = true;
- scene->addObservable(root);
-
- QList<tst_SimpleObserver *> observers;
- for (int i = 0; i < 5; i++) {
- tst_SimpleObserver *s = new tst_SimpleObserver();
- arbiter->registerObserver(s, root->id());
- observers << s;
- }
-
- arbiter->syncChanges();
-
- // THEN
- for (tst_SimpleObserver *o : qAsConst(observers))
- QVERIFY(o->lastChange().isNull());
-
- // WHEN
- child->setParent(root);
- arbiter->syncChanges();
-
- // THEN
- for (tst_SimpleObserver *o : qAsConst(observers)) {
- QVERIFY(!o->lastChange().isNull());
- QVERIFY(o->lastChange()->type() == Qt3DCore::PropertyValueAdded);
- }
-
- // WHEN
- root->sendComponentAddedNotification(&dummyComponent);
- arbiter->syncChanges();
-
- // THEN
- for (tst_SimpleObserver *o : qAsConst(observers)) {
- QVERIFY(!o->lastChange().isNull());
- QVERIFY(o->lastChange()->type() == Qt3DCore::ComponentAdded);
- }
-
- // WHEN
- child->setParent(Q_NODE_NULLPTR);
- arbiter->syncChanges();
-
- // THEN
- for (tst_SimpleObserver *o : qAsConst(observers)) {
- QVERIFY(!o->lastChange().isNull());
- QVERIFY(o->lastChange()->type() == Qt3DCore::PropertyValueRemoved);
- }
-
- // WHEN
- child->setParent(root);
- arbiter->syncChanges();
-
- // THEN
- for (tst_SimpleObserver *o : qAsConst(observers)) {
- QVERIFY(!o->lastChange().isNull());
- QVERIFY(o->lastChange()->type() == Qt3DCore::PropertyValueAdded);
- }
-
- Qt3DCore::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data());
-}
-
-void tst_QChangeArbiter::distributeFrontendChanges()
-{
- // GIVEN
- Qt3DCore::QComponent dummyComponent;
- Qt3DCore::QNode dummyNode;
- QScopedPointer<Qt3DCore::QChangeArbiter> arbiter(new Qt3DCore::QChangeArbiter());
- QScopedPointer<Qt3DCore::QScene> scene(new Qt3DCore::QScene());
- QScopedPointer<Qt3DCore::QAbstractPostman> postman(new tst_PostManObserver);
- arbiter->setPostman(postman.data());
- arbiter->setScene(scene.data());
- postman->setScene(scene.data());
- scene->setArbiter(arbiter.data());
- // Replaces initialize as we have no JobManager in this case
- Qt3DCore::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data());
-
- // WHEN
- tst_Node *root = new tst_Node();
- Qt3DCore::QNodePrivate::get(root)->setScene(scene.data());
- scene->addObservable(root);
-
- tst_SimpleObserver *backendAllChangedObserver = new tst_SimpleObserver();
- tst_SimpleObserver *backendNodeAddedObserver = new tst_SimpleObserver();
- tst_SimpleObserver *backendNodeRemovedObserver = new tst_SimpleObserver();
- tst_SimpleObserver *backendNodeUpdatedObserver = new tst_SimpleObserver();
- tst_SimpleObserver *backendComponentAddedObserver = new tst_SimpleObserver();
- tst_SimpleObserver *backendComponentRemovedObserver = new tst_SimpleObserver();
-
- arbiter->registerObserver(backendAllChangedObserver, root->id());
- arbiter->registerObserver(backendNodeAddedObserver, root->id(), Qt3DCore::PropertyValueAdded);
- arbiter->registerObserver(backendNodeUpdatedObserver, root->id(), Qt3DCore::PropertyUpdated);
- arbiter->registerObserver(backendNodeRemovedObserver, root->id(), Qt3DCore::PropertyValueRemoved);
- arbiter->registerObserver(backendComponentAddedObserver, root->id(), Qt3DCore::ComponentAdded);
- arbiter->registerObserver(backendComponentRemovedObserver, root->id(), Qt3DCore::ComponentRemoved);
-
- arbiter->syncChanges();
-
- // THEN
- QVERIFY(backendAllChangedObserver->lastChange().isNull());
- QVERIFY(backendNodeAddedObserver->lastChange().isNull());
- QVERIFY(backendNodeUpdatedObserver->lastChange().isNull());
- QVERIFY(backendNodeRemovedObserver->lastChange().isNull());
- QVERIFY(backendComponentAddedObserver->lastChange().isNull());
- QVERIFY(backendComponentRemovedObserver->lastChange().isNull());
-
- // WHEN
- root->sendNodeAddedNotification(&dummyNode);
- arbiter->syncChanges();
-
- // THEN
- QCOMPARE(backendAllChangedObserver->lastChanges().count(), 1);
- QCOMPARE(backendNodeAddedObserver->lastChanges().count(), 1);
- QCOMPARE(backendNodeUpdatedObserver->lastChanges().count(), 0);
- QCOMPARE(backendNodeRemovedObserver->lastChanges().count(), 0);
- QCOMPARE(backendComponentAddedObserver->lastChanges().count(), 0);
- QCOMPARE(backendComponentRemovedObserver->lastChanges().count(), 0);
-
- // WHEN
- root->sendNodeUpdatedNotification();
- arbiter->syncChanges();
-
- // THEN
- QCOMPARE(backendAllChangedObserver->lastChanges().count(), 2);
- QCOMPARE(backendNodeAddedObserver->lastChanges().count(), 1);
- QCOMPARE(backendNodeUpdatedObserver->lastChanges().count(), 1);
- QCOMPARE(backendNodeRemovedObserver->lastChanges().count(), 0);
- QCOMPARE(backendComponentAddedObserver->lastChanges().count(), 0);
- QCOMPARE(backendComponentRemovedObserver->lastChanges().count(), 0);
-
- // WHEN
- root->sendNodeRemovedNotification(&dummyNode);
- arbiter->syncChanges();
-
- // THEN
- QCOMPARE(backendAllChangedObserver->lastChanges().count(), 3);
- QCOMPARE(backendNodeAddedObserver->lastChanges().count(), 1);
- QCOMPARE(backendNodeUpdatedObserver->lastChanges().count(), 1);
- QCOMPARE(backendNodeRemovedObserver->lastChanges().count(), 1);
- QCOMPARE(backendComponentAddedObserver->lastChanges().count(), 0);
- QCOMPARE(backendComponentRemovedObserver->lastChanges().count(), 0);
-
- // WHEN
- root->sendComponentAddedNotification(&dummyComponent);
- arbiter->syncChanges();
-
- // THEN
- QCOMPARE(backendAllChangedObserver->lastChanges().count(), 4);
- QCOMPARE(backendNodeAddedObserver->lastChanges().count(), 1);
- QCOMPARE(backendNodeUpdatedObserver->lastChanges().count(), 1);
- QCOMPARE(backendNodeRemovedObserver->lastChanges().count(), 1);
- QCOMPARE(backendComponentAddedObserver->lastChanges().count(), 1);
- QCOMPARE(backendComponentRemovedObserver->lastChanges().count(), 0);
-
- // WHEN
- root->sendComponentRemovedNotification(&dummyComponent);
- arbiter->syncChanges();
-
- // THEN
- QCOMPARE(backendAllChangedObserver->lastChanges().count(), 5);
- QCOMPARE(backendNodeAddedObserver->lastChanges().count(), 1);
- QCOMPARE(backendNodeUpdatedObserver->lastChanges().count(), 1);
- QCOMPARE(backendNodeRemovedObserver->lastChanges().count(), 1);
- QCOMPARE(backendComponentAddedObserver->lastChanges().count(), 1);
- QCOMPARE(backendComponentRemovedObserver->lastChanges().count(), 1);
-
- // WHEN
- root->sendAllChangesNotification();
- arbiter->syncChanges();
-
- // THEN
- QCOMPARE(backendAllChangedObserver->lastChanges().count(), 6);
- QCOMPARE(backendNodeAddedObserver->lastChanges().count(), 2);
- QCOMPARE(backendNodeUpdatedObserver->lastChanges().count(), 2);
- QCOMPARE(backendNodeRemovedObserver->lastChanges().count(), 2);
- QCOMPARE(backendComponentAddedObserver->lastChanges().count(), 2);
- QCOMPARE(backendComponentRemovedObserver->lastChanges().count(), 2);
-
- Qt3DCore::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data());
-}
-
-void tst_QChangeArbiter::distributePropertyChanges()
+void tst_QChangeArbiter::recordsDirtyNodes()
{
// GIVEN
- QScopedPointer<Qt3DCore::QChangeArbiter> arbiter(new Qt3DCore::QChangeArbiter());
+ QScopedPointer<TestArbiter> arbiter(new TestArbiter());
QScopedPointer<Qt3DCore::QScene> scene(new Qt3DCore::QScene());
- QScopedPointer<Qt3DCore::QAbstractPostman> postman(new tst_PostManObserver);
- arbiter->setPostman(postman.data());
- arbiter->setScene(scene.data());
- postman->setScene(scene.data());
+// arbiter->setScene(scene.data());
scene->setArbiter(arbiter.data());
- // Replaces initialize as we have no JobManager in this case
- Qt3DCore::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data());
-
- // Test change notifications made to the root node:
// WHEN
- PropertyTestNode *root = new PropertyTestNode();
- Qt3DCore::QNodePrivate::get(root)->setScene(scene.data());
- Qt3DCore::QNodePrivate::get(root)->m_hasBackendNode = true;
- scene->addObservable(root);
+ auto *root = new PropertyTestNode();
+ auto *child = new PropertyTestNode(root);
- tst_SimpleObserver *rootObserver = new tst_SimpleObserver();
- arbiter->registerObserver(rootObserver, root->id());
- arbiter->syncChanges();
+ root->setProp1(883);
+ child->setProp2(1584);
// THEN
- QVERIFY(rootObserver->lastChange().isNull());
+ QCOMPARE(arbiter->dirtyNodes.size(), 0);
// WHEN
- root->setProp1(root->prop1() + 1);
+ Qt3DCore::QNodePrivate::get(root)->setArbiter(arbiter.data());
+ root->setProp1(884);
+ child->setProp2(1585);
// THEN
- auto dirtyNodes = arbiter->takeDirtyFrontEndNodes();
- QCOMPARE(dirtyNodes.size(), 1);
- QCOMPARE(dirtyNodes.front(), root);
+ QCOMPARE(arbiter->dirtyNodes.size(), 1);
+ QCOMPARE(arbiter->dirtyNodes.front(), root);
- // WHEN
- root->setProp2(root->prop2() + 1.f);
-
- // THEN
- dirtyNodes = arbiter->takeDirtyFrontEndNodes();
- QCOMPARE(dirtyNodes.size(), 1);
- QCOMPARE(dirtyNodes.front(), root);
-
- // Test change notifications made to an entity that was added to the scene
- // via QNode::setParent()
+ arbiter->dirtyNodes.clear();
// WHEN
- PropertyTestNode *setParentChild = new PropertyTestNode();
- setParentChild->setParent(root);
- tst_SimpleObserver *setParentChildObserver = new tst_SimpleObserver();
- arbiter->registerObserver(setParentChildObserver, setParentChild->id());
- setParentChild->setProp2(setParentChild->prop2() + 1.f);
+ Qt3DCore::QNodePrivate::get(child)->setArbiter(arbiter.data());
+ child->setProp2(1586);
// THEN
- dirtyNodes = arbiter->takeDirtyFrontEndNodes();
- QCOMPARE(dirtyNodes.size(), 1);
- QCOMPARE(dirtyNodes.front(), setParentChild);
+ QCOMPARE(arbiter->dirtyNodes.size(), 1);
+ QCOMPARE(arbiter->dirtyNodes.front(), child);
- // Test change notifications made to an entity that was added to the scene
- // via the QNode() constructor parent parameter
+ arbiter->dirtyNodes.clear();
// WHEN
- PropertyTestNode *directChild = new PropertyTestNode(root);
- QCoreApplication::processEvents(); // make sure the post-ctor initialization is executed for the node
- tst_SimpleObserver *directChildObserver = new tst_SimpleObserver();
- arbiter->registerObserver(directChildObserver, directChild->id());
- directChild->setProp1(directChild->prop1() + 1);
-
- // THEN
- dirtyNodes = arbiter->takeDirtyFrontEndNodes();
- QCOMPARE(dirtyNodes.size(), 1);
- QCOMPARE(dirtyNodes.front(), directChild);
-
- Qt3DCore::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data());
-}
-
-void tst_QChangeArbiter::distributeBackendChanges()
-{
-
- // GIVEN
- QScopedPointer<Qt3DCore::QChangeArbiter> arbiter(new Qt3DCore::QChangeArbiter());
- QScopedPointer<Qt3DCore::QScene> scene(new Qt3DCore::QScene());
- QScopedPointer<tst_PostManObserver> postman(new tst_PostManObserver);
- arbiter->setPostman(postman.data());
- arbiter->setScene(scene.data());
- postman->setScene(scene.data());
- scene->setArbiter(arbiter.data());
- // Replaces initialize as we have no JobManager in this case
- Qt3DCore::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data());
-
- // In order for backend -> frontend changes to work properly,
- // the backend notification should only be sent
- // from a worker thread which has a dedicated ChangeQueue in the
- // ChangeArbiter different than the frontend ChangeQueue. In this
- // test we will only check that the backend has received the frontend notification
-
-
- // WHEN
- tst_Node *root = new tst_Node();
- Qt3DCore::QNodePrivate::get(root)->setScene(scene.data());
- Qt3DCore::QNodePrivate::get(root)->m_hasBackendNode = true;
- scene->addObservable(root);
-
- tst_BackendObserverObservable *backenObserverObservable = new tst_BackendObserverObservable();
- arbiter->registerObserver(Qt3DCore::QBackendNodePrivate::get(backenObserverObservable), root->id());
- arbiter->scene()->addObservable(Qt3DCore::QBackendNodePrivate::get(backenObserverObservable), root->id());
- Qt3DCore::QBackendNodePrivate::get(backenObserverObservable)->setArbiter(arbiter.data());
-
- arbiter->syncChanges();
+ root->setProp1(887);
+ child->setProp2(1587);
// THEN
- QVERIFY(root->lastChange().isNull());
- QVERIFY(backenObserverObservable->lastChange().isNull());
- QCOMPARE(backenObserverObservable->lastChanges().count(), 0);
-
- // WHEN
- root->sendAllChangesNotification();
- arbiter->syncChanges();
-
- // THEN
- // backend observer receives event from frontend node "root"
- QCOMPARE(root->lastChanges().count(), 0);
- QCOMPARE(postman->lastChanges().count(), 0);
- QTRY_COMPARE(backenObserverObservable->lastChanges().count(), 1);
-
- backenObserverObservable->clear();
-
- {
- // WHEN
- // simulate a worker thread
- QScopedPointer<ThreadedAnswer> answer(new ThreadedAnswer(arbiter.data(), backenObserverObservable));
- postman->setAllowFrontendNotifications(false);
- QWaitCondition *waitingForBackendReplyCondition = answer->waitingCondition();
-
- QMutex mutex;
- // sends reply from another thread (simulates job thread)
- answer->start();
- mutex.lock();
- waitingForBackendReplyCondition->wait(&mutex);
- mutex.unlock();
-
- // To verify that backendObserver sent a reply
- arbiter->syncChanges();
-
- // THEN
- // the repliers should receive it's reply
- QTRY_COMPARE(backenObserverObservable->lastChanges().count(), 1);
- // verify that postMan has received the change
- QCOMPARE(postman->lastChanges().count(), 0);
- answer->exit();
- answer->wait();
- backenObserverObservable->clear();
- }
-
- {
- // WHEN
- // simulate a worker thread
- QScopedPointer<ThreadedAnswer> answer(new ThreadedAnswer(arbiter.data(), backenObserverObservable));
- postman->setAllowFrontendNotifications(true);
- QWaitCondition *waitingForBackendReplyCondition = answer->waitingCondition();
- QMutex mutex;
- // sends reply from another thread (simulates job thread)
- answer->start();
- mutex.lock();
- waitingForBackendReplyCondition->wait(&mutex);
- mutex.unlock();
-
- // To verify that backendObserver sent a reply
- arbiter->syncChanges();
-
- // THEN
- // the repliers should receive it's reply
- QTRY_COMPARE(backenObserverObservable->lastChanges().count(), 1);
- // verify that postMan has received the change
- QCOMPARE(postman->lastChanges().count(), 1);
-
- // verify correctness of the reply
- Qt3DCore::QPropertyUpdatedChangePtr c = qSharedPointerDynamicCast<Qt3DCore::QPropertyUpdatedChange>(postman->lastChange());
- QVERIFY(!c.isNull());
- QVERIFY(c->subjectId() == root->id());
- qDebug() << c->propertyName();
- QVERIFY(strcmp(c->propertyName(), "Reply") == 0);
- QVERIFY(c->type() == Qt3DCore::PropertyUpdated);
- answer->exit();
- answer->wait();
- }
-
- Qt3DCore::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data());
+ QCOMPARE(arbiter->dirtyNodes.size(), 2);
}
QTEST_MAIN(tst_QChangeArbiter)
diff --git a/tests/auto/core/threadpooler/tst_threadpooler.cpp b/tests/auto/core/threadpooler/tst_threadpooler.cpp
index 289f0b103..8941d8489 100644
--- a/tests/auto/core/threadpooler/tst_threadpooler.cpp
+++ b/tests/auto/core/threadpooler/tst_threadpooler.cpp
@@ -194,7 +194,7 @@ void tst_ThreadPooler::defaultPerThread()
{
// GIVEN
QAtomicInt callCounter;
- int maxThreadCount = QThread::idealThreadCount();
+ int maxThreadCount = Qt3DCore::QAspectJobManager::idealThreadCount();
callCounter.storeRelaxed(0);
// WHEN
diff --git a/tests/auto/core/vector3d_sse/tst_vector3d_sse.cpp b/tests/auto/core/vector3d_sse/tst_vector3d_sse.cpp
index 7ea79a5f5..e99dd0e6f 100644
--- a/tests/auto/core/vector3d_sse/tst_vector3d_sse.cpp
+++ b/tests/auto/core/vector3d_sse/tst_vector3d_sse.cpp
@@ -29,12 +29,15 @@
#include <QtTest/QtTest>
#include <Qt3DCore/private/vector3d_sse_p.h>
+#ifdef QT_COMPILER_SUPPORTS_SSE2
using namespace Qt3DCore;
+#endif
class tst_Vector3D_SSE: public QObject
{
Q_OBJECT
private Q_SLOTS:
+#ifdef QT_COMPILER_SUPPORTS_SSE2
void defaultConstruction()
{
// GIVEN
@@ -812,6 +815,7 @@ private Q_SLOTS:
QVERIFY(!v0.isNull());
}
}
+#endif // QT_COMPILER_SUPPORTS_SSE2
};
QTEST_APPLESS_MAIN(tst_Vector3D_SSE)
diff --git a/tests/auto/core/vector4d_sse/tst_vector4d_sse.cpp b/tests/auto/core/vector4d_sse/tst_vector4d_sse.cpp
index ed9722ffb..2e539491f 100644
--- a/tests/auto/core/vector4d_sse/tst_vector4d_sse.cpp
+++ b/tests/auto/core/vector4d_sse/tst_vector4d_sse.cpp
@@ -30,12 +30,16 @@
#include <Qt3DCore/private/vector4d_sse_p.h>
#include <Qt3DCore/qt3dcore-config.h>
+#ifdef QT_COMPILER_SUPPORTS_SSE2
using namespace Qt3DCore;
+#endif
class tst_Vector4D_SSE: public QObject
{
Q_OBJECT
private Q_SLOTS:
+
+#ifdef QT_COMPILER_SUPPORTS_SSE2
void defaultConstruction()
{
// GIVEN
@@ -915,6 +919,7 @@ private Q_SLOTS:
QVERIFY(!v0.isNull());
}
}
+#endif // QT_COMPILER_SUPPORTS_SSE2
};
QTEST_APPLESS_MAIN(tst_Vector4D_SSE)
diff --git a/tests/auto/extras/qtext2dentity/tst_qtext2dentity.cpp b/tests/auto/extras/qtext2dentity/tst_qtext2dentity.cpp
index 6fcc2e637..35e241839 100644
--- a/tests/auto/extras/qtext2dentity/tst_qtext2dentity.cpp
+++ b/tests/auto/extras/qtext2dentity/tst_qtext2dentity.cpp
@@ -90,7 +90,7 @@ void tst_qtext2dentity::checkChangeArbiter()
auto atlases = lookupNodeByClassName(rootEntity.data(), "Qt3DExtras::QTextureAtlas");
QVERIFY(atlases.length() == 1);
auto atlas = atlases[0];
- QTRY_VERIFY(Qt3DCore::QNodePrivate::get(atlas)->m_changeArbiter);
+ QVERIFY(Qt3DCore::QNodePrivate::get(atlas)->m_changeArbiter);
#endif
}
diff --git a/tests/auto/input/commons/commons.pri b/tests/auto/input/commons/commons.pri
index 4913f5bbb..656f41980 100644
--- a/tests/auto/input/commons/commons.pri
+++ b/tests/auto/input/commons/commons.pri
@@ -1,6 +1,8 @@
HEADERS += $$PWD/testdevice.h \
$$PWD/testdeviceproxy.h
+SOURCES += $$PWD/testdevice.cpp
+
INCLUDEPATH += $$PWD
include(../../core/common/common.pri)
diff --git a/tests/auto/input/commons/testdevice.cpp b/tests/auto/input/commons/testdevice.cpp
new file mode 100644
index 000000000..91a2ad159
--- /dev/null
+++ b/tests/auto/input/commons/testdevice.cpp
@@ -0,0 +1,31 @@
+/****************************************************************************
+**
+** Copyright (C) 2022 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "moc_testdevice.cpp"
+#include "moc_testdeviceproxy.cpp"
+
diff --git a/tests/auto/quick3d/dynamicnodecreation/BLACKLIST b/tests/auto/quick3d/dynamicnodecreation/BLACKLIST
new file mode 100644
index 000000000..a1b7ead84
--- /dev/null
+++ b/tests/auto/quick3d/dynamicnodecreation/BLACKLIST
@@ -0,0 +1,3 @@
+# See qtbase/src/testlib/qtestblacklist.cpp for format
+[createEntityAndDynamicChild]
+ci ubuntu-20.04 # QTBUG-106519
diff --git a/tests/auto/quick3d/quick3dnodeinstantiator/data/createMultipleAsync.qml b/tests/auto/quick3d/quick3dnodeinstantiator/data/createMultipleAsync.qml
new file mode 100644
index 000000000..be6c46582
--- /dev/null
+++ b/tests/auto/quick3d/quick3dnodeinstantiator/data/createMultipleAsync.qml
@@ -0,0 +1,13 @@
+import QtQml 2.1
+import Qt3D.Core 2.0
+
+Entity {
+ NodeInstantiator {
+ model: 10
+ asynchronous: true
+ delegate: Entity {
+ property bool success: true
+ property int idx: index
+ }
+ }
+}
diff --git a/tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp b/tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp
index d4d0d56e2..1e7d6c593 100644
--- a/tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp
+++ b/tests/auto/quick3d/quick3dnodeinstantiator/tst_quick3dnodeinstantiator.cpp
@@ -39,6 +39,7 @@
#include <QtQml/qqmlengine.h>
#include <QtQml/qqmlcomponent.h>
#include <QtQml/qqmlcontext.h>
+#include <QtQml/qqmlincubator.h>
using namespace Qt3DCore::Quick;
@@ -55,6 +56,8 @@ private slots:
void activeProperty();
void intModelChange();
void createAndRemove();
+ void asynchronous_data();
+ void asynchronous();
};
void tst_quick3dnodeinstantiator::createNone()
@@ -251,6 +254,49 @@ void tst_quick3dnodeinstantiator::createAndRemove()
QCOMPARE(object->property("datum").toString(), names[i]);
}
}
+
+void tst_quick3dnodeinstantiator::asynchronous_data()
+{
+ QTest::addColumn<bool>("asyncIncubator");
+ QTest::addColumn<QString>("fileName");
+
+ QTest::newRow("Asynchronous Instantiator") << false << "createMultipleAsync.qml";
+ QTest::newRow("Nested-asynchronous Instantiator") << true << "createMultiple.qml";
+}
+
+void tst_quick3dnodeinstantiator::asynchronous()
+{
+ QFETCH(bool, asyncIncubator);
+ QFETCH(QString, fileName);
+
+ QQmlEngine engine;
+ QQmlIncubationController incubationController;
+ engine.setIncubationController(&incubationController);
+ QQmlComponent component(&engine, testFileUrl(fileName));
+ QQmlIncubator incubator(asyncIncubator ? QQmlIncubator::Asynchronous : QQmlIncubator::Synchronous);
+ component.create(incubator);
+ while (!incubator.isReady())
+ incubationController.incubateFor(10);
+ QObject *rootObject = incubator.object();
+ QVERIFY(rootObject != nullptr);
+ while (incubationController.incubatingObjectCount() > 0)
+ incubationController.incubateFor(10);
+ Quick3DNodeInstantiator *instantiator = rootObject->findChild<Quick3DNodeInstantiator *>();
+ QVERIFY(instantiator != nullptr);
+ QCOMPARE(instantiator->isActive(), true);
+ QCOMPARE(instantiator->count(), 10);
+
+ for (int i=0; i<10; i++) {
+ QObject *object = instantiator->objectAt(i);
+ QVERIFY(object);
+ QCOMPARE(object->parent(), rootObject);
+ QCOMPARE(object->property("success").toBool(), true);
+ QCOMPARE(object->property("idx").toInt(), i);
+ }
+}
+
+
QTEST_MAIN(tst_quick3dnodeinstantiator)
#include "tst_quick3dnodeinstantiator.moc"
+#include "moc_stringmodel.cpp"
diff --git a/tests/auto/render/geometry/tst_geometry.cpp b/tests/auto/render/geometry/tst_geometry.cpp
index a13f6fa40..4e7a94c42 100644
--- a/tests/auto/render/geometry/tst_geometry.cpp
+++ b/tests/auto/render/geometry/tst_geometry.cpp
@@ -204,16 +204,12 @@ private Q_SLOTS:
// WHEN
renderGeometry.updateExtent(QVector3D(-1.0f, -1.0f, -1.0f), QVector3D(1.0f, 1.0f, 1.0f));
- renderGeometry.notifyExtentChanged();
// THEN
- QCOMPARE(arbiter.events.count(), 1);
+ QCOMPARE(arbiter.dirtyNodes.count(), 0);
- Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>();
- QCOMPARE(change->propertyName(), "extent");
- const QPair<QVector3D, QVector3D> v = change->value().value<QPair<QVector3D, QVector3D>>();
- QCOMPARE(v.first, QVector3D(-1.0f, -1.0f, -1.0f));
- QCOMPARE(v.second, QVector3D(1.0f, 1.0f, 1.0f));
+ QCOMPARE(renderGeometry.min(), QVector3D(-1.0f, -1.0f, -1.0f));
+ QCOMPARE(renderGeometry.max(), QVector3D(1.0f, 1.0f, 1.0f));
arbiter.events.clear();
}
diff --git a/tests/auto/render/opengl/graphicshelpergl4/BLACKLIST b/tests/auto/render/opengl/graphicshelpergl4/BLACKLIST
new file mode 100644
index 000000000..a2da1ff1d
--- /dev/null
+++ b/tests/auto/render/opengl/graphicshelpergl4/BLACKLIST
@@ -0,0 +1,4 @@
+# See qtbase/src/testlib/qtestblacklist.cpp for format
+#QTBUG-101556
+[bindFrameBufferAttachment]
+ubuntu-20.04
diff --git a/tests/auto/render/opengl/renderviews/tst_renderviews.cpp b/tests/auto/render/opengl/renderviews/tst_renderviews.cpp
index aec13071a..196ee85d4 100644
--- a/tests/auto/render/opengl/renderviews/tst_renderviews.cpp
+++ b/tests/auto/render/opengl/renderviews/tst_renderviews.cpp
@@ -307,6 +307,68 @@ private Q_SLOTS:
<< (QVector<ShaderParameterPack>() << pack1 << minifiedPack1 << minifiedPack1 << pack1 << minifiedPack1 << minifiedPack1);
}
+ void checkShaderParameterPackStoresSingleUBOPerBlockIndex()
+ {
+ // GIVEN
+ ShaderParameterPack pack;
+ auto nodeId1 = Qt3DCore::QNodeId::createId();
+ auto nodeId2 = Qt3DCore::QNodeId::createId();
+
+ BlockToUBO ubo1 { 1, nodeId1, false, {}};
+ BlockToUBO ubo2 { 1, nodeId2, false, {}};
+
+ // WHEN
+ pack.setUniformBuffer(ubo1);
+ pack.setUniformBuffer(ubo2);
+
+ // THEN
+ QCOMPARE(pack.uniformBuffers().size(), 1);
+ QCOMPARE(pack.uniformBuffers().front().m_blockIndex, 1);
+ QCOMPARE(pack.uniformBuffers().front().m_bufferID, nodeId2);
+
+ // WHEN
+ BlockToUBO ubo3 { 2, nodeId2, false, {}};
+ pack.setUniformBuffer(ubo3);
+
+ // THEN
+ QCOMPARE(pack.uniformBuffers().size(), 2);
+ QCOMPARE(pack.uniformBuffers().front().m_blockIndex, 1);
+ QCOMPARE(pack.uniformBuffers().front().m_bufferID, nodeId2);
+ QCOMPARE(pack.uniformBuffers().back().m_blockIndex, 2);
+ QCOMPARE(pack.uniformBuffers().back().m_bufferID, nodeId2);
+ }
+
+ void checkShaderParameterPackStoresSingleSSBOPerBlockIndex()
+ {
+ // GIVEN
+ ShaderParameterPack pack;
+ auto nodeId1 = Qt3DCore::QNodeId::createId();
+ auto nodeId2 = Qt3DCore::QNodeId::createId();
+
+ BlockToSSBO ssbo1 { 1, 0, nodeId1};
+ BlockToSSBO ssbo2 { 1, 0, nodeId2};
+
+ // WHEN
+ pack.setShaderStorageBuffer(ssbo1);
+ pack.setShaderStorageBuffer(ssbo2);
+
+ // THEN
+ QCOMPARE(pack.shaderStorageBuffers().size(), 1);
+ QCOMPARE(pack.shaderStorageBuffers().front().m_blockIndex, 1);
+ QCOMPARE(pack.shaderStorageBuffers().front().m_bufferID, nodeId2);
+
+ // WHEN
+ BlockToSSBO ssbo3 { 2, 1, nodeId2};
+ pack.setShaderStorageBuffer(ssbo3);
+
+ // THEN
+ QCOMPARE(pack.shaderStorageBuffers().size(), 2);
+ QCOMPARE(pack.shaderStorageBuffers().front().m_blockIndex, 1);
+ QCOMPARE(pack.shaderStorageBuffers().front().m_bufferID, nodeId2);
+ QCOMPARE(pack.shaderStorageBuffers().back().m_blockIndex, 2);
+ QCOMPARE(pack.shaderStorageBuffers().back().m_bufferID, nodeId2);
+ }
+
void checkRenderViewUniformMinification()
{
QFETCH(QVector<QShaderProgram*>, shaders);
diff --git a/tests/auto/render/qgeometry/tst_qgeometry.cpp b/tests/auto/render/qgeometry/tst_qgeometry.cpp
index e790ba9cc..b2c66ae72 100644
--- a/tests/auto/render/qgeometry/tst_qgeometry.cpp
+++ b/tests/auto/render/qgeometry/tst_qgeometry.cpp
@@ -208,31 +208,26 @@ private Q_SLOTS:
QCOMPARE(geometry->maxExtent(), QVector3D());
// WHEN
- Qt3DCore::QPropertyUpdatedChangePtr valueChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
- valueChange->setPropertyName("extent");
- valueChange->setValue(QVariant::fromValue(QPair<QVector3D, QVector3D>(QVector3D(10.0f, 10.f, 10.0f),
- QVector3D())));
- geometry->sceneChangeEvent(valueChange);
+ auto dNode = static_cast<Qt3DRender::QGeometryPrivate *>(Qt3DCore::QNodePrivate::get(geometry.data()));
+ const QVector3D minExt(-1.0f, -1.0f, -1.0f);
+ const QVector3D maxExt(1.0f, 1.0f, 1.0f);
+ dNode->setExtent(minExt, maxExt);
// THEN
QCOMPARE(spyMinExtent.count(), 1);
- QCOMPARE(spyMaxExtent.count(), 0);
- QCOMPARE(geometry->minExtent(), QVector3D(10.0f, 10.0f, 10.0f));
+ QCOMPARE(spyMaxExtent.count(), 1);
+ QCOMPARE(geometry->minExtent(), minExt);
+ QCOMPARE(geometry->maxExtent(), maxExt);
+ spyMaxExtent.clear();
spyMinExtent.clear();
// WHEN
- valueChange->setPropertyName("extent");
- valueChange->setValue(QVariant::fromValue(QPair<QVector3D, QVector3D>(QVector3D(10.0f, 10.f, 10.0f),
- QVector3D(11.0f, 11.f, 11.0f))));
- geometry->sceneChangeEvent(valueChange);
+ dNode->setExtent(minExt, maxExt);
// THEN
QCOMPARE(spyMinExtent.count(), 0);
- QCOMPARE(spyMaxExtent.count(), 1);
- QCOMPARE(geometry->maxExtent(), QVector3D(11.0f, 11.0f, 11.0f));
-
- spyMaxExtent.clear();
+ QCOMPARE(spyMaxExtent.count(), 0);
}
};
diff --git a/tests/auto/render/qmlscenereader/qmlscenereader.cpp b/tests/auto/render/qmlscenereader/qmlscenereader.cpp
index 182782edb..417a75880 100644
--- a/tests/auto/render/qmlscenereader/qmlscenereader.cpp
+++ b/tests/auto/render/qmlscenereader/qmlscenereader.cpp
@@ -82,3 +82,5 @@ void QmlSceneReader::loadComplete()
}
QT_END_NAMESPACE
+
+#include "moc_qmlscenereader.cpp"
diff --git a/tests/auto/render/qmlscenereader/qmlscenereader.h b/tests/auto/render/qmlscenereader/qmlscenereader.h
index 9d4643d93..75a74d03a 100644
--- a/tests/auto/render/qmlscenereader/qmlscenereader.h
+++ b/tests/auto/render/qmlscenereader/qmlscenereader.h
@@ -37,6 +37,9 @@
**
****************************************************************************/
+#ifndef QMLSCENEREADER_H
+#define QMLSCENEREADER_H
+
#include <QObject>
QT_BEGIN_NAMESPACE
@@ -61,3 +64,5 @@ private:
};
QT_END_NAMESPACE
+
+#endif
diff --git a/tests/auto/render/raycasting/BLACKLIST b/tests/auto/render/raycasting/BLACKLIST
new file mode 100644
index 000000000..8d957b4ca
--- /dev/null
+++ b/tests/auto/render/raycasting/BLACKLIST
@@ -0,0 +1,3 @@
+# See qtbase/src/testlib/qtestblacklist.cpp for format
+[shouldReturnAllResults]
+ci ubuntu-20.04 # QTBUG-108918
diff --git a/tests/auto/shared/util.cpp b/tests/auto/shared/util.cpp
index 55041eeb4..d4a19164a 100644
--- a/tests/auto/shared/util.cpp
+++ b/tests/auto/shared/util.cpp
@@ -123,3 +123,5 @@ QQmlTestMessageHandler::~QQmlTestMessageHandler()
qInstallMessageHandler(m_oldHandler);
QQmlTestMessageHandler::m_instance = 0;
}
+
+#include "moc_util.cpp"