From 25c02ea703f90709625f34bb7c3f9e18be7dd58c Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Tue, 23 Mar 2021 17:12:27 +0100 Subject: Cleanup: Add namespace to compositor. --- source/blender/compositor/intern/COM_Device.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source/blender/compositor/intern/COM_Device.h') diff --git a/source/blender/compositor/intern/COM_Device.h b/source/blender/compositor/intern/COM_Device.h index 0a456760045..2a43c1be2b4 100644 --- a/source/blender/compositor/intern/COM_Device.h +++ b/source/blender/compositor/intern/COM_Device.h @@ -20,6 +20,8 @@ #include "COM_WorkPackage.h" +namespace blender::compositor { + /** * \brief Abstract class for device implementations to be used by the Compositor. * devices are queried, initialized and used by the WorkScheduler. @@ -46,3 +48,5 @@ class Device { MEM_CXX_CLASS_ALLOC_FUNCS("COM:Device") #endif }; + +} // namespace blender::compositor -- cgit v1.2.3 From 1b4f0bf32aa5215325ca33f81898a7eeef9da2f8 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 3 May 2021 15:07:14 +0200 Subject: Fix T87989: Crash using OpenCL in compositor Initial report was mentioning the Classroom demo scene, but this is probably because the scene was pre-configured to be used with OpenCL. Would expect any OpenCL compositing to be failing prior to this fix. The reason why crash was happening is due to OpenCL queue being released from OpenCLDevice destructor. Is not that obvious, but when Vector (including std::vector) is holding elements by value a destructor will be called on "old" memory when vector capacitance changes. Solved by making forbidding copy semantic for compositor devices and forcing move semantic to be used. Also use emplace semantic in the devices vector initialization. --- source/blender/compositor/intern/COM_Device.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'source/blender/compositor/intern/COM_Device.h') diff --git a/source/blender/compositor/intern/COM_Device.h b/source/blender/compositor/intern/COM_Device.h index 2a43c1be2b4..c848672a405 100644 --- a/source/blender/compositor/intern/COM_Device.h +++ b/source/blender/compositor/intern/COM_Device.h @@ -30,6 +30,14 @@ namespace blender::compositor { class Device { public: + Device() = default; + + Device(const Device &other) = delete; + Device(Device &&other) noexcept = default; + + Device &operator=(const Device &other) = delete; + Device &operator=(Device &&other) = delete; + /** * \brief Declaration of the virtual destructor * \note resolve warning gcc 4.7 -- cgit v1.2.3