ref: 3fb5a44bb2963f905733d39c95695a74101346a8
parent: 021e068622315d2734de044be9d1a2a75bb454a6
author: Michael Misch <michealmisch1985@gmail.com>
date: Sat Sep 5 16:37:15 PDT 2020
Clean up a few things, start working on fixing errors
--- a/mkfile
+++ b/mkfile
@@ -3,11 +3,10 @@
BIN=/usr/local/bin
TARG=x9dev
-CC=cc
+
OFILES=\
x9dev.$O\
plan9port.$O\
- shadowfb.$O\
# Xext \
shape.$O\
xres.$O\
@@ -173,6 +172,9 @@
mitri.$O\
picture.$O\
render.$O\
+# xfree86 \
+ shadowfb.$O\
+ sfbmodule.$O\
HFILES=\
dix-config.h
@@ -182,14 +184,12 @@
CFLAGS=-c -D_POSIX_SOURCE -D_BSD_EXTENSION -D_SUSV2_SOURCE -DSHADOWFB \
-DHAVE_DIX_CONFIG_H -DPLAN9 -DT$objtype -I. -I../../include \
-I../../fb -I../../mi -I../../miext/damage -I../../miext/shadow -I../../randr \
- -I../../render -I../../Xext -I../../Xi \
- -I/opt/X11/include -I/opt/X11/include/pixman-1 \
- -I/opt/X11/include/xorg \
- -I/Users/halfwit/Library/Plan9/include #-DDEBUG
+ -I../../render -I../../Xext -I../../Xi -I../xfree86/shadow \
+ -I/usr/local/include -I/usr/local/plan9 \
+ -I/usr/local/include/pixman-1
x9dev.$O: x9dev.c keymap.h x9dev.h
plan9port.$O: plan9port.c x9dev.h
-shadowfb.$O: sfbmodule.c shadowfb.h
%.$O: ../../Xext/%.c
$CC $CFLAGS -I../xfree86/dixmods/extmod ../../Xext/$stem.c
@@ -220,4 +220,7 @@
%.$O: ../../render/%.c
$CC $CFLAGS ../../render/$stem.c
+
+%.$O: ../xfree86/shadowfb/%.c
+ $CC $CFLAGS ../xfree86/shadowfb/$stem.c
--- a/shadowfb.c
+++ /dev/null
@@ -1,171 +1,0 @@
-/*
- Copyright (C) 1999. The XFree86 Project Inc.
- Copyright 2014 Red Hat, Inc.
-
- Written by Mark Vojkovich (mvojkovi@ucsd.edu)
- Pre-fb-write callbacks and RENDER support - Nolan Leake (nolan@vmware.com)
-*/
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-//#include "misc.h"
-#include "pixmapstr.h"
-#include "input.h"
-#include <X11/fonts/font.h>
-#include "mi.h"
-#include "scrnintstr.h"
-#include "windowstr.h"
-#include "gcstruct.h"
-#include "dixfontstr.h"
-#include <X11/fonts/fontstruct.h>
-#include "xf86.h"
-#include "xf86str.h"
-#include "shadowfb.h"
-
-#include "picturestr.h"
-
-static Bool ShadowCloseScreen(ScreenPtr pScreen);
-static Bool ShadowCreateRootWindow(WindowPtr pWin);
-
-typedef struct {
- ScrnInfoPtr pScrn;
- RefreshAreaFuncPtr preRefresh;
- RefreshAreaFuncPtr postRefresh;
- CloseScreenProcPtr CloseScreen;
- CreateWindowProcPtr CreateWindow;
-} ShadowScreenRec, *ShadowScreenPtr;
-
-static DevPrivateKeyRec ShadowScreenKeyRec;
-
-static ShadowScreenPtr
-shadowfbGetScreenPrivate(ScreenPtr pScreen)
-{
- return dixLookupPrivate(&(pScreen)->devPrivates, &ShadowScreenKeyRec);
-}
-
-Bool
-ShadowFBInit2(ScreenPtr pScreen,
- RefreshAreaFuncPtr preRefreshArea,
- RefreshAreaFuncPtr postRefreshArea)
-{
- ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
- ShadowScreenPtr pPriv;
-
- if (!preRefreshArea && !postRefreshArea)
- return FALSE;
-
- if (!dixRegisterPrivateKey(&ShadowScreenKeyRec, PRIVATE_SCREEN, 0))
- return FALSE;
-
- if (!(pPriv = (ShadowScreenPtr) malloc(sizeof(ShadowScreenRec))))
- return FALSE;
-
- dixSetPrivate(&pScreen->devPrivates, &ShadowScreenKeyRec, pPriv);
-
- pPriv->pScrn = pScrn;
- pPriv->preRefresh = preRefreshArea;
- pPriv->postRefresh = postRefreshArea;
-
- pPriv->CloseScreen = pScreen->CloseScreen;
- pPriv->CreateWindow = pScreen->CreateWindow;
-
- pScreen->CloseScreen = ShadowCloseScreen;
- pScreen->CreateWindow = ShadowCreateRootWindow;
-
- return TRUE;
-}
-
-Bool
-ShadowFBInit(ScreenPtr pScreen, RefreshAreaFuncPtr refreshArea)
-{
- return ShadowFBInit2(pScreen, NULL, refreshArea);
-}
-
-/*
- * Note that we don't do DamageEmpty, or indeed look at the region inside the
- * DamagePtr at all. This is an optimization, believe it or not. The
- * incoming RegionPtr is the new damage, and if we were to empty the region
- * miext/damage would just have to waste time reallocating and re-unioning
- * it every time, whereas if we leave it around the union gets fast-pathed
- * away.
- */
-
-static void
-shadowfbReportPre(DamagePtr damage, RegionPtr reg, void *closure)
-{
- ShadowScreenPtr pPriv = closure;
-
- if (!pPriv->pScrn->vtSema)
- return;
-
- pPriv->preRefresh(pPriv->pScrn, RegionNumRects(reg), RegionRects(reg));
-}
-
-static void
-shadowfbReportPost(DamagePtr damage, RegionPtr reg, void *closure)
-{
- ShadowScreenPtr pPriv = closure;
-
- if (!pPriv->pScrn->vtSema)
- return;
-
- pPriv->postRefresh(pPriv->pScrn, RegionNumRects(reg), RegionRects(reg));
-}
-
-static Bool
-ShadowCreateRootWindow(WindowPtr pWin)
-{
- Bool ret;
- ScreenPtr pScreen = pWin->drawable.pScreen;
- ShadowScreenPtr pPriv = shadowfbGetScreenPrivate(pScreen);
-
- /* paranoia */
- if (pWin != pScreen->root)
- ErrorF("ShadowCreateRootWindow called unexpectedly\n");
-
- /* call down, but don't hook ourselves back in; we know the first time
- * we're called it's for the root window.
- */
- pScreen->CreateWindow = pPriv->CreateWindow;
- ret = pScreen->CreateWindow(pWin);
-
- /* this might look like it leaks, but the damage code reaps listeners
- * when their drawable disappears.
- */
- if (ret) {
- DamagePtr damage;
-
- if (pPriv->preRefresh) {
- damage = DamageCreate(shadowfbReportPre, NULL,
- DamageReportRawRegion,
- TRUE, pScreen, pPriv);
- DamageRegister(&pWin->drawable, damage);
- }
-
- if (pPriv->postRefresh) {
- damage = DamageCreate(shadowfbReportPost, NULL,
- DamageReportRawRegion,
- TRUE, pScreen, pPriv);
- DamageSetReportAfterOp(damage, TRUE);
- DamageRegister(&pWin->drawable, damage);
- }
- }
-
- return ret;
-}
-
-static Bool
-ShadowCloseScreen(ScreenPtr pScreen)
-{
- ShadowScreenPtr pPriv = shadowfbGetScreenPrivate(pScreen);
-
- pScreen->CloseScreen = pPriv->CloseScreen;
-
- free(pPriv);
-
- return (*pScreen->CloseScreen) (pScreen);
-}
--- a/shadowfb.h
+++ /dev/null
@@ -1,39 +1,0 @@
-
-#ifndef _SHADOWFB_H
-#define _SHADOWFB_H
-
-#include "xf86str.h"
-
-/*
- * User defined callback function. Passed a pointer to the ScrnInfo struct,
- * the number of dirty rectangles, and a pointer to the first dirty rectangle
- * in the array.
- */
-typedef void (*RefreshAreaFuncPtr) (ScrnInfoPtr, int, BoxPtr);
-
-/*
- * ShadowFBInit initializes the shadowfb subsystem. refreshArea is a pointer
- * to a user supplied callback function. This function will be called after
- * any operation that modifies the framebuffer. The newly dirtied rectangles
- * are passed to the callback.
- *
- * Returns FALSE in the event of an error.
- */
-extern _X_EXPORT Bool
- ShadowFBInit(ScreenPtr pScreen, RefreshAreaFuncPtr refreshArea);
-
-/*
- * ShadowFBInit2 is a more featureful refinement of the original shadowfb.
- * ShadowFBInit2 allows you to specify two callbacks, one to be called
- * immediately before an operation that modifies the framebuffer, and another
- * to be called immediately after.
- *
- * Returns FALSE in the event of an error
- */
-extern _X_EXPORT Bool
-
-ShadowFBInit2(ScreenPtr pScreen,
- RefreshAreaFuncPtr preRefreshArea,
- RefreshAreaFuncPtr postRefreshArea);
-
-#endif /* _SHADOWFB_H */