Alexander von Gluck IV <kallis...@unixzen.com> writes: > * Inherit gl_context so we always have access to it > * Thanks curro for the idea. > * Last Haiku cannidate for 10.0.0
If you remove the redundant 'if (!this) {...}', this patch is: Reviewed-by: Francisco Jerez <curroje...@riseup.net> > --- > src/mesa/drivers/haiku/swrast/SoftwareRast.cpp | 56 > +++++++++++------------- > src/mesa/drivers/haiku/swrast/SoftwareRast.h | 3 +- > 2 files changed, 27 insertions(+), 32 deletions(-) > > diff --git a/src/mesa/drivers/haiku/swrast/SoftwareRast.cpp > b/src/mesa/drivers/haiku/swrast/SoftwareRast.cpp > index 52e8e5e..dbd8e72 100644 > --- a/src/mesa/drivers/haiku/swrast/SoftwareRast.cpp > +++ b/src/mesa/drivers/haiku/swrast/SoftwareRast.cpp > @@ -72,7 +72,6 @@ MesaSoftwareRast::MesaSoftwareRast(BGLView* view, ulong > options, > fDirectModeEnabled(false), > fInfo(NULL), > fInfoLocker("info locker"), > - fContext(NULL), > fVisual(NULL), > fFrameBuffer(NULL), > fFrontRenderBuffer(NULL), > @@ -114,34 +113,33 @@ MesaSoftwareRast::MesaSoftwareRast(BGLView* view, ulong > options, > functions.Flush = _Flush; > > // create core context > - fContext = _mesa_create_context(API_OPENGL_COMPAT, fVisual, NULL, > + // We inherit gl_context to this class > + _mesa_initialize_context(this, API_OPENGL_COMPAT, fVisual, NULL, > &functions); > > - if (!fContext) { > + if (!this) { > ERROR("%s: Failed to create Mesa context!\n", __func__); > _mesa_destroy_visual(fVisual); > return; > } > > - fContext->DriverCtx = (void*)this; > - > /* Initialize the software rasterizer and helper modules. */ > - _swrast_CreateContext(fContext); > - _vbo_CreateContext(fContext); > - _tnl_CreateContext(fContext); > - _swsetup_CreateContext(fContext); > - _swsetup_Wakeup(fContext); > + _swrast_CreateContext(this); > + _vbo_CreateContext(this); > + _tnl_CreateContext(this); > + _swsetup_CreateContext(this); > + _swsetup_Wakeup(this); > > // Use default TCL pipeline > - TNL_CONTEXT(fContext)->Driver.RunPipeline = _tnl_run_pipeline; > + TNL_CONTEXT(this)->Driver.RunPipeline = _tnl_run_pipeline; > > - _mesa_meta_init(fContext); > - _mesa_enable_sw_extensions(fContext); > + _mesa_meta_init(this); > + _mesa_enable_sw_extensions(this); > > - _mesa_compute_version(fContext); > + _mesa_compute_version(this); > > - _mesa_initialize_dispatch_tables(fContext); > - _mesa_initialize_vbo_vtxfmt(fContext); > + _mesa_initialize_dispatch_tables(this); > + _mesa_initialize_vbo_vtxfmt(this); > > // create core framebuffer > fFrameBuffer = _mesa_create_framebuffer(fVisual); > @@ -199,13 +197,13 @@ MesaSoftwareRast::MesaSoftwareRast(BGLView* view, ulong > options, > MesaSoftwareRast::~MesaSoftwareRast() > { > CALLED(); > - _swsetup_DestroyContext(fContext); > - _swrast_DestroyContext(fContext); > - _tnl_DestroyContext(fContext); > - _vbo_DestroyContext(fContext); > + _swsetup_DestroyContext(this); > + _swrast_DestroyContext(this); > + _tnl_DestroyContext(this); > + _vbo_DestroyContext(this); > _mesa_destroy_visual(fVisual); > _mesa_destroy_framebuffer(fFrameBuffer); > - _mesa_destroy_context(fContext); > + _mesa_destroy_context(this); > > free(fInfo); > free(fFrameBuffer); > @@ -220,7 +218,7 @@ MesaSoftwareRast::LockGL() > CALLED(); > BGLRenderer::LockGL(); > > - _mesa_make_current(fContext, fFrameBuffer, fFrameBuffer); > + _mesa_make_current(this, fFrameBuffer, fFrameBuffer); > > color_space colorSpace = BScreen(GLView()->Window()).ColorSpace(); > > @@ -250,7 +248,7 @@ void > MesaSoftwareRast::UnlockGL() > { > CALLED(); > - _mesa_make_current(fContext, NULL, NULL); > + _mesa_make_current(this, NULL, NULL); > BGLRenderer::UnlockGL(); > } > > @@ -264,7 +262,7 @@ MesaSoftwareRast::SwapBuffers(bool VSync) > return; > > if (fVisual->doubleBufferMode) > - _mesa_notifySwapBuffers(fContext); > + _mesa_notifySwapBuffers(this); > > if (!fDirectModeEnabled || fInfo == NULL) { > if (GLView()->LockLooperWithTimeout(1000) == B_OK) { > @@ -416,7 +414,7 @@ MesaSoftwareRast::_CheckResize(GLuint newWidth, GLuint > newHeight) > return; > } > > - _mesa_resize_framebuffer(fContext, fFrameBuffer, newWidth, newHeight); > + _mesa_resize_framebuffer(this, fFrameBuffer, newWidth, newHeight); > fHeight = newHeight; > fWidth = newWidth; > > @@ -546,17 +544,15 @@ void > MesaSoftwareRast::_Flush(gl_context* ctx) > { > CALLED(); > - // TODO: We may want to add the void* DriverCtx back into mtypes.h for > - // gl_context someday... > - #if 0 > - MesaSoftwareRast* driverContext = (MesaSoftwareRast*)ctx->DriverCtx; > + MesaSoftwareRast* driverContext = static_cast<MesaSoftwareRast*>(ctx); > + > + //MesaSoftwareRast* driverContext = (MesaSoftwareRast*)ctx->DriverCtx; > if ((driverContext->fOptions & BGL_DOUBLE) == 0) { > // TODO: SwapBuffers() can call _CopyToDirect(), which should > // be always called with with the BGLView drawlocked. > // This is not always the case if called from here. > driverContext->SwapBuffers(); > } > - #endif > } > > > diff --git a/src/mesa/drivers/haiku/swrast/SoftwareRast.h > b/src/mesa/drivers/haiku/swrast/SoftwareRast.h > index 8ef8493..8f0f018 100644 > --- a/src/mesa/drivers/haiku/swrast/SoftwareRast.h > +++ b/src/mesa/drivers/haiku/swrast/SoftwareRast.h > @@ -24,7 +24,7 @@ extern "C" { > } > > > -class MesaSoftwareRast : public BGLRenderer { > +class MesaSoftwareRast : public BGLRenderer, public gl_context { > public: > > MesaSoftwareRast(BGLView* view, > ulong > bgl_options, > @@ -79,7 +79,6 @@ private: > BLocker fInfoLocker; > ulong fOptions; > > - gl_context* fContext; > gl_config* fVisual; > > struct gl_framebuffer* fFrameBuffer; > -- > 1.7.9.5 > > _______________________________________________ > mesa-stable mailing list > mesa-sta...@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-stable
pgpDchW9Bn_hi.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev