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:
@@ -236,7 +236,7 @@ MesaSoftwareRenderer::MesaSoftwareRenderer(BGLView* view, ulong options,
|
|||||||
const GLint blue = rgbFlag ? 8 : 0;
|
const GLint blue = rgbFlag ? 8 : 0;
|
||||||
const GLint alpha = alphaFlag ? 8 : 0;
|
const GLint alpha = alphaFlag ? 8 : 0;
|
||||||
|
|
||||||
//fOptions = options | BGL_INDIRECT;
|
fOptions = options; // | BGL_INDIRECT;
|
||||||
struct dd_function_table functions;
|
struct dd_function_table functions;
|
||||||
|
|
||||||
fVisual = _mesa_create_visual(rgbFlag, dblFlag, stereoFlag, red, green,
|
fVisual = _mesa_create_visual(rgbFlag, dblFlag, stereoFlag, red, green,
|
||||||
@@ -253,6 +253,7 @@ MesaSoftwareRenderer::MesaSoftwareRenderer(BGLView* view, ulong options,
|
|||||||
//functions.ClearColor = ClearColor;
|
//functions.ClearColor = ClearColor;
|
||||||
functions.Error = Error;
|
functions.Error = Error;
|
||||||
functions.Viewport = Viewport;
|
functions.Viewport = Viewport;
|
||||||
|
functions.Flush = Flush;
|
||||||
|
|
||||||
// create core context
|
// create core context
|
||||||
fContext = _mesa_create_context(fVisual, NULL, &functions, this);
|
fContext = _mesa_create_context(fVisual, NULL, &functions, this);
|
||||||
@@ -420,6 +421,9 @@ MesaSoftwareRenderer::UnlockGL()
|
|||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
_mesa_make_current(fContext, NULL, NULL);
|
_mesa_make_current(fContext, NULL, NULL);
|
||||||
|
if ((fOptions & BGL_DOUBLE) == 0) {
|
||||||
|
SwapBuffers();
|
||||||
|
}
|
||||||
BGLRenderer::UnlockGL();
|
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,
|
struct gl_renderbuffer* render,
|
||||||
GLenum internalFormat,
|
GLenum internalFormat,
|
||||||
GLuint width, GLuint height);
|
GLuint width, GLuint height);
|
||||||
|
static void Flush(GLcontext *ctx);
|
||||||
|
|
||||||
BBitmap* fBitmap;
|
BBitmap* fBitmap;
|
||||||
bool fDirectModeEnabled;
|
bool fDirectModeEnabled;
|
||||||
direct_buffer_info* fInfo;
|
direct_buffer_info* fInfo;
|
||||||
BLocker fInfoLocker;
|
BLocker fInfoLocker;
|
||||||
|
ulong fOptions;
|
||||||
|
|
||||||
GLcontext* fContext;
|
GLcontext* fContext;
|
||||||
GLvisual* fVisual;
|
GLvisual* fVisual;
|
||||||
|
|||||||
Reference in New Issue
Block a user