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
This commit is contained in:
Jérôme Duval
2008-12-13 22:17:50 +00:00
parent dc7290d08d
commit 910fcec7c1
2 changed files with 17 additions and 1 deletions
@@ -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();
}
}
@@ -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;