diff options
author | Brian <brian.paul@tungstengraphics.com> | 2007-11-05 09:24:03 -0700 |
---|---|---|
committer | Brian <brian.paul@tungstengraphics.com> | 2007-11-05 09:24:03 -0700 |
commit | 2edc87eb3d7283274c3d0714e90078736f8d985e (patch) | |
tree | a3aefaa2bb794676bf910441a8b9cb6a9b0b1566 /src/mesa/drivers/dri/intel_winsys/intel_screen.c | |
parent | 1f17d845ff7a221a01de721aed81754175ab0a54 (diff) |
clean-up/re-org of intel_framebuffer code
Diffstat (limited to 'src/mesa/drivers/dri/intel_winsys/intel_screen.c')
-rw-r--r-- | src/mesa/drivers/dri/intel_winsys/intel_screen.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/intel_winsys/intel_screen.c b/src/mesa/drivers/dri/intel_winsys/intel_screen.c index cfa61fa67f..c058c2d214 100644 --- a/src/mesa/drivers/dri/intel_winsys/intel_screen.c +++ b/src/mesa/drivers/dri/intel_winsys/intel_screen.c @@ -29,6 +29,7 @@ #include "vblank.h" #include "xmlpool.h" +#include "intel_context.h" #include "intel_screen.h" #include "intel_batchbuffer.h" #include "intel_swapbuffers.h" @@ -280,8 +281,17 @@ intelCreateBuffer(__DRIscreenPrivate * driScrnPriv, return GL_FALSE; /* not implemented */ } else { - struct st_framebuffer *stfb = st_create_framebuffer(mesaVis); - driDrawPriv->driverPrivate = (void *) stfb; + struct intel_framebuffer *intelfb = CALLOC_STRUCT(intel_framebuffer); + if (!intelfb) + return GL_FALSE; + + intelfb->stfb = st_create_framebuffer(mesaVis); + if (!intelfb->stfb) { + free(intelfb); + return GL_FALSE; + } + + driDrawPriv->driverPrivate = (void *) intelfb; return GL_TRUE; } } @@ -289,8 +299,10 @@ intelCreateBuffer(__DRIscreenPrivate * driScrnPriv, static void intelDestroyBuffer(__DRIdrawablePrivate * driDrawPriv) { - st_unreference_framebuffer((struct st_framebuffer **) - (&(driDrawPriv->driverPrivate))); + struct intel_framebuffer *intelfb = intel_framebuffer(driDrawPriv); + assert(intelfb->stfb); + st_unreference_framebuffer(&intelfb->stfb); + free(intelfb); } |