summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2003-10-16 08:03:25 +0000
committerKeith Packard <keithp@keithp.com>2003-10-16 08:03:25 +0000
commit16b2ea64e7e0bd32d6dba078b4891167bd335d44 (patch)
treefe37a0745b44bcf1e35a20c4d4968ddae9235cc1
parentf4bcd36a386116c450ea6893ab3d08e81cea663b (diff)
Discard/reconstruct list of offscreen areas on VT switch so no allocations
can occur while switched away. Set type of off_screen_areas member to actual type instead of pointer
-rw-r--r--hw/kdrive/src/kdrive.h2
-rw-r--r--hw/kdrive/src/koffscreen.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h
index df59bb972..6cc976913 100644
--- a/hw/kdrive/src/kdrive.h
+++ b/hw/kdrive/src/kdrive.h
@@ -121,7 +121,7 @@ typedef struct _KdScreenInfo {
CARD8 *memory_base;
int off_screen_base;
int off_screen_size;
- pointer off_screen_areas;
+ struct _RealOffscreenArea *off_screen_areas;
} KdScreenInfo;
typedef struct _KdCardFuncs {
diff --git a/hw/kdrive/src/koffscreen.c b/hw/kdrive/src/koffscreen.c
index 1454c4a64..65c15a284 100644
--- a/hw/kdrive/src/koffscreen.c
+++ b/hw/kdrive/src/koffscreen.c
@@ -222,12 +222,13 @@ KdOffscreenSwapOut (ScreenPtr pScreen)
KdOffscreenValidate (pScreen);
}
KdOffscreenValidate (pScreen);
+ KdOffscreenFini (pScreen);
}
void
KdOffscreenSwapIn (ScreenPtr pScreen)
{
- /* nothing to do here; page in on usage */
+ KdOffscreenInit (pScreen);
}
/* merge the next free area into this one */
@@ -248,7 +249,6 @@ KdOffscreenMerge (KdOffscreenArea *area)
void
KdOffscreenFree (KdOffscreenArea *area)
{
- ScreenPtr pScreen = area->screen;
RealOffscreenArea *real_area = (RealOffscreenArea *) area;
RealOffscreenArea *next = real_area->next;
RealOffscreenArea *prev = real_area->prev;