summaryrefslogtreecommitdiff
path: root/hw/kdrive/src/kdrive.h
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2003-11-17 22:09:12 +0000
committerKeith Packard <keithp@keithp.com>2003-11-17 22:09:12 +0000
commit003e87717cfe378261ed1a1e7bcb2cf0d200b1b8 (patch)
tree54a77776834ff75a6822c684b787e8c694546653 /hw/kdrive/src/kdrive.h
parentacd200770513ad03dd3f4bdc7448edfd69b1ff9d (diff)
Recompute winSize/borderSize to fix them when changing redirection.
Sufficient, but not always necessary. Add borderClip to damage on creation so that clients needn't guess. Fix API to FbDots functions to make PolyPoint work with screen_x/screen_y offsets Add debugging code to make sure no pictures are left pointing at freed pixmaps. "Can't" happen, but it did once. Change KdOffscreenArea structure to eliminate separate private structure, eliminate the ScreenPtr, change from doubly linked to singly linked list. Don't damage BackgroundNone windows on PW_BACKGROUND. Re-clip damage to borderClip in DamageSubtract.
Diffstat (limited to 'hw/kdrive/src/kdrive.h')
-rw-r--r--hw/kdrive/src/kdrive.h35
1 files changed, 25 insertions, 10 deletions
diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h
index 8969e6f83..0fb991ec6 100644
--- a/hw/kdrive/src/kdrive.h
+++ b/hw/kdrive/src/kdrive.h
@@ -99,6 +99,28 @@ typedef struct _KdFrameBuffer {
void *closure;
} KdFrameBuffer;
+typedef struct _KdOffscreenArea KdOffscreenArea;
+
+typedef void (*KdOffscreenSaveProc) (ScreenPtr pScreen, KdOffscreenArea *area);
+
+typedef enum _KdOffscreenState {
+ KdOffscreenAvail,
+ KdOffscreenRemovable,
+ KdOffscreenLocked,
+} KdOffscreenState;
+
+struct _KdOffscreenArea {
+ int offset;
+ int size;
+ pointer privData;
+
+ KdOffscreenSaveProc save;
+
+ KdOffscreenState state;
+
+ KdOffscreenArea *next;
+};
+
#define RR_Rotate_All (RR_Rotate_0|RR_Rotate_90|RR_Rotate_180|RR_Rotate_270)
#define RR_Reflect_All (RR_Reflect_X|RR_Reflect_Y)
@@ -122,7 +144,6 @@ typedef struct _KdScreenInfo {
CARD8 *memory_base;
unsigned long memory_size;
unsigned long off_screen_base;
- struct _RealOffscreenArea *off_screen_areas;
} KdScreenInfo;
typedef struct _KdCardFuncs {
@@ -169,6 +190,8 @@ typedef struct {
int dpmsState;
+ KdOffscreenArea *off_screen_areas;
+
ColormapPtr pInstalledmap[KD_MAX_FB]; /* current colormap */
xColorItem systemPalette[KD_MAX_PSEUDO_SIZE];/* saved windows colors */
@@ -267,13 +290,6 @@ typedef struct _KdMonitorTiming {
KdSyncPolarity vpol; /* polarity */
} KdMonitorTiming;
-typedef struct _KdOffscreenArea {
- ScreenPtr screen;
- int offset;
- int size;
- pointer privData;
-} KdOffscreenArea;
-
extern const KdMonitorTiming kdMonitorTimings[];
extern const int kdNumMonitorTimings;
@@ -800,7 +816,6 @@ int
KdFrameBufferSize (CARD8 *base, int max);
/* koffscreen.c */
-typedef void (*KdOffscreenSaveProc) (KdOffscreenArea *area);
Bool
KdOffscreenInit (ScreenPtr pScreen);
@@ -812,7 +827,7 @@ KdOffscreenAlloc (ScreenPtr pScreen, int size, int align,
pointer privData);
void
-KdOffscreenFree (KdOffscreenArea *area);
+KdOffscreenFree (ScreenPtr pScreen, KdOffscreenArea *area);
void
KdOffscreenSwapOut (ScreenPtr pScreen);