Cleanup of main update calbacks

Clarify update and draw of rendering manager by using callbacks (instead of hidden calls in draw method).
This commit is contained in:
Bruno Herbelin
2021-12-19 01:12:25 +01:00
parent 3a9c6f56bf
commit 8deb364025
2 changed files with 17 additions and 14 deletions

View File

@@ -206,7 +206,7 @@ bool Rendering::init()
// set application icon
main_.setIcon("images/vimix_256x256.png");
// additional window callbacks for main window
// glfwSetWindowRefreshCallback( main_.window(), WindowRefreshCallback );
glfwSetWindowRefreshCallback( main_.window(), WindowRefreshCallback );
glfwSetDropCallback( main_.window(), Rendering::FileDropped);
//
@@ -316,19 +316,13 @@ void Rendering::draw()
// operate on main window context
main_.makeCurrent();
// User Interface step 1
UserInterface::manager().NewFrame();
// Custom draw
// draw
std::list<Rendering::RenderingCallback>::iterator iter;
for (iter=draw_callbacks_.begin(); iter != draw_callbacks_.end(); ++iter)
{
(*iter)();
}
// User Interface step 2
UserInterface::manager().Render();
// perform screenshot if requested
if (request_screenshot_) {
// glfwMakeContextCurrent(main_window_);

View File

@@ -40,11 +40,22 @@ extern "C"{
#endif
void prepare()
{
Mixer::manager().update();
UserInterface::manager().NewFrame();
}
void drawScene()
{
Mixer::manager().draw();
}
void renderGUI()
{
UserInterface::manager().Render();
}
int main(int argc, char *argv[])
{
// one extra argument is given
@@ -127,8 +138,10 @@ int main(int argc, char *argv[])
gst_debug_set_active(FALSE);
#endif
// draw the scene
Rendering::manager().pushFrontDrawCallback(drawScene);
// callbacks to draw
Rendering::manager().pushBackDrawCallback(prepare);
Rendering::manager().pushBackDrawCallback(drawScene);
Rendering::manager().pushBackDrawCallback(renderGUI);
// show all windows
Rendering::manager().show();
@@ -137,11 +150,7 @@ int main(int argc, char *argv[])
/// Main LOOP
///
while ( Rendering::manager().isActive() )
{
Mixer::manager().update();
Rendering::manager().draw();
}
///
/// UI TERMINATE