mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-11-24 11:21:38 +08:00
52 lines
1.7 KiB
Diff
52 lines
1.7 KiB
Diff
diff --git a/pxr/base/work/dispatcher.cpp b/pxr/base/work/dispatcher.cpp
|
|
index 8cc8dbb..74fba2d 100644
|
|
--- a/pxr/base/work/dispatcher.cpp
|
|
+++ b/pxr/base/work/dispatcher.cpp
|
|
@@ -31,11 +31,18 @@ WorkDispatcher::WorkDispatcher()
|
|
}
|
|
|
|
#if TBB_INTERFACE_VERSION_MAJOR >= 12
|
|
+#if TBB_VERSION_MAJOR >= 2022
|
|
+inline tbb::detail::d1::wait_context_vertex&
|
|
+WorkDispatcher::_TaskGroup::_GetInternalWaitContext() {
|
|
+ return m_wait_vertex;
|
|
+}
|
|
+#else
|
|
inline tbb::detail::d1::wait_context&
|
|
WorkDispatcher::_TaskGroup::_GetInternalWaitContext() {
|
|
return m_wait_ctx;
|
|
}
|
|
#endif
|
|
+#endif
|
|
|
|
WorkDispatcher::~WorkDispatcher() noexcept
|
|
{
|
|
@@ -54,7 +61,11 @@ WorkDispatcher::Wait()
|
|
// The native task_group::wait() has a comment saying its call to the
|
|
// context reset method is not thread safe. So we do our own
|
|
// synchronization to ensure it is called once.
|
|
+#if TBB_VERSION_MAJOR >= 2022
|
|
+ tbb::detail::d1::wait(_taskGroup._GetInternalWaitContext().get_context(), _context);
|
|
+#else
|
|
tbb::detail::d1::wait(_taskGroup._GetInternalWaitContext(), _context);
|
|
+#endif
|
|
#else
|
|
_rootTask->wait_for_all();
|
|
#endif
|
|
diff --git a/pxr/base/work/dispatcher.h b/pxr/base/work/dispatcher.h
|
|
index b35bcd8..7d24165 100644
|
|
--- a/pxr/base/work/dispatcher.h
|
|
+++ b/pxr/base/work/dispatcher.h
|
|
@@ -199,7 +199,11 @@ private:
|
|
class _TaskGroup : public tbb::task_group {
|
|
public:
|
|
_TaskGroup(tbb::task_group_context& ctx) : tbb::task_group(ctx) {}
|
|
+#if TBB_VERSION_MAJOR >= 2022
|
|
+ inline tbb::detail::d1::wait_context_vertex& _GetInternalWaitContext();
|
|
+ #else
|
|
inline tbb::detail::d1::wait_context& _GetInternalWaitContext();
|
|
+ #endif
|
|
};
|
|
|
|
_TaskGroup _taskGroup;
|