summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/state_trackers/dri/dri_context.c11
-rw-r--r--src/gallium/state_trackers/dri/dri_drawable.c14
2 files changed, 10 insertions, 15 deletions
diff --git a/src/gallium/state_trackers/dri/dri_context.c b/src/gallium/state_trackers/dri/dri_context.c
index 8e6299c..54d2a56 100644
--- a/src/gallium/state_trackers/dri/dri_context.c
+++ b/src/gallium/state_trackers/dri/dri_context.c
@@ -126,9 +126,7 @@ dri_unbind_context(__DRIcontextPrivate * cPriv)
struct dri_context *ctx = dri_context(cPriv);
if (--ctx->bind_count == 0) {
- GET_CURRENT_CONTEXT(curGLCtx);
-
- if (curGLCtx && ctx->st == curGLCtx->st) {
+ if (ctx->st && ctx->st == st_get_current()) {
st_flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
st_make_current(NULL, NULL, NULL);
}
@@ -148,11 +146,10 @@ dri_make_current(__DRIcontextPrivate * cPriv,
struct dri_screen *screen = dri_screen(cPriv->driScreenPriv);
struct dri_drawable *draw = dri_drawable(driDrawPriv);
struct dri_drawable *read = dri_drawable(driReadPriv);
+ struct st_context *old_st = st_get_current();
- GET_CURRENT_CONTEXT(oldGLCtx);
-
- if (oldGLCtx && oldGLCtx->st != ctx->st)
- st_flush(oldGLCtx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
+ if (old_st && old_st != ctx->st)
+ st_flush(old_st, PIPE_FLUSH_RENDER_CACHE, NULL);
++ctx->bind_count;
diff --git a/src/gallium/state_trackers/dri/dri_drawable.c b/src/gallium/state_trackers/dri/dri_drawable.c
index fd4bae5..15a2088 100644
--- a/src/gallium/state_trackers/dri/dri_drawable.c
+++ b/src/gallium/state_trackers/dri/dri_drawable.c
@@ -537,15 +537,14 @@ dri_swap_buffers(__DRIdrawablePrivate * dPriv)
struct dri_drawable *draw = dri_drawable(dPriv);
struct pipe_screen *screen = dri_screen(draw->sPriv)->pipe_screen;
struct pipe_fence_handle *fence;
-
- GET_CURRENT_CONTEXT(glCtx);
+ struct st_context *st = st_get_current();
assert(__dri1_api_hooks != NULL);
- if (!glCtx)
+ if (!st)
return; /* For now */
- ctx = (struct dri_context *)glCtx->st->pipe->priv;
+ ctx = (struct dri_context *)st->pipe->priv;
st_get_framebuffer_surface(draw->stfb, ST_SURFACE_BACK_LEFT, &back_surf);
if (back_surf) {
@@ -571,15 +570,14 @@ dri_copy_sub_buffer(__DRIdrawablePrivate * dPriv, int x, int y, int w, int h)
struct pipe_surface *back_surf;
struct dri_drawable *draw = dri_drawable(dPriv);
struct pipe_fence_handle *dummy_fence;
-
- GET_CURRENT_CONTEXT(glCtx);
+ struct st_context *st = st_get_current();
assert(__dri1_api_hooks != NULL);
- if (!glCtx)
+ if (!st)
return;
- ctx = (struct dri_context *)glCtx->st->pipe->priv;
+ ctx = (struct dri_context *)st->pipe->priv;
sub_bbox.x1 = x;
sub_bbox.x2 = x + w;