Skip to content

Commit 938c692

Browse files
committed
fix: workers start/stop on update
1 parent 6247694 commit 938c692

File tree

4 files changed

+8
-15
lines changed

4 files changed

+8
-15
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ if (FREYR_PROFILING)
2727
add_subdirectory(vendor/perfetto)
2828
endif (FREYR_PROFILING)
2929

30-
project(freyr LANGUAGES C CXX VERSION 0.20.14)
30+
project(freyr LANGUAGES C CXX VERSION 0.20.15)
3131

3232
if (FREYR_BUILD_EXAMPLES)
3333
add_subdirectory(examples)

include/Freyr/Core/TaskManager.hpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,8 @@ namespace FREYR_NAMESPACE
4545

4646
void StartWorkers();
4747
void StopWorkers();
48-
void WaitForAllTasks()
49-
{
50-
mTaskCounter->waitForCompletion();
51-
StopWorkers();
52-
}
48+
49+
void WaitForAllTasks() { mTaskCounter->waitForCompletion(); }
5350

5451
void NotifyWorker() { mCondition.notify_one(); }
5552

src/Core/Scene.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ namespace FREYR_NAMESPACE
116116

117117
#endif // FREYR_PROFILING
118118
FREYR_PROFILING_BEGIN("FREYR", "Frame", perfetto::Track(0), "TotalEntities", mEntityManager->LivingEntities());
119+
mTaskManager->StartWorkers();
119120

120121
const auto provider = mServiceProvider.lock()->CreateServiceScope()->GetServiceProvider();
121122

@@ -126,21 +127,18 @@ namespace FREYR_NAMESPACE
126127
while (mFixedDeltaTimeAccumulator >= mOptions->FixedDeltaTime && steps < maxSteps)
127128
{
128129
FREYR_PROFILING_BEGIN("FREYR", "PreFixedUpdate", perfetto::Track(0));
129-
mTaskManager->StartWorkers();
130130
mSystemManager->PreFixedUpdate(mOptions->FixedDeltaTime, provider);
131131
mTaskManager->WaitForAllTasks();
132132
DestroyEntities();
133133
FREYR_PROFILING_END("FREYR", perfetto::Track(0));
134134

135135
FREYR_PROFILING_BEGIN("FREYR", "FixedUpdate", perfetto::Track(0));
136-
mTaskManager->StartWorkers();
137136
mSystemManager->FixedUpdate(mOptions->FixedDeltaTime, provider);
138137
mTaskManager->WaitForAllTasks();
139138
DestroyEntities();
140139
FREYR_PROFILING_END("FREYR", perfetto::Track(0));
141140

142141
FREYR_PROFILING_BEGIN("FREYR", "PostFixedUpdate", perfetto::Track(0));
143-
mTaskManager->StartWorkers();
144142
mSystemManager->PostFixedUpdate(mOptions->FixedDeltaTime, provider);
145143
mTaskManager->WaitForAllTasks();
146144
DestroyEntities();
@@ -157,27 +155,25 @@ namespace FREYR_NAMESPACE
157155

158156
FREYR_PROFILING_BEGIN("FREYR", "PreUpdate", perfetto::Track(0), "TotalEntities",
159157
mEntityManager->LivingEntities());
160-
mTaskManager->StartWorkers();
161158
mSystemManager->PreUpdate(deltaTime, provider);
162159
mTaskManager->WaitForAllTasks();
163160
DestroyEntities();
164161
FREYR_PROFILING_END("FREYR", perfetto::Track(0));
165162

166163
FREYR_PROFILING_BEGIN("FREYR", "Update", perfetto::Track(0));
167-
mTaskManager->StartWorkers();
168164
mSystemManager->Update(deltaTime, provider);
169165
mTaskManager->WaitForAllTasks();
170166
DestroyEntities();
171167
FREYR_PROFILING_END("FREYR", perfetto::Track(0));
172168

173169
FREYR_PROFILING_BEGIN("FREYR", "PostUpdate", perfetto::Track(0));
174-
mTaskManager->StartWorkers();
175170
mSystemManager->PostUpdate(deltaTime, provider);
176171
mTaskManager->WaitForAllTasks();
177172
DestroyEntities();
178173
FREYR_PROFILING_END("FREYR", perfetto::Track(0));
179174

180175
FREYR_PROFILING_END("FREYR", perfetto::Track(0));
176+
mTaskManager->StopWorkers();
181177
}
182178

183179
void Scene::DestroyEntities()

src/Core/TaskManager.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ namespace FREYR_NAMESPACE
100100
if (mState.load() == State::Idle)
101101
return;
102102

103-
auto idle = State::Running;
104-
if (mState.compare_exchange_strong(idle, State::Idle))
103+
auto running = State::Running;
104+
if (mState.compare_exchange_strong(running, State::Idle))
105105
return;
106106
}
107107
}
@@ -152,7 +152,7 @@ namespace FREYR_NAMESPACE
152152
break;
153153
}
154154

155-
const State currentState = mState.load(std::memory_order_acquire);
155+
const auto currentState = mState.load(std::memory_order_acquire);
156156

157157
if (currentState == State::Resizing)
158158
return;

0 commit comments

Comments
 (0)