From 1e1a35e20c1d281bc9700b349cda1e67f65905dd Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Sat, 3 Jan 2004 11:17:44 +0000 Subject: [PATCH] Actually align the offset of allocated offscreen areas. --- hw/kdrive/src/kdrive.h | 1 + hw/kdrive/src/koffscreen.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h index 6119128d4..bee6393b7 100644 --- a/hw/kdrive/src/kdrive.h +++ b/hw/kdrive/src/kdrive.h @@ -121,6 +121,7 @@ typedef enum _KdOffscreenState { struct _KdOffscreenArea { int offset; + int save_offset; int size; pointer privData; diff --git a/hw/kdrive/src/koffscreen.c b/hw/kdrive/src/koffscreen.c index 5f5c92f11..41f0a29e5 100644 --- a/hw/kdrive/src/koffscreen.c +++ b/hw/kdrive/src/koffscreen.c @@ -195,7 +195,10 @@ KdOffscreenAlloc (ScreenPtr pScreen, int size, int align, area->state = KdOffscreenRemovable; area->privData = privData; area->save = save; - + + area->save_offset = area->offset; + area->offset = (area->offset + align - 1) & ~(align - 1); + KdOffscreenValidate (pScreen); DBG_OFFSCREEN (("Alloc 0x%x -> 0x%x\n", size, area->offset)); @@ -260,6 +263,7 @@ KdOffscreenFree (ScreenPtr pScreen, KdOffscreenArea *area) area->state = KdOffscreenAvail; area->save = 0; + area->offset = area->save_offset; /* * Find previous area