[PATCH libXext] Correct XShm return values.

Peter Hutterer peter.hutterer at who-t.net
Sun Apr 10 18:11:28 PDT 2011


XShmAttach, XShmDetach, XShmPutImage do not return a Status but 0 or 1.
Though the man section for XShmAttach says "if all goes well, you will get a
non-zero status, back" this is counter to the usage of Status in Xlib
itself where 0 means Success and no-zero specifies the specific error.

XShmPixmapFormat does not return a Status but the pixmap format or 0 on
failure.

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
I know we're reluctant to change library header files but in this particular
case it should be safe. Status and Bool are both typedef'd to int in Xlib.h.
Likewise with the XShmPixmapFormat return code.

Alternatively, if this patch is considered too risky, I can just change the
man page to state that the Status return type is bogus and should
be interpreted as boolean instead.

 include/X11/extensions/XShm.h |    8 ++++----
 man/XShm.man                  |   10 +++++-----
 src/XShm.c                    |    8 ++++----
 3 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/include/X11/extensions/XShm.h b/include/X11/extensions/XShm.h
index 44eaf0b..8e534f9 100644
--- a/include/X11/extensions/XShm.h
+++ b/include/X11/extensions/XShm.h
@@ -78,17 +78,17 @@ int XShmPixmapFormat(
     Display*		/* dpy */
 );
 
-Status XShmAttach(
+Bool XShmAttach(
     Display*		/* dpy */,
     XShmSegmentInfo*	/* shminfo */
 );
 
-Status XShmDetach(
+Bool XShmDetach(
     Display*		/* dpy */,
     XShmSegmentInfo*	/* shminfo */
 );
 
-Status XShmPutImage(
+Bool XShmPutImage(
     Display*		/* dpy */,
     Drawable		/* d */,
     GC			/* gc */,
@@ -102,7 +102,7 @@ Status XShmPutImage(
     Bool		/* send_event */
 );
 
-Status XShmGetImage(
+Bool XShmGetImage(
     Display*		/* dpy */,
     Drawable		/* d */,
     XImage*		/* image */,
diff --git a/man/XShm.man b/man/XShm.man
index 4309461..f459ce1 100644
--- a/man/XShm.man
+++ b/man/XShm.man
@@ -70,14 +70,14 @@ Bool XShmQueryVersion(
 	int *major, *minor;
 	Bool *pixmaps);
 .LP
-Status XShmPixmapFormat(
+int XShmPixmapFormat(
 	Display *display);
 .LP
-Status XShmAttach(
+Bool XShmAttach(
 	Display *display;
 	XShmSegmentInfo *shminfo);
 .LP
-Status XShmDetach(
+Bool XShmDetach(
 	Display *display;
 	XShmSegmentInfo *shminfo);
 
@@ -91,7 +91,7 @@ XImage *XShmCreateImage (
 	XShmSegmentInfo *shminfo;
 	unsigned int width, height);
 .LP
-Status XShmPutImage(
+Bool XShmPutImage(
 	Display *display;
 	Drawable d;
 	GC gc;
@@ -100,7 +100,7 @@ Status XShmPutImage(
 	unsigned int width, height;
 	bool send_event);
 .LP
-Status XShmGetImage (
+Bool XShmGetImage (
 	Display *display;
 	Drawable d;
 	XImage *image;
diff --git a/src/XShm.c b/src/XShm.c
index fc18860..af3e71b 100644
--- a/src/XShm.c
+++ b/src/XShm.c
@@ -226,7 +226,7 @@ int XShmPixmapFormat(Display *dpy)
 }
 
 
-Status XShmAttach(Display *dpy, XShmSegmentInfo *shminfo)
+Bool XShmAttach(Display *dpy, XShmSegmentInfo *shminfo)
 {
     XExtDisplayInfo *info = find_display (dpy);
     register xShmAttachReq *req;
@@ -246,7 +246,7 @@ Status XShmAttach(Display *dpy, XShmSegmentInfo *shminfo)
 }
 
 
-Status XShmDetach(Display *dpy, XShmSegmentInfo *shminfo)
+Bool XShmDetach(Display *dpy, XShmSegmentInfo *shminfo)
 {
     XExtDisplayInfo *info = find_display (dpy);
     register xShmDetachReq *req;
@@ -315,7 +315,7 @@ XImage *XShmCreateImage (
     return image;
 }
 
-Status XShmPutImage (
+Bool XShmPutImage (
     register Display *dpy,
     Drawable d,
     GC gc,
@@ -357,7 +357,7 @@ Status XShmPutImage (
 }
 
 
-Status XShmGetImage(
+Bool XShmGetImage(
     register Display *dpy,
     Drawable d,
     XImage *image,
-- 
1.7.4.2



More information about the xorg-devel mailing list