diff options
author | Ori Bernstein <rand.chars@gmail.com> | 2006-08-23 00:26:01 -0500 |
---|---|---|
committer | Ori Bernstein <ori@localhost.(none)> | 2006-08-23 00:26:01 -0500 |
commit | 77d94b5f4928c3ccaf19ca69327fa931457dd84c (patch) | |
tree | 3352aa9d4082167c37df2a4819e3aeea81ac2b19 | |
parent | 304697e00b03f4c2c12988d4f4bc4e66d0e09a08 (diff) |
Made it compile, still need to finish implementing much code
-rw-r--r-- | hw/xnest/Window.c | 4 | ||||
-rw-r--r-- | hw/xscreen/Makefile.am | 8 | ||||
-rw-r--r-- | hw/xscreen/xs-color.h | 3 | ||||
-rw-r--r-- | hw/xscreen/xs-event.c | 2 | ||||
-rw-r--r-- | hw/xscreen/xs-font.c | 76 | ||||
-rw-r--r-- | hw/xscreen/xs-gc.h | 6 | ||||
-rw-r--r-- | hw/xscreen/xs-gcops.c | 2 | ||||
-rw-r--r-- | hw/xscreen/xs-gcops.h | 3 | ||||
-rw-r--r-- | hw/xscreen/xs-pixmap.c | 2 | ||||
-rw-r--r-- | hw/xscreen/xs-screen.c | 2 | ||||
-rw-r--r-- | hw/xscreen/xs-window.c | 60 |
11 files changed, 150 insertions, 18 deletions
diff --git a/hw/xnest/Window.c b/hw/xnest/Window.c index 3ed2a2cf6..ed52bbe9c 100644 --- a/hw/xnest/Window.c +++ b/hw/xnest/Window.c @@ -14,8 +14,8 @@ */ /* $XFree86: xc/programs/Xserver/hw/xnest/Window.c,v 3.7 2001/10/28 03:34:11 tsi Exp $ */ -#ifdef HAVE_XNEST_CONFIG_H -#include <xnest-config.h> +#ifdef HAVE_XS_CONFIG_H +#include <xs-config.h> #endif #include <X11/Xmd.h> diff --git a/hw/xscreen/Makefile.am b/hw/xscreen/Makefile.am index d6fc20e17..14a7e1bfc 100644 --- a/hw/xscreen/Makefile.am +++ b/hw/xscreen/Makefile.am @@ -1,7 +1,11 @@ bin_PROGRAMS = Xscreen -Xscreen_SOURCES = xs-event.c \ +Xscreen_SOURCES = xs-color.h \ + xs-color.c \ + xs-event.c \ xs-event.h \ + xs-font.h \ + xs-font.c \ xs-gc.c \ xs-gcops.c \ xs-gcops.h \ @@ -13,6 +17,8 @@ Xscreen_SOURCES = xs-event.c \ xs-pixmap.h \ xs-screen.c \ xs-screen.h \ + xs-visual.h \ + xs-visual.c \ xs-window.c \ xs-window.h \ $(top_srcdir)/Xext/dpmsstubs.c \ diff --git a/hw/xscreen/xs-color.h b/hw/xscreen/xs-color.h index e3c5be14b..6d6714cec 100644 --- a/hw/xscreen/xs-color.h +++ b/hw/xscreen/xs-color.h @@ -1,6 +1,9 @@ #ifndef _XS_COLOR_INCL_ #define _XS_COLOR_INCL_ +/* Borrowed from Xnest. Seems Xnest pulled it from it's ass. Will use for now*/ +#define MAXCMAPS 1 + typedef struct { XCBCOLORMAP colormap; } XscreenPrivColormap; diff --git a/hw/xscreen/xs-event.c b/hw/xscreen/xs-event.c index e835f7b09..16665dabd 100644 --- a/hw/xscreen/xs-event.c +++ b/hw/xscreen/xs-event.c @@ -1,4 +1,4 @@ -#ifdef HAVE_XNEST_CONFIG_H +#ifdef HAVE_XS_CONFIG_H #include <xs-config.h> #endif #include <X11/Xmd.h> diff --git a/hw/xscreen/xs-font.c b/hw/xscreen/xs-font.c index 8b1378917..1e8301375 100644 --- a/hw/xscreen/xs-font.c +++ b/hw/xscreen/xs-font.c @@ -1 +1,77 @@ +#ifdef HAVE_XS_CONFIG_H +#include <xs-config.h> +#endif +#include <X11/Xmd.h> +#include <X11/XCB/xcb.h> +#include <X11/XCB/xcb_aux.h> +#include <X11/XCB/xproto.h> +#include <X11/XCB/xcb_image.h> +#include "regionstr.h" +#include <X11/fonts/fontstruct.h> +#include "gcstruct.h" +#include "colormapst.h" +#include "scrnintstr.h" +#include "windowstr.h" +#include "pixmapstr.h" +#include "region.h" +#include "servermd.h" + +#include "xs-globals.h" +#include "xs-font.h" + +Bool xsRealizeFont(ScreenPtr pScreen, FontPtr pFont) +{ + pointer priv; + XCBFONT font; + XCBATOM name_atom, value_atom; + + int nprops; + FontPropPtr props; + int i; + char *name; + + FontSetPrivate(pFont, xsFontPrivateIndex, NULL); + + name_atom.xid = MakeAtom("FONT", 4, TRUE); + value_atom.xid = 0L; + + nprops = pFont->info.nprops; + props = pFont->info.props; + + for (i = 0; i < nprops; i++) { + if (props[i].name == name_atom.xid) { + value_atom.xid = props[i].value; + break; + } + } + if (!value_atom.xid) + return FALSE; + + name = NameForAtom(value_atom.xid); + if (!name) + return FALSE; + + priv = xalloc(sizeof(XscreenPrivFont)); + FontSetPrivate(pFont, xsFontPrivateIndex, priv); + + font = XCBFONTNew(xsConnection); + XS_FONT_PRIV(pFont)->font = font; + XCBOpenFont(xsConnection, font, strlen(name), name); + + if (!XS_FONT_PRIV(pFont)->font.xid) + return FALSE; + + return TRUE; +} + +Bool xsUnrealizeFont(ScreenPtr pScreen, FontPtr pFont) +{ + if (XS_FONT_PRIV(pFont)) { + if (XS_FONT_PRIV(pFont)->font.xid) + XCBCloseFont(xsConnection, XS_FONT_PRIV(pFont)->font); + xfree(XS_FONT_PRIV(pFont)); + FontSetPrivate(pFont, xsFontPrivateIndex, NULL); + } + return TRUE; +} diff --git a/hw/xscreen/xs-gc.h b/hw/xscreen/xs-gc.h index bbb056005..55521d074 100644 --- a/hw/xscreen/xs-gc.h +++ b/hw/xscreen/xs-gc.h @@ -1,5 +1,5 @@ -#ifndef XNESTGC_H -#define XNESTGC_H +#ifndef _XS_GC_INCL_ +#define _XS_GC_INCL_ typedef struct { XCBGCONTEXT gc; @@ -20,4 +20,4 @@ void xsDestroyClip(GCPtr pGC); void xsDestroyClipHelper(GCPtr pGC); void xsCopyClip(GCPtr pGCDst, GCPtr pGCSrc); -#endif /* XNESTGC_H */ +#endif diff --git a/hw/xscreen/xs-gcops.c b/hw/xscreen/xs-gcops.c index 0f08fa411..bb4874988 100644 --- a/hw/xscreen/xs-gcops.c +++ b/hw/xscreen/xs-gcops.c @@ -1,4 +1,4 @@ -#ifdef HAVE_XNEST_CONFIG_H +#ifdef HAVE_XS_CONFIG_H #include <xs-config.h> #endif #include <X11/Xmd.h> diff --git a/hw/xscreen/xs-gcops.h b/hw/xscreen/xs-gcops.h index 819d4e02d..7befc38c7 100644 --- a/hw/xscreen/xs-gcops.h +++ b/hw/xscreen/xs-gcops.h @@ -1,6 +1,6 @@ -/* $Xorg: GCOps.h,v 1.3 2000/08/17 19:53:28 cpqbld Exp $ */ /* +Copyright 2006 by Ori Bernstein Copyright 1993 by Davor Matic Permission to use, copy, modify, distribute, and sell this software @@ -12,7 +12,6 @@ the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. */ -/* $XFree86$ */ #ifndef XNESTGCOPS_H #define XNESTGCOPS_H diff --git a/hw/xscreen/xs-pixmap.c b/hw/xscreen/xs-pixmap.c index bb55ec8de..cd9ce241a 100644 --- a/hw/xscreen/xs-pixmap.c +++ b/hw/xscreen/xs-pixmap.c @@ -14,7 +14,7 @@ is" without express or implied warranty. */ /* $XFree86: xc/programs/Xserver/hw/xs/Pixmap.c,v 3.7 2003/07/16 01:38:51 dawes Exp $ */ -#ifdef HAVE_XNEST_CONFIG_H +#ifdef HAVE_XS_CONFIG_H #include <xs-config.h> #endif diff --git a/hw/xscreen/xs-screen.c b/hw/xscreen/xs-screen.c index 3ce701878..101728ac0 100644 --- a/hw/xscreen/xs-screen.c +++ b/hw/xscreen/xs-screen.c @@ -108,6 +108,6 @@ static void xsScreenSetProcs(ScreenPtr pScreen) Bool xsOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[]) { - xsSetScreenProcs(pScreen); + xsScreenSetProcs(pScreen); return TRUE; } diff --git a/hw/xscreen/xs-window.c b/hw/xscreen/xs-window.c index 95f2e6799..353976454 100644 --- a/hw/xscreen/xs-window.c +++ b/hw/xscreen/xs-window.c @@ -1,4 +1,4 @@ -#ifdef HAVE_XNEST_CONFIG_H +#ifdef HAVE_XS_CONFIG_H #include <xs-config.h> #endif #include <X11/Xmd.h> @@ -58,14 +58,62 @@ WindowPtr xsGetWindow(XCBWINDOW window) return wm.pWin; } +/** + * Removes a window from the window tree, rearranging the siblings. + **/ +void xsRemoveWindow(WindowPtr pWin) +{ + WindowPtr pPrev; + WindowPtr pNext; + WindowPtr pParent; + + pPrev = pWin->prevSib; + pNext = pWin->nextSib; + pParent = pWin->parent; + if (pPrev) + pPrev->nextSib = pNext; + else + pParent->firstChild = pNext; + + if (pNext) + pNext->prevSib = pPrev; + else + pWin->lastChild = pPrev; + + pWin->nextSib = NULL; + pWin->prevSib = NULL; +} /** * Inserts a window into the window tree. * pParent must NOT be NULL, ie: this must NOT be called on the root window. **/ -void xsInstallWindow(WindowPtr pWin, WindowPtr pParent) +void xsInsertWindow(WindowPtr pWin, WindowPtr pParent) { - + WindowPtr pPrev; + + pPrev = pParent->firstChild;// RealChildHead(pParent); + pWin->parent = pParent; + if (pPrev) + { + pWin->nextSib = pPrev->nextSib; + if (pPrev->nextSib) + pPrev->nextSib->prevSib = pWin; + else + pParent->lastChild = pWin; + pPrev->nextSib = pWin; + pWin->prevSib = pPrev; + } + else + { + pWin->nextSib = pParent->firstChild; + pWin->prevSib = NullWindow; + if (pParent->firstChild) + pParent->firstChild->prevSib = pWin; + else + pParent->lastChild = pWin; + pParent->firstChild = pWin; + } } /** @@ -218,7 +266,7 @@ static void xsTrackChildren(WindowPtr pParent, CARD32 ev_mask) } else { xsRemoveWindow(pWin); } - xsInstallWindow(pParent, pWin); + xsInsertWindow(pParent, pWin); } } @@ -451,7 +499,7 @@ Bool xsChangeWindowAttributes(WindowPtr pWin, unsigned long mask) ColormapPtr pCmap; pCmap = LookupIDByType(wColormap(pWin), RT_COLORMAP); param.colormap = XS_CMAP_PRIV(pCmap)->colormap.xid; - xsSetInstalledColormapWindows(pWin->drawable.pScreen); + //xsSetInstalledColormapWindows(pWin->drawable.pScreen); } if (mask & XCBCWCursor) /* this is handeled in cursor code */ mask &= ~XCBCWCursor; @@ -479,7 +527,7 @@ void xsConfigureWindow(WindowPtr pWin, CARD32 mask) values.y = pWin->origin.y; values.width = pWin->drawable.width; values.height = pWin->drawable.height; - values.border_width = wBorder(pWin); + values.border_width = wBorderWidth(pWin); XCBAuxConfigureWindow(xsConnection, XS_WINDOW_PRIV(pWin)->window, mask, &values); |