i915tex: Fix randr resizing. Rotation still broken.

This commit is contained in:
Thomas Hellstrom 2007-01-23 08:57:38 +01:00
parent 60c28739aa
commit fe9fef2cec
2 changed files with 30 additions and 3 deletions

View file

@ -357,6 +357,10 @@ intelInitContext(struct intel_context *intel,
intel->driScreen = sPriv;
intel->sarea = saPriv;
intel->width = intelScreen->width;
intel->height = intelScreen->height;
intel->current_rotation = intelScreen->current_rotation;
if (!lockMutexInit) {
lockMutexInit = GL_TRUE;
_glthread_INIT_MUTEX(lockMutex);
@ -635,12 +639,22 @@ intelContendedLock(struct intel_context *intel, GLuint flags)
sarea->rotation != intelScreen->current_rotation) {
intelUpdateScreenRotation(sPriv, sarea);
}
/*
* This will drop the outstanding batchbuffer on the floor
* FIXME: This should be done for all contexts?
if (sarea->width != intel->width ||
sarea->height != intel->height ||
sarea->rotation != intel->current_rotation) {
/*
* FIXME: Really only need to do this when drawing to a
* common back- or front buffer.
*/
/*
* This will drop the outstanding batchbuffer on the floor
*/
driBOUnmap(intel->batch->buffer);
intel_batchbuffer_reset(intel->batch);
/* lose all primitives */
@ -653,6 +667,10 @@ intelContendedLock(struct intel_context *intel, GLuint flags)
/* force window update */
intel->lastStamp = 0;
intel->width = sarea->width;
intel->height = sarea->height;
intel->current_rotation = sarea->rotation;
}

View file

@ -286,6 +286,15 @@ struct intel_context
GLuint swap_missed_count;
GLuint swap_scheduled;
/* Rotation. Need to match that of the
* current screen.
*/
int width;
int height;
int current_rotation;
};
/* These are functions now: