added driUpdateFramebufferSize()

This commit is contained in:
Brian Paul 2005-09-14 00:09:09 +00:00
parent f084f60f8b
commit 9ae952a88c
2 changed files with 29 additions and 2 deletions

View file

@ -1,15 +1,19 @@
#include "mtypes.h"
#include "drirenderbuffer.h"
#include "framebuffer.h"
#include "renderbuffer.h"
#include "imports.h"
/**
* This will get called when a window is resized.
* This will get called when a window (gl_framebuffer) is resized (probably
* via driUpdateFramebufferSize(), below).
* Just update width, height and internal format fields for now.
* There's usually no memory allocation above because the present
* DRI drivers use statically-allocated full-screen buffers.
* DRI drivers use statically-allocated full-screen buffers. If that's not
* the case for a DRI driver, a different AllocStorage method should
* be used.
*/
static GLboolean
driRenderbufferStorage(GLcontext *ctx, struct gl_renderbuffer *rb,
@ -164,3 +168,21 @@ driFlipRenderbuffers(struct gl_framebuffer *fb, GLboolean flipped)
}
}
}
/**
* Check that the gl_framebuffer associated with dPriv is the right size.
* Resize the gl_framebuffer if needed.
* It's expected that the dPriv->driverPrivate member points to a
* gl_framebuffer object.
*/
void
driUpdateFramebufferSize(GLcontext *ctx, const __DRIdrawablePrivate *dPriv)
{
struct gl_framebuffer *fb = (struct gl_framebuffer *) dPriv->driverPrivate;
if (fb && (dPriv->w != fb->Width || dPriv->h != fb->Height)) {
_mesa_resize_framebuffer(ctx, fb, dPriv->w, dPriv->h);
assert(fb->Width == dPriv->w);
assert(fb->Height == dPriv->h);
}
}

View file

@ -67,4 +67,9 @@ driNewRenderbuffer(GLenum format, GLvoid *addr,
extern void
driFlipRenderbuffers(struct gl_framebuffer *fb, GLboolean flipped);
extern void
driUpdateFramebufferSize(GLcontext *ctx, const __DRIdrawablePrivate *dPriv);
#endif /* DRIRENDERBUFFER_H */