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

View File

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