summaryrefslogtreecommitdiff
path: root/hw/xgl/xglinit.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xgl/xglinit.c')
-rw-r--r--hw/xgl/xglinit.c332
1 files changed, 0 insertions, 332 deletions
diff --git a/hw/xgl/xglinit.c b/hw/xgl/xglinit.c
deleted file mode 100644
index f170e92f0..000000000
--- a/hw/xgl/xglinit.c
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright © 2005 Novell, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software
- * and its documentation for any purpose is hereby granted without
- * fee, provided that the above copyright notice appear in all copies
- * and that both that copyright notice and this permission notice
- * appear in supporting documentation, and that the name of
- * Novell, Inc. not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- * Novell, Inc. makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * NOVELL, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
- * NO EVENT SHALL NOVELL, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
- * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: David Reveman <davidr@novell.com>
- */
-
-#include "xgl.h"
-#include "xglglx.h"
-#include "micmap.h"
-#include "mipointer.h"
-#include "fb.h"
-
-#ifdef XGL_MODULAR
-#include <dlfcn.h>
-#endif
-
-#define DEFAULT_DDX_MODULE_NAME "xglx"
-
-static char *ddxModuleName = DEFAULT_DDX_MODULE_NAME;
-
-xglScreenInfoRec xglScreenInfo = {
- NULL, 0, 0, 0, 0, 0,
- DEFAULT_GEOMETRY_DATA_TYPE,
- DEFAULT_GEOMETRY_USAGE,
- FALSE,
- XGL_DEFAULT_PBO_MASK,
- FALSE,
- {
- { FALSE, FALSE, { 0, 0, 0, 0 } },
- { FALSE, FALSE, { 0, 0, 0, 0 } },
- { FALSE, FALSE, { 0, 0, 0, 0 } },
- { FALSE, FALSE, { 0, 0, 0, 0 } }
- }
-};
-
-#ifdef GLXEXT
-static Bool loadGlx = TRUE;
-
-#ifndef NGLXEXTLOG
-static char *glxExtLogFile = 0;
-#endif
-
-#endif
-
-typedef struct _xglDDXFunc {
- void (*initOutput) (ScreenInfo *pScreenInfo,
- int argc,
- char **argv);
- void (*initInput) (int argc,
- char **argv);
- Bool (*legalModifier) (unsigned int key,
- DevicePtr pDev);
- void (*processInputEvents) (void);
- void (*useMsg) (void);
- int (*processArgument) (int argc,
- char **argv,
- int i);
- void (*abort) (void);
- void (*giveUp) (void);
- void (*osVendorInit) (void);
-} xglDDXFuncRec;
-
-static xglDDXFuncRec __ddxFunc;
-
-#define SYMFUNC(name) ((void *) (name))
-#define SYMVAR(name) ((void *) &(name))
-
-/*
- * The following table is used to make sure that all symbols required by
- * dynamically loaded modules are present in the main program. Add more symbols
- * as needed.
- */
-
-void *symTab[] = {
- SYMFUNC (xglKbdCtrl),
- SYMFUNC (xglSetPixmapFormats),
- SYMVAR (xglVisuals),
-
- SYMFUNC (mieqEnqueue),
- SYMFUNC (mieqInit),
- SYMFUNC (mieqProcessInputEvents),
- SYMFUNC (miPointerAbsoluteCursor),
- SYMFUNC (miRegisterPointerDevice),
- SYMFUNC (miPointerWarpCursor),
- SYMFUNC (miDCInitialize),
- SYMFUNC (miPointerAbsoluteCursor),
- SYMFUNC (miPointerUpdate),
- SYMFUNC (miRegisterRedirectBorderClipProc)
-};
-
-#define SYM(ptr, name) { (void **) &(ptr), (name) }
-
-static Bool
-xglEnsureDDXModule (void)
-{
-
-#ifdef XGL_MODULAR
- static void *ddxHandle = 0;
- static Bool status = TRUE;
-
- if (!status)
- return FALSE;
-
-#ifdef GLXEXT
- /* GLX and GLcore modules must be loaded with RTLD_NOW and RTLD_LOCAL
- flags before DDX module which is linked to libGL and should be
- loaded with RTLD_GLOBAL. */
- if (loadGlx)
- {
- if (!xglLoadGLXModules ())
- FatalError ("No GLX modules loaded");
-
-#ifndef NGLXEXTLOG
- if (glxExtLogFile)
- {
- __xglGLXLogFp = fopen (glxExtLogFile, "w");
- if (!__xglGLXLogFp)
- perror ("InitOutput");
- }
- else
- __xglGLXLogFp = 0;
-#endif
-
- }
-#endif
-
- if (!ddxHandle)
- {
- xglSymbolRec sym[] = {
- SYM (__ddxFunc.initOutput, "InitOutput"),
- SYM (__ddxFunc.initInput, "InitInput"),
- SYM (__ddxFunc.legalModifier, "LegalModifier"),
- SYM (__ddxFunc.processInputEvents, "ProcessInputEvents"),
- SYM (__ddxFunc.useMsg, "ddxUseMsg"),
- SYM (__ddxFunc.processArgument, "ddxProcessArgument"),
- SYM (__ddxFunc.abort, "AbortDDX"),
- SYM (__ddxFunc.giveUp, "ddxGiveUp"),
- SYM (__ddxFunc.osVendorInit, "OsVendorInit")
- };
-
- ddxHandle = xglLoadModule (ddxModuleName, RTLD_NOW | RTLD_GLOBAL);
- if (!ddxHandle)
- return (status = FALSE);
-
- if (!xglLookupSymbols (ddxHandle, sym, sizeof (sym) / sizeof (sym[0])))
- {
- xglUnloadModule (ddxHandle);
- ddxHandle = 0;
-
- return (status = FALSE);
- }
- }
-
- return TRUE;
-#else
- return FALSE;
-#endif
-
-}
-
-void
-InitOutput (ScreenInfo *pScreenInfo,
- int argc,
- char **argv)
-{
- (void) symTab;
-
- if (!xglEnsureDDXModule ())
- FatalError ("No DDX module loaded");
-
- (*__ddxFunc.initOutput) (pScreenInfo, argc, argv);
-}
-
-Bool
-LegalModifier (unsigned int key,
- DeviceIntPtr pDev)
-{
- return (*__ddxFunc.legalModifier) (key, pDev);
-}
-
-void
-ProcessInputEvents (void)
-{
- (*__ddxFunc.processInputEvents) ();
-}
-
-void
-InitInput (int argc,
- char **argv)
-{
- if (!xglEnsureDDXModule ())
- FatalError ("No DDX module loaded");
-
- (*__ddxFunc.initInput) (argc, argv);
-}
-
-void
-ddxUseMsg (void)
-{
- ErrorF ("\nXgl usage:\n");
- ErrorF ("-ddx module specify ddx module\n");
-
-#ifdef GLXEXT
- ErrorF ("-noglx don't load glx extension\n");
-
-#ifndef NGLXEXTLOG
- ErrorF ("-glxlog file glx extension log file\n");
-#endif
-
-#endif
-
- xglUseMsg ();
-
- if (xglEnsureDDXModule ())
- (*__ddxFunc.useMsg) ();
-}
-
-int
-ddxProcessArgument (int argc,
- char **argv,
- int i)
-{
- static Bool checkDDX = FALSE;
- int skip;
-
- if (!checkDDX)
- {
- int j;
-
- for (j = i; j < argc; j++)
- {
- if (!strcmp (argv[j], "-ddx"))
- {
- if (++j < argc)
- ddxModuleName = argv[j];
- }
-
-#ifdef GLXEXT
- else if (!strcmp (argv[j], "-noglx"))
- {
- loadGlx = FALSE;
- }
-
-#ifndef NGLXEXTLOG
- else if (!strcmp (argv[j], "-glxlog"))
- {
- if (++j < argc)
- glxExtLogFile = argv[j];
- }
-#endif
-
-#endif
-
- }
- checkDDX = TRUE;
- }
-
- if (!strcmp (argv[i], "-ddx"))
- {
- if ((i + 1) < argc)
- return 2;
-
- return 1;
- }
-
-#ifdef GLXEXT
- else if (!strcmp (argv[i], "-noglx"))
- {
- return 1;
- }
-
-#ifndef NGLXEXTLOG
- else if (!strcmp (argv[i], "-glxlog"))
- {
- if ((i + 1) < argc)
- return 2;
-
- return 1;
- }
-#endif
-
-#endif
-
- skip = xglProcessArgument (argc, argv, i);
- if (skip)
- return skip;
-
- if (xglEnsureDDXModule ())
- return (*__ddxFunc.processArgument) (argc, argv, i);
-
- return 0;
-}
-
-void
-AbortDDX (void)
-{
- if (xglEnsureDDXModule ())
- (*__ddxFunc.abort) ();
-}
-
-void
-ddxGiveUp (void)
-{
- if (xglEnsureDDXModule ())
- (*__ddxFunc.giveUp) ();
-}
-
-void
-OsVendorInit (void)
-{
- if (xglEnsureDDXModule ())
- (*__ddxFunc.osVendorInit) ();
-}