[Xquartz-changes] [231] AppleSGLX/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Sat Feb 21 23:25:36 PST 2009
Revision: 231
http://trac.macosforge.org/projects/xquartz/changeset/231
Author: gstaplin at apple.com
Date: 2009-02-21 23:25:36 -0800 (Sat, 21 Feb 2009)
Log Message:
-----------
Complete the transition to __glXSendError in glxcmds.c.
Modified Paths:
--------------
AppleSGLX/trunk/apple_glx_context.c
AppleSGLX/trunk/apple_glx_context.h
AppleSGLX/trunk/glxcmds.c
Modified: AppleSGLX/trunk/apple_glx_context.c
===================================================================
--- AppleSGLX/trunk/apple_glx_context.c 2009-02-22 07:08:21 UTC (rev 230)
+++ AppleSGLX/trunk/apple_glx_context.c 2009-02-22 07:25:36 UTC (rev 231)
@@ -112,7 +112,7 @@
*/
bool apple_glx_create_context(void **ptr, Display *dpy, int screen,
const void *mode, void *sharedContext,
- int *errorptr) {
+ int *errorptr, bool *x11errorptr) {
struct apple_glx_context *ac;
struct apple_glx_context *sharedac = sharedContext;
CGLError error;
@@ -123,11 +123,13 @@
if(NULL == ac) {
*errorptr = BadAlloc;
+ *x11errorptr = true;
return true;
}
if(sharedac && !is_context_valid(sharedac)) {
*errorptr = GLXBadContext;
+ *x11errorptr = false;
return true;
}
@@ -155,8 +157,10 @@
if(kCGLBadMatch == error) {
*errorptr = BadMatch;
+ *x11errorptr = true;
} else {
*errorptr = GLXBadContext;
+ *x11errorptr = false;
}
if(getenv("LIBGL_DIAGNOSTIC"))
@@ -299,8 +303,6 @@
}
/* Return true if an error occured. */
-/* TODO handle the readable GLXDrawable...? STUDY */
-
bool apple_glx_make_current_context(Display *dpy, void *oldptr, void *ptr,
GLXDrawable drawable) {
struct apple_glx_context *oldac = oldptr;
@@ -498,7 +500,8 @@
}
bool apple_glx_copy_context(void *currentptr, void *srcptr, void *destptr,
- unsigned long mask, int *errorptr) {
+ unsigned long mask, int *errorptr,
+ bool *x11errorptr) {
struct apple_glx_context *src, *dest;
CGLError err;
@@ -507,11 +510,13 @@
if(src->screen != dest->screen) {
*errorptr = BadMatch;
+ *x11errorptr = true;
return true;
}
if(dest == currentptr || dest->is_current) {
*errorptr = BadAccess;
+ *x11errorptr = true;
return true;
}
@@ -526,6 +531,7 @@
if(kCGLNoError != err) {
*errorptr = GLXBadContext;
+ *x11errorptr = false;
return true;
}
Modified: AppleSGLX/trunk/apple_glx_context.h
===================================================================
--- AppleSGLX/trunk/apple_glx_context.h 2009-02-22 07:08:21 UTC (rev 230)
+++ AppleSGLX/trunk/apple_glx_context.h 2009-02-22 07:25:36 UTC (rev 231)
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2008 Apple Inc.
+ Copyright (c) 2008, 2009 Apple Inc.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
@@ -55,7 +55,7 @@
bool apple_glx_create_context(void **ptr, Display *dpy, int screen,
const void *mode, void *sharedContext,
- int *errorptr);
+ int *errorptr, bool *x11errorptr);
void apple_glx_destroy_context(void **ptr, Display *dpy);
bool apple_glx_make_current_context(Display *dpy, void *oldptr, void *ptr, GLXDrawable drawable);
@@ -65,6 +65,7 @@
CGLContextObj *contextobj);
bool apple_glx_copy_context(void *currentptr, void *srcptr, void *destptr,
- unsigned long mask, int *errorptr);
+ unsigned long mask, int *errorptr,
+ bool *x11errorptr);
#endif /*APPLE_GLX_CONTEXT_H*/
Modified: AppleSGLX/trunk/glxcmds.c
===================================================================
--- AppleSGLX/trunk/glxcmds.c 2009-02-22 07:08:21 UTC (rev 230)
+++ AppleSGLX/trunk/glxcmds.c 2009-02-22 07:25:36 UTC (rev 231)
@@ -40,6 +40,7 @@
#include "apple_glx_context.h"
#include "apple_glx.h"
+#include "glx_error.h"
static const char __glXGLXClientVendorName[] = "SGI";
static const char __glXGLXClientVersion[] = "1.4";
@@ -358,6 +359,7 @@
__GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
const __GLcontextModes *mode;
int errorcode;
+ bool x11error;
if ( dpy == NULL )
return NULL;
@@ -379,20 +381,8 @@
mode = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
if(NULL == mode) {
- xError error;
-
- LockDisplay(dpy);
-
- error.errorCode = BadValue;
- error.resourceID = vis->visualid;
- error.sequenceNumber = dpy->request;
- error.type = X_Error;
- error.majorCode = gc->majorOpcode;
- error.minorCode = X_GLXCreateContext;
- _XError(dpy, &error);
-
- UnlockDisplay(dpy);
-
+ __glXSendError(dpy, BadValue, vis->visualid, X_GLXCreateContext,
+ true);
__glXFreeContext(gc);
return NULL;
@@ -401,18 +391,8 @@
if(apple_glx_create_context(&gc->apple, dpy, screen, mode,
shareList ? shareList->apple : NULL,
- &errorcode)) {
- xError error;
- error.errorCode = errorcode;
- error.resourceID = 0;
- error.sequenceNumber = dpy->request;
- error.type = X_Error;
- error.majorCode = gc->majorOpcode;
- error.minorCode = X_GLXCreateContext;
- _XError(dpy, &error);
-
- UnlockDisplay(dpy);
-
+ &errorcode, &x11error)) {
+ __glXSendError(dpy, errorcode, 0, X_GLXCreateContext, x11error);
__glXFreeContext(gc);
return NULL;
@@ -573,24 +553,11 @@
{
GLXContext gc = __glXGetCurrentContext();
int errorcode;
+ bool x11error;
if(apple_glx_copy_context(gc->apple, source->apple, dest->apple,
- mask, &errorcode)) {
- xError error;
-
- LockDisplay(dpy);
-
- error.errorCode = errorcode;
- error.resourceID = 0;
- error.sequenceNumber = dpy->request;
- error.type = X_Error;
- error.majorCode = gc->majorOpcode;
- error.minorCode = X_GLXCopyContext;
- _XError(dpy, &error);
-
- UnlockDisplay(dpy);
-
- return;
+ mask, &errorcode, &x11error)) {
+ __glXSendError(dpy, errorcode, 0, X_GLXCopyContext, x11error);
}
}
@@ -602,25 +569,12 @@
*/
PUBLIC Bool glXIsDirect(Display *dpy, GLXContext gc)
{
- xError error;
-
+ /*
+ * This isn't an ideal test.
+ * glXIsDirect should probably search a list of contexts.
+ */
if(NULL == gc) {
- /*
- * This isn't an ideal test.
- * glXIsDirect should probably search a list of contexts.
- */
- LockDisplay(dpy);
-
- error.errorCode = GLXBadContext;
- error.resourceID = 0;
- error.sequenceNumber = dpy->request;
- error.type = X_Error;
- error.majorCode = 0; //gc->majorOpcode;
- error.minorCode = X_GLXIsDirect;
- _XError(dpy, &error);
-
- UnlockDisplay(dpy);
-
+ __glXSendError(dpy, GLXBadContext, 0, X_GLXIsDirect, false);
return False;
}
@@ -647,7 +601,10 @@
*/
PUBLIC void glXDestroyGLXPixmap(Display *dpy, GLXPixmap glxpixmap)
{
- apple_glx_pixmap_destroy(dpy, glxpixmap);
+ if(apple_glx_pixmap_destroy(dpy, glxpixmap))
+ return; /*Success*/
+
+ __glXSendError(dpy, GLXBadPixmap, glxpixmap, X_GLXDestroyPixmap, false);
}
PUBLIC void glXSwapBuffers(Display *dpy, GLXDrawable drawable) {
@@ -661,18 +618,7 @@
if(apple_glx_is_current_drawable(gc->apple, drawable)) {
apple_glx_swap_buffers(gc->apple);
} else {
- LockDisplay(dpy);
-
- xError error;
- error.errorCode = GLXBadCurrentWindow;
- error.resourceID = 0;
- error.sequenceNumber = dpy->request;
- error.type = X_Error;
- error.majorCode = gc->majorOpcode;
- error.minorCode = X_GLXSwapBuffers;
- _XError(dpy, &error);
-
- UnlockDisplay(dpy);
+ __glXSendError(dpy, GLXBadCurrentWindow, 0, X_GLXSwapBuffers, false);
}
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/xquartz-changes/attachments/20090221/662b6ad4/attachment.html>
More information about the Xquartz-changes
mailing list