Skip to content

Commit 1abc219

Browse files
committed
redraw
1 parent b31b84c commit 1abc219

File tree

4 files changed

+24
-12
lines changed

4 files changed

+24
-12
lines changed

Qor/LoadingState.cpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,12 @@ LoadingState :: LoadingState(Qor* qor):
115115
//fade_to(Color::white(), m_FadeTime);
116116
m_Fade.frame(Frame<Color>(
117117
Color::white(),
118-
Freq::Time::seconds(0.25f),
118+
Freq::Time::seconds(0.5f),
119119
INTERPOLATE(out_sine<Color>)
120120
));
121121
//m_Fade.frame(Frame<Color>(
122122
// Color::white(), // wait a while
123-
// Freq::Time::seconds(0.25f),
123+
// Freq::Time::seconds(0.5f),
124124
// INTERPOLATE(Color, out_sine)
125125
//));
126126
#ifndef QOR_NO_AUDIO
@@ -207,7 +207,7 @@ void LoadingState :: logic(Freq::Time t)
207207
{
208208
m_Fade.frame(Frame<Color>(
209209
Color::black(),
210-
Freq::Time::seconds(0.25f),
210+
Freq::Time::seconds(0.5f),
211211
INTERPOLATE(out_sine<Color>)
212212
));
213213
}
@@ -231,6 +231,8 @@ void LoadingState :: logic(Freq::Time t)
231231
}
232232
}
233233
}
234+
235+
m_pPipeline->redraw();
234236
}
235237

236238
void LoadingState :: render() const

Qor/Main.cpp

-3
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ int main(int argc, char* argv[])
2222

2323
auto engine = kit::make_unique<Qor>(args, Info::Program);
2424

25-
//engine->max_tick(300.0f);
26-
//engine->max_fps(30.0f);
27-
2825
if(engine->args().value_or("mod", "").empty())
2926
engine->states().register_class<BasicState>(); // run basic state
3027
else

Qor/Qor.cpp

+17-6
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,15 @@ Qor :: ~Qor()
182182
m_pPipeline.reset();
183183
}
184184

185+
bool Qor :: needs_render() const
186+
{
187+
bool pipeline_dirty = m_pPipeline->dirty();
188+
int pipeline_idlemode = m_pPipeline->idle();
189+
if(not (pipeline_idlemode & Pipeline::IDLE_RENDER) || pipeline_dirty)
190+
return true;
191+
return false;
192+
}
193+
185194
void Qor :: logic()
186195
{
187196
Freq::Time t;
@@ -200,17 +209,21 @@ void Qor :: logic()
200209
m_FrameAccum += t.s();
201210
if(m_MaxTick < K_EPSILON) // MaxTick==0 for unlimited ticks
202211
break;
203-
if((m_TickAccum > 1.0f/m_MaxTick) ||
204-
(m_MaxFPS > K_EPSILON && m_FrameAccum > 1.0f/m_MaxFPS))
212+
if(m_TickAccum > 1.0f/m_MaxTick)
205213
break;
214+
if(m_MaxFPS > K_EPSILON && m_FrameAccum > 1.0f/m_MaxFPS) {
215+
if(needs_render())
216+
break;
217+
}
206218
try{
219+
//SDL_Delay(1);
207220
this_thread::yield();
208221
}catch(...){
209222
quit();
210223
return;
211224
}
212225
}
213-
//LOGf("%s", m_TickAccum);
226+
t = Freq::Time::seconds(m_TickAccum);
214227

215228
++m_TicksLastSecond;
216229

@@ -239,9 +252,7 @@ void Qor :: render()
239252
if(Headless::enabled())
240253
return;
241254

242-
bool pipeline_dirty = m_pPipeline->dirty();
243-
int pipeline_idlemode = m_pPipeline->idle();
244-
if((pipeline_idlemode & Pipeline::IDLE_RENDER) && not pipeline_dirty)
255+
if(!needs_render())
245256
return;
246257

247258
if(m_FPSAlarm.elapsed()) {

Qor/Qor.h

+2
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,8 @@ class Qor:
220220
mutable std::mutex m_TasksMutex;
221221
std::thread::id m_HandlerThreadID = std::this_thread::get_id();
222222
std::deque<std::function<void()>> m_Tasks;
223+
224+
bool needs_render() const;
223225

224226
void async_load(State* s)
225227
{

0 commit comments

Comments
 (0)