write_buffer_sync((Playback3DCommand*)command);
break;
+ case Playback3DCommand::FINISH_OUTPUT:
+ finish_output_sync((Playback3DCommand*)command);
+ break;
+
case Playback3DCommand::CLEAR_OUTPUT:
clear_output_sync((Playback3DCommand*)command);
break;
}
+void Playback3D::finish_output(Canvas *canvas)
+{
+ Playback3DCommand command;
+ command.canvas = canvas;
+ command.command = Playback3DCommand::FINISH_OUTPUT;
+ send_command(&command);
+}
+
+void Playback3D::finish_output_sync(Playback3DCommand *command)
+{
+#ifdef HAVE_GL
+ command->canvas->lock_canvas("Playback3D::clear_output_sync");
+ if( command->canvas->get_canvas() ) {
+ command->canvas->get_canvas()->enable_opengl();
+ glFinish();
+ }
+ command->canvas->unlock_canvas();
+#endif
+}
+
+
void Playback3D::clear_output(Canvas *canvas, VFrame *output)
{
Playback3DCommand command;