Actually align the offset of allocated offscreen areas.
This commit is contained in:
parent
354f8f7e94
commit
1e1a35e20c
|
@ -121,6 +121,7 @@ typedef enum _KdOffscreenState {
|
||||||
|
|
||||||
struct _KdOffscreenArea {
|
struct _KdOffscreenArea {
|
||||||
int offset;
|
int offset;
|
||||||
|
int save_offset;
|
||||||
int size;
|
int size;
|
||||||
pointer privData;
|
pointer privData;
|
||||||
|
|
||||||
|
|
|
@ -195,7 +195,10 @@ KdOffscreenAlloc (ScreenPtr pScreen, int size, int align,
|
||||||
area->state = KdOffscreenRemovable;
|
area->state = KdOffscreenRemovable;
|
||||||
area->privData = privData;
|
area->privData = privData;
|
||||||
area->save = save;
|
area->save = save;
|
||||||
|
|
||||||
|
area->save_offset = area->offset;
|
||||||
|
area->offset = (area->offset + align - 1) & ~(align - 1);
|
||||||
|
|
||||||
KdOffscreenValidate (pScreen);
|
KdOffscreenValidate (pScreen);
|
||||||
|
|
||||||
DBG_OFFSCREEN (("Alloc 0x%x -> 0x%x\n", size, area->offset));
|
DBG_OFFSCREEN (("Alloc 0x%x -> 0x%x\n", size, area->offset));
|
||||||
|
@ -260,6 +263,7 @@ KdOffscreenFree (ScreenPtr pScreen, KdOffscreenArea *area)
|
||||||
|
|
||||||
area->state = KdOffscreenAvail;
|
area->state = KdOffscreenAvail;
|
||||||
area->save = 0;
|
area->save = 0;
|
||||||
|
area->offset = area->save_offset;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find previous area
|
* Find previous area
|
||||||
|
|
Loading…
Reference in New Issue