From 910fcec7c1b72f34d8f7e4047f07538674230882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sat, 13 Dec 2008 22:17:50 +0000 Subject: [PATCH] mimic a swap on flush events to force display in single buffering mode (and glSwapBuffers would not be called). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28806 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../MesaSoftwareRenderer.cpp | 16 +++++++++++++++- .../MesaSoftwareRenderer.h | 2 ++ 2 files changed, 17 insertions(+), 1 deletion(-) 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;