Copyright (C) 1994, Digital Equipment Corp.
UNSAFE INTERFACEM3 version of X Shared memory extension interfaceXShm ;
IMPORT X, Ctypes; CONST ShmQueryVersion = 0; ShmAttach = 1; ShmDetach = 2; ShmPutImage = 3; ShmGetImage = 4; ShmCreatePixmap = 5; CONST ShmCompletion = 0; ShmNumberEvents = ShmCompletion + 1; BadShmSeg = 0; ShmNumberErrors = BadShmSeg + 1; TYPE ShmSeg = Ctypes.unsigned_int; TYPE CompletionEvent = RECORD type: X.Int; (* of event *) serial: Ctypes.unsigned_long; (* # of last request processed by server *) send_event: X.Bool; (* true if this came frome a SendEvent request *) display : X.DisplayStar; (* Display the event was read from *) drawable : X.Drawable; (* drawable of request *) major_code: X.Int; (* ShmReqCode *) minor_code: X.Int; (* X_ShmPutImage *) shmseg : ShmSeg; (* the ShmSeg used in the request *) offset: Ctypes.unsigned_long; (* the offset into ShmSeg used in the request *) END; CompletionEventStar = UNTRACED REF CompletionEvent; TYPE SegmentInfo = RECORD shmseg : ShmSeg; (* resource id *) shmid : X.Int := -1; (* kernel id *) shmaddr: Ctypes.char_star := NIL; (* address in client *) readOnly: X.Bool := X.False; (* how the server should attach it *) END; SegmentInfoStar = UNTRACED REF SegmentInfo; <* EXTERNAL XShmQueryExtension *> PROCEDURE QueryExtension (dpy: X.DisplayStar): X.Bool RAISES {X.Error}; <* EXTERNAL XShmGetEventBase *> PROCEDURE GetEventBase (dpy: X.DisplayStar): X.Int RAISES {X.Error};
returns -1 for errors
<* EXTERNAL XShmQueryVersion *> PROCEDURE QueryVersion (dpy : X.DisplayStar; majorVersion : Ctypes.int_star; minorVersion : Ctypes.int_star; sharedPixmaps: X.BoolStar ): X.Bool RAISES {X.Error}; <* EXTERNAL XShmAttach*> PROCEDURE Attach (dpy: X.DisplayStar; shminfo: SegmentInfoStar): X.Status RAISES {X.Error}; <* EXTERNAL XShmDetach *> PROCEDURE Detach (dpy: X.DisplayStar; shminfo: SegmentInfoStar): X.Status RAISES {X.Error}; <* EXTERNAL XShmPutImage *> PROCEDURE PutImage (dpy : X.DisplayStar; d : X.Drawable; gc : X.GC; image : X.XImageStar; src_x, src_y : X.Int; dst_x, dst_y : X.Int; src_width, src_height: Ctypes.unsigned_int; sendEvent : X.Bool; ): X.Status RAISES {X.Error}; <* EXTERNAL XShmGetImage *> PROCEDURE GetImage (dpy : X.DisplayStar; d : X.Drawable; image : X.XImageStar; x, y : X.Int; plane_mask: X.Mask ): X.Status RAISES {X.Error}; <* EXTERNAL XShmCreateImage *> PROCEDURE CreateImage (dpy : X.DisplayStar; visual : X.VisualStar; depth : Ctypes.unsigned_int; format : X.Int; data : Ctypes.char_star; shminfo : SegmentInfoStar; width, height: Ctypes.unsigned_int ): X.XImageStar RAISES {X.Error}; <* EXTERNAL XShmCreatePixmap *> PROCEDURE CreatePixmap (dpy : X.DisplayStar; d : X.Drawable; data : Ctypes.char_star; shminfo : SegmentInfoStar; widht, height, depth: Ctypes.unsigned_int): X.Pixmap RAISES {X.Error}; END XShm.