diff --git a/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.cpp b/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.cpp index a530f6c075..54e1eb4d32 100644 --- a/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.cpp +++ b/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.cpp @@ -236,7 +236,7 @@ MesaSoftwareRenderer::MesaSoftwareRenderer(BGLView* view, ulong options, const GLint blue = rgbFlag ? 8 : 0; const GLint alpha = alphaFlag ? 8 : 0; - //fOptions = options | BGL_INDIRECT; + fOptions = options; // | BGL_INDIRECT; struct dd_function_table functions; fVisual = _mesa_create_visual(rgbFlag, dblFlag, stereoFlag, red, green, @@ -253,6 +253,7 @@ MesaSoftwareRenderer::MesaSoftwareRenderer(BGLView* view, ulong options, //functions.ClearColor = ClearColor; functions.Error = Error; functions.Viewport = Viewport; + functions.Flush = Flush; // create core context fContext = _mesa_create_context(fVisual, NULL, &functions, this); @@ -420,6 +421,9 @@ MesaSoftwareRenderer::UnlockGL() { CALLED(); _mesa_make_current(fContext, NULL, NULL); + if ((fOptions & BGL_DOUBLE) == 0) { + SwapBuffers(); + } BGLRenderer::UnlockGL(); } @@ -771,3 +775,13 @@ MesaSoftwareRenderer::RenderbufferStorage(GLcontext* ctx, } +void +MesaSoftwareRenderer::Flush(GLcontext *ctx) +{ + CALLED(); + MesaSoftwareRenderer *mr = (MesaSoftwareRenderer *) ctx->DriverCtx; + if ((mr->fOptions & BGL_DOUBLE) == 0) { + mr->SwapBuffers(); + } +} + diff --git a/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.h b/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.h index 963e4ed38d..6109b4b641 100644 --- a/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.h +++ b/src/add-ons/opengl/mesa_software_renderer/MesaSoftwareRenderer.h @@ -58,11 +58,13 @@ private: struct gl_renderbuffer* render, GLenum internalFormat, GLuint width, GLuint height); + static void Flush(GLcontext *ctx); BBitmap* fBitmap; bool fDirectModeEnabled; direct_buffer_info* fInfo; BLocker fInfoLocker; + ulong fOptions; GLcontext* fContext; GLvisual* fVisual;