summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOri Bernstein <rand.chars@gmail.com>2006-08-23 00:26:01 -0500
committerOri Bernstein <ori@localhost.(none)>2006-08-23 00:26:01 -0500
commit77d94b5f4928c3ccaf19ca69327fa931457dd84c (patch)
tree3352aa9d4082167c37df2a4819e3aeea81ac2b19
parent304697e00b03f4c2c12988d4f4bc4e66d0e09a08 (diff)
Made it compile, still need to finish implementing much code
-rw-r--r--hw/xnest/Window.c4
-rw-r--r--hw/xscreen/Makefile.am8
-rw-r--r--hw/xscreen/xs-color.h3
-rw-r--r--hw/xscreen/xs-event.c2
-rw-r--r--hw/xscreen/xs-font.c76
-rw-r--r--hw/xscreen/xs-gc.h6
-rw-r--r--hw/xscreen/xs-gcops.c2
-rw-r--r--hw/xscreen/xs-gcops.h3
-rw-r--r--hw/xscreen/xs-pixmap.c2
-rw-r--r--hw/xscreen/xs-screen.c2
-rw-r--r--hw/xscreen/xs-window.c60
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);