hlfw.ca

x9dev

Download patch

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 */