diff options
author | David Reveman <davidr@novell.com> | 2006-05-22 00:59:32 +0000 |
---|---|---|
committer | David Reveman <davidr@novell.com> | 2006-05-22 00:59:32 +0000 |
commit | 0553b1fbf990b67911d53e9a11acbacebde3c8b3 (patch) | |
tree | 898430fe032c6fe16157f1e9b9b652e528973ebc | |
parent | 2a607d0971e66b62e4d29bf14531265c611760c3 (diff) |
Fix pbuffer resize issue
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | src/glx/glitz_glx_context.c | 6 | ||||
-rw-r--r-- | src/glx/glitz_glx_drawable.c | 4 |
3 files changed, 16 insertions, 3 deletions
@@ -1,3 +1,12 @@ +2006-05-22 David Reveman <davidr@novell.com> + + * src/glx/glitz_glx_context.c (_glitz_glx_context_update): Update + drawable size before getting the current context. + + * src/glx/glitz_glx_drawable.c (_glitz_glx_drawable_update_size): + Make no context current if pbuffer drawable we're about to destroy + is current. (bnc #175637) + 2006-05-20 David Reveman <davidr@novell.com> * src/glitz.h (GLITZ_REVISION): Bump version to 0.5.6. diff --git a/src/glx/glitz_glx_context.c b/src/glx/glitz_glx_context.c index 5fe5478..97a23d6 100644 --- a/src/glx/glitz_glx_context.c +++ b/src/glx/glitz_glx_context.c @@ -442,15 +442,15 @@ _glitz_glx_context_update (glitz_glx_drawable_t *drawable, _glitz_glx_context_make_current (drawable, (context)? 1: 0); break; case GLITZ_DRAWABLE_CURRENT: - if (!dinfo->thread_info->cctx) - context = glXGetCurrentContext (); - if (drawable->base.width != drawable->width || drawable->base.height != drawable->height) _glitz_glx_drawable_update_size (drawable, drawable->base.width, drawable->base.height); + if (!dinfo->thread_info->cctx) + context = glXGetCurrentContext (); + if ((context != drawable->context->context) || (glXGetCurrentDrawable () != drawable->drawable)) _glitz_glx_context_make_current (drawable, (context)? 1: 0); diff --git a/src/glx/glitz_glx_drawable.c b/src/glx/glitz_glx_drawable.c index d8c95b6..02dd6e8 100644 --- a/src/glx/glitz_glx_drawable.c +++ b/src/glx/glitz_glx_drawable.c @@ -79,6 +79,10 @@ _glitz_glx_drawable_update_size (glitz_glx_drawable_t *drawable, { if (drawable->pbuffer) { + if (glXGetCurrentDrawable () == drawable->drawable) + glXMakeCurrent (drawable->screen_info->display_info->display, + None, NULL); + glitz_glx_pbuffer_destroy (drawable->screen_info, drawable->pbuffer); drawable->drawable = drawable->pbuffer = glitz_glx_pbuffer_create (drawable->screen_info, |