summaryrefslogtreecommitdiff
path: root/src/glx/glx_pbuffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/glx/glx_pbuffer.c')
-rw-r--r--src/glx/glx_pbuffer.c202
1 files changed, 15 insertions, 187 deletions
diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c
index 6c34cda154..52e067165c 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
+