summaryrefslogtreecommitdiff
path: root/hw/xgl/egl/xegl.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xgl/egl/xegl.c')
-rw-r--r--hw/xgl/egl/xegl.c303
1 files changed, 0 insertions, 303 deletions
diff --git a/hw/xgl/egl/xegl.c b/hw/xgl/egl/xegl.c
deleted file mode 100644
index 1cf615bb6..000000000
--- a/hw/xgl/egl/xegl.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * Copyright © 2004 David Reveman
- *
- * 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
- * David Reveman not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- * David Reveman makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * DAVID REVEMAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
- * NO EVENT SHALL DAVID REVEMAN 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 <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <signal.h>
-#include <sys/ioctl.h>
-#include <errno.h>
-#include <math.h>
-
-#include <glitz-egl.h>
-
-#include "inputstr.h"
-#include "cursorstr.h"
-#include "mipointer.h"
-
-#include "xegl.h"
-
-#define XEGL_DEFAULT_SCREEN_WIDTH 800
-#define XEGL_DEFAULT_SCREEN_HEIGHT 600
-
-DevPrivateKey xeglScreenPrivateKey = &xeglScreenPrivateKey;
-
-#define XEGL_GET_SCREEN_PRIV(pScreen) ((xeglScreenPtr) \
- dixLookupPrivate(&(pScreen)->devPrivates, xeglScreenPrivateKey))
-
-#define XEGL_SET_SCREEN_PRIV(pScreen, v) \
- dixSetPrivate(&(pScreen)->devPrivates, xeglScreenPrivateKey, v)
-
-#define XEGL_SCREEN_PRIV(pScreen) \
- xeglScreenPtr pScreenPriv = XEGL_GET_SCREEN_PRIV (pScreen)
-
-static EGLDisplay eDisplay;
-static EGLScreenMESA eScreen;
-static ScreenPtr currentScreen = 0;
-static Bool softCursor = TRUE;
-
-extern miPointerScreenFuncRec kdPointerScreenFuncs;
-
-static Bool
-xeglAllocatePrivates (ScreenPtr pScreen)
-{
- xeglScreenPtr pScreenPriv;
-
- pScreenPriv = xalloc (sizeof (xeglScreenRec));
- if (!pScreenPriv)
- return FALSE;
-
- XEGL_SET_SCREEN_PRIV (pScreen, pScreenPriv);
-
- return TRUE;
-}
-
-static Bool
-xeglCloseScreen (int index,
- ScreenPtr pScreen)
-{
- glitz_drawable_t *drawable;
-
- XEGL_SCREEN_PRIV (pScreen);
-
- drawable = XGL_GET_SCREEN_PRIV (pScreen)->drawable;
- if (drawable)
- glitz_drawable_destroy (drawable);
-
- xglClearVisualTypes ();
-
- XGL_SCREEN_UNWRAP (CloseScreen);
- xfree (pScreenPriv);
-
- return (*pScreen->CloseScreen) (index, pScreen);
-}
-
-static Bool
-xeglScreenInit (int index,
- ScreenPtr pScreen,
- int argc,
- char **argv)
-{
- EGLSurface eSurface;
- EGLModeMESA mode;
- int count;
- xeglScreenPtr pScreenPriv;
- glitz_drawable_format_t *format;
- glitz_drawable_t *drawable;
- EGLint screenAttribs[] = {
- EGL_WIDTH, 1024,
- EGL_HEIGHT, 768,
- EGL_NONE
- };
-
- if (xglScreenInfo.width == 0 || xglScreenInfo.height == 0)
- {
- xglScreenInfo.width = XEGL_DEFAULT_SCREEN_WIDTH;
- xglScreenInfo.height = XEGL_DEFAULT_SCREEN_HEIGHT;
-
- }
-
- screenAttribs[1] = xglScreenInfo.width;
- screenAttribs[3] = xglScreenInfo.height;
-
- format = xglVisuals[0].format;
-
- if (!xeglAllocatePrivates (pScreen))
- return FALSE;
-
- currentScreen = pScreen;
-
- pScreenPriv = XEGL_GET_SCREEN_PRIV (pScreen);
-
- if (xglScreenInfo.width == 0 || xglScreenInfo.height == 0)
- {
- xglScreenInfo.width = XEGL_DEFAULT_SCREEN_WIDTH;
- xglScreenInfo.height = XEGL_DEFAULT_SCREEN_HEIGHT;
- }
-
- eglGetModesMESA (eDisplay, eScreen, &mode, 1, &count);
-
- eSurface = eglCreateScreenSurfaceMESA (eDisplay, format->id, screenAttribs);
- if (eSurface == EGL_NO_SURFACE)
- {
- ErrorF ("failed to create screen surface\n");
- return FALSE;
- }
-
- eglShowScreenSurfaceMESA (eDisplay, eScreen, eSurface, mode);
-
- drawable = glitz_egl_create_surface (eDisplay, eScreen, format, eSurface,
- xglScreenInfo.width,
- xglScreenInfo.height);
- if (!drawable)
- {
- ErrorF ("[%d] couldn't create glitz drawable for window\n", index);
- return FALSE;
- }
-
- xglScreenInfo.drawable = drawable;
-
- if (!xglScreenInit (pScreen))
- return FALSE;
-
-#ifdef GLXEXT
- if (!xglInitVisualConfigs (pScreen))
- return FALSE;
-#endif
-
- XGL_SCREEN_WRAP (CloseScreen, xeglCloseScreen);
-
- miDCInitialize (pScreen, &kdPointerScreenFuncs);
- miCreateDefColormap(pScreen);
-
- if (!xglFinishScreenInit (pScreen))
- return FALSE;
-
- return TRUE;
-}
-
-void
-xeglInitOutput (ScreenInfo *pScreenInfo,
- int argc,
- char **argv)
-{
- glitz_drawable_format_t *format, templ;
- int i, maj, min, count;
- unsigned long mask;
-
- xglSetPixmapFormats (pScreenInfo);
-
- if (!eDisplay)
- {
- eDisplay = eglGetDisplay (":0");
-
- if (!eglInitialize (eDisplay, &maj, &min))
- FatalError ("can't open display");
-
- eglGetScreensMESA (eDisplay, &eScreen, 1, &count);
- }
-
- templ.samples = 1;
- templ.doublebuffer = 1;
- templ.color.alpha_size = 8;
-
- mask = GLITZ_FORMAT_SAMPLES_MASK;
-
- format = glitz_egl_find_window_config (eDisplay, eScreen,
- mask, &templ, 0);
-
- if (!format)
- FatalError ("no visual format found");
-
- xglSetVisualTypesAndMasks (pScreenInfo, format, (1 << TrueColor));
-
- xglInitVisuals (pScreenInfo);
-
- AddScreen (xeglScreenInit, argc, argv);
-}
-
-static void
-xeglBlockHandler (pointer blockData,
- OSTimePtr pTimeout,
- pointer pReadMask)
-{
- XGL_SCREEN_PRIV (currentScreen);
-
- if (!xglSyncSurface (&pScreenPriv->pScreenPixmap->drawable))
- FatalError (XGL_SW_FAILURE_STRING);
-
- glitz_surface_flush (pScreenPriv->surface);
- glitz_drawable_finish (pScreenPriv->drawable);
-}
-
-void
-xeglInitInput (int argc,
- char **argv)
-{
- eglInitInput (&LinuxEvdevMouseFuncs, &LinuxEvdevKeyboardFuncs);
- RegisterBlockAndWakeupHandlers (xeglBlockHandler, KdWakeupHandler, NULL);
-}
-
-Bool
-xeglLegalModifier (unsigned int key,
- DeviceIntPtr pDev)
-{
- return KdLegalModifier (key, pDev);
-}
-
-void
-xeglProcessInputEvents (void)
-{
- KdProcessInputEvents ();
-}
-
-void
-xeglUseMsg (void)
-{
- ErrorF ("-screen WIDTH[/WIDTHMM]xHEIGHT[/HEIGHTMM] "
- "specify screen characteristics\n");
- ErrorF ("-softcursor force software cursor\n");
-}
-
-int
-xeglProcessArgument (int argc,
- char **argv,
- int i)
-{
- if (!strcmp (argv[i], "-screen"))
- {
- if ((i + 1) < argc)
- {
- xglParseScreen (argv[i + 1]);
- }
- else
- return 1;
-
- return 2;
- }
- else if (!strcmp (argv[i], "-softcursor"))
- {
- softCursor = TRUE;
- return 1;
- }
-
- return 0;
-}
-
-void
-xeglAbort (void)
-{
-}
-
-void
-xeglGiveUp (void)
-{
- AbortDDX ();
-}
-
-void
-xeglOsVendorInit (void)
-{
-}