diff options
Diffstat (limited to 'src/glx/glx_pbuffer.c')
-rw-r--r-- | src/glx/glx_pbuffer.c | 202 |
1 files changed, 15 insertions, 187 deletions
diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c index 6c34cda1543..52e067165c8 100644 --- a/src/glx/glx_pbuffer.c +++ b/src/glx/glx_pbuffer.c @@ -37,12 +37,6 @@ #include <string.h> #include "glxextensions.h" -#ifdef GLX_USE_APPLEGL -#include <pthread.h> -#include "apple_glx_drawable.h" -#include "glx_error.h" -#endif - #define WARN_ONCE_GLX_1_3(a, b) { \ static int warned=1; \ if(warned) { \ @@ -55,19 +49,19 @@ * Emit a warning when clients use GLX 1.3 functions on pre-1.3 systems. */ static void -warn_GLX_1_3(Display * dpy, const char *function_name) +warn_GLX_1_3(Display *dpy, const char *function_name) { __GLXdisplayPrivate *priv = __glXInitialize(dpy); if (priv->minorVersion < 3) { - fprintf(stderr, - "WARNING: Application calling GLX 1.3 function \"%s\" " - "when GLX 1.3 is not supported! This is an application bug!\n", - function_name); + fprintf(stderr, + "WARNING: Application calling GLX 1.3 function \"%s\" " + "when GLX 1.3 is not supported! This is an application bug!\n", + function_name); } } -#ifndef GLX_USE_APPLEGL + /** * Change a drawable's attribute. * @@ -325,7 +319,7 @@ GetDrawableAttribute(Display * dpy, GLXDrawable drawable, } } -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING { __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL); @@ -391,7 +385,7 @@ CreateDrawable(Display * dpy, const __GLcontextModes * fbconfig, UnlockDisplay(dpy); SyncHandle(); -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING do { /* FIXME: Maybe delay __DRIdrawable creation until the drawable * is actually bound to a context... */ @@ -455,7 +449,7 @@ DestroyDrawable(Display * dpy, GLXDrawable drawable, CARD32 glxCode) UnlockDisplay(dpy); SyncHandle(); -#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) +#ifdef GLX_DIRECT_RENDERING { int screen; __GLXdisplayPrivate *const priv = __glXInitialize(dpy); @@ -558,6 +552,7 @@ CreatePbuffer(Display * dpy, const __GLcontextModes * fbconfig, return id; } + /** * Create a new pbuffer. */ @@ -571,7 +566,6 @@ glXCreateGLXPbufferSGIX(Display * dpy, GLXFBConfigSGIX config, attrib_list, GL_FALSE); } -#endif /* GLX_USE_APPLEGL */ /** * Create a new pbuffer. @@ -580,57 +574,12 @@ PUBLIC GLXPbuffer glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int *attrib_list) { int i, width, height; -#ifdef GLX_USE_APPLEGL - GLXPbuffer result; - int errorcode; -#endif width = 0; height = 0; WARN_ONCE_GLX_1_3(dpy, __func__); -#ifdef GLX_USE_APPLEGL - for (i = 0; attrib_list[i]; ++i) { - switch (attrib_list[i]) { - case GLX_PBUFFER_WIDTH: - width = attrib_list[i + 1]; - ++i; - break; - - case GLX_PBUFFER_HEIGHT: - height = attrib_list[i + 1]; - ++i; - break; - - case GLX_LARGEST_PBUFFER: - /* This is a hint we should probably handle, but how? */ - ++i; - break; - - case GLX_PRESERVED_CONTENTS: - /* The contents are always preserved with AppleSGLX with CGL. */ - ++i; - break; - - default: - return None; - } - } - - if (apple_glx_pbuffer_create(dpy, config, width, height, &errorcode, - &result)) { - /* - * apple_glx_pbuffer_create only sets the errorcode to core X11 - * errors. - */ - __glXSendError(dpy, errorcode, 0, X_GLXCreatePbuffer, true); - - return None; - } - - return result; -#else for (i = 0; attrib_list[i * 2]; i++) { switch (attrib_list[i * 2]) { case GLX_PBUFFER_WIDTH: @@ -644,7 +593,6 @@ glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int *attrib_list) return (GLXPbuffer) CreatePbuffer(dpy, (__GLcontextModes *) config, width, height, attrib_list, GL_TRUE); -#endif } @@ -654,13 +602,7 @@ glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int *attrib_list) PUBLIC void glXDestroyPbuffer(Display * dpy, GLXPbuffer pbuf) { -#ifdef GLX_USE_APPLEGL - if (apple_glx_pbuffer_destroy(dpy, pbuf)) { - __glXSendError(dpy, GLXBadPbuffer, pbuf, X_GLXDestroyPbuffer, false); - } -#else DestroyPbuffer(dpy, pbuf); -#endif } @@ -672,47 +614,10 @@ glXQueryDrawable(Display * dpy, GLXDrawable drawable, int attribute, unsigned int *value) { WARN_ONCE_GLX_1_3(dpy, __func__); -#ifdef GLX_USE_APPLEGL - Window root; - int x, y; - unsigned int width, height, bd, depth; - - if (apple_glx_pixmap_query(drawable, attribute, value)) - return; /*done */ - - if (apple_glx_pbuffer_query(drawable, attribute, value)) - return; /*done */ - - /* - * The OpenGL spec states that we should report GLXBadDrawable if - * the drawable is invalid, however doing so would require that we - * use XSetErrorHandler(), which is known to not be thread safe. - * If we use a round-trip call to validate the drawable, there could - * be a race, so instead we just opt in favor of letting the - * XGetGeometry request fail with a GetGeometry request X error - * rather than GLXBadDrawable, in what is hoped to be a rare - * case of an invalid drawable. In practice most and possibly all - * X11 apps using GLX shouldn't notice a difference. - */ - if (XGetGeometry - (dpy, drawable, &root, &x, &y, &width, &height, &bd, &depth)) { - switch (attribute) { - case GLX_WIDTH: - *value = width; - break; - - case GLX_HEIGHT: - *value = height; - break; - } - } -#else GetDrawableAttribute(dpy, drawable, attribute, value); -#endif } -#ifndef GLX_USE_APPLEGL /** * Query an attribute of a pbuffer. */ @@ -722,7 +627,7 @@ glXQueryGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX drawable, { return GetDrawableAttribute(dpy, drawable, attribute, value); } -#endif + /** * Select the event mask for a drawable. @@ -730,30 +635,12 @@ glXQueryGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX drawable, PUBLIC void glXSelectEvent(Display * dpy, GLXDrawable drawable, unsigned long mask) { -#ifdef GLX_USE_APPLEGL - XWindowAttributes xwattr; - - if (apple_glx_pbuffer_set_event_mask(drawable, mask)) - return; /*done */ - - /* - * The spec allows a window, but currently there are no valid - * events for a window, so do nothing. - */ - if (XGetWindowAttributes(dpy, drawable, &xwattr)) - return; /*done */ - /* The drawable seems to be invalid. Report an error. */ - - __glXSendError(dpy, GLXBadDrawable, drawable, - X_GLXChangeDrawableAttributes, false); -#else CARD32 attribs[2]; attribs[0] = (CARD32) GLX_EVENT_MASK; attribs[1] = (CARD32) mask; ChangeDrawableAttribute(dpy, drawable, attribs, 1); -#endif } @@ -763,26 +650,6 @@ glXSelectEvent(Display * dpy, GLXDrawable drawable, unsigned long mask) PUBLIC void glXGetSelectedEvent(Display * dpy, GLXDrawable drawable, unsigned long *mask) { -#ifdef GLX_USE_APPLEGL - XWindowAttributes xwattr; - - if (apple_glx_pbuffer_get_event_mask(drawable, mask)) - return; /*done */ - - /* - * The spec allows a window, but currently there are no valid - * events for a window, so do nothing, but set the mask to 0. - */ - if (XGetWindowAttributes(dpy, drawable, &xwattr)) { - /* The window is valid, so set the mask to 0. */ - *mask = 0; - return; /*done */ - } - /* The drawable seems to be invalid. Report an error. */ - - __glXSendError(dpy, GLXBadDrawable, drawable, X_GLXGetDrawableAttributes, - true); -#else unsigned int value; @@ -793,7 +660,6 @@ glXGetSelectedEvent(Display * dpy, GLXDrawable drawable, unsigned long *mask) GetDrawableAttribute(dpy, drawable, GLX_EVENT_MASK_SGIX, &value); *mask = value; -#endif } @@ -803,17 +669,8 @@ glXCreatePixmap(Display * dpy, GLXFBConfig config, Pixmap pixmap, { WARN_ONCE_GLX_1_3(dpy, __func__); -#ifdef GLX_USE_APPLEGL - const __GLcontextModes *modes = (const __GLcontextModes *) config; - - if (apple_glx_pixmap_create(dpy, modes->screen, pixmap, modes)) - return None; - - return pixmap; -#else return CreateDrawable(dpy, (__GLcontextModes *) config, (Drawable) pixmap, attrib_list, X_GLXCreatePixmap); -#endif } @@ -822,33 +679,9 @@ glXCreateWindow(Display * dpy, GLXFBConfig config, Window win, const int *attrib_list) { WARN_ONCE_GLX_1_3(dpy, __func__); -#ifdef GLX_USE_APPLEGL - XWindowAttributes xwattr; - XVisualInfo *visinfo; - - (void) attrib_list; /*unused according to GLX 1.4 */ - XGetWindowAttributes(dpy, win, &xwattr); - - visinfo = glXGetVisualFromFBConfig(dpy, config); - - if (NULL == visinfo) { - __glXSendError(dpy, GLXBadFBConfig, 0, X_GLXCreateWindow, false); - return None; - } - - if (visinfo->visualid != XVisualIDFromVisual(xwattr.visual)) { - __glXSendError(dpy, BadMatch, 0, X_GLXCreateWindow, true); - return None; - } - - XFree(visinfo); - - return win; -#else return CreateDrawable(dpy, (__GLcontextModes *) config, (Drawable) win, attrib_list, X_GLXCreateWindow); -#endif } @@ -856,12 +689,8 @@ PUBLIC void glXDestroyPixmap(Display * dpy, GLXPixmap pixmap) { WARN_ONCE_GLX_1_3(dpy, __func__); -#ifdef GLX_USE_APPLEGL - if (apple_glx_pixmap_destroy(dpy, pixmap)) - __glXSendError(dpy, GLXBadPixmap, pixmap, X_GLXDestroyPixmap, false); -#else + DestroyDrawable(dpy, (GLXDrawable) pixmap, X_GLXDestroyPixmap); -#endif } @@ -869,12 +698,11 @@ PUBLIC void glXDestroyWindow(Display * dpy, GLXWindow win) { WARN_ONCE_GLX_1_3(dpy, __func__); -#ifndef GLX_USE_APPLEGL + DestroyDrawable(dpy, (GLXDrawable) win, X_GLXDestroyWindow); -#endif } -#ifndef GLX_USE_APPLEGL + PUBLIC GLX_ALIAS_VOID(glXDestroyGLXPbufferSGIX, (Display * dpy, GLXPbufferSGIX pbuf), @@ -890,4 +718,4 @@ GLX_ALIAS_VOID(glXGetSelectedEventSGIX, (Display * dpy, GLXDrawable drawable, unsigned long *mask), (dpy, drawable, mask), glXGetSelectedEvent) -#endif + |