glXGetSelectedEvent
glXGetVisualFromFBConfig
glXImportContextEXT
- glXIntro
glXIsDirect
glXMakeContextCurrent
glXMakeCurrent
glXWaitX))
(define-gl-procedure
- glXChooseFBConfig
- "glXChooseFBConfig"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXFBConfig * "
- (function "glXChooseFBConfig"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "int " (parameter "screen"))
- (paramdef
- "const int * "
- (parameter "attrib_list"))
- (paramdef "int * " (parameter "nelements"))))
+ ((glXChooseFBConfig
+ (dpy *)
+ (screen int)
+ (attrib_list *)
+ (nelements *)
+ ->
+ *))
"Return a list of GLX frame buffer configurations that match the
specified attributes.
extension.")
(define-gl-procedure
- glXChooseVisual
- "glXChooseVisual"
- (funcsynopsis
- (funcprototype
- (funcdef
- "XVisualInfo* "
- (function "glXChooseVisual"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "int " (parameter "screen"))
- (paramdef "int * " (parameter "attribList"))))
+ ((glXChooseVisual
+ (dpy *)
+ (screen int)
+ (attribList *)
+ ->
+ *))
"Return a visual that matches specified attributes.
DPY
ATTRIBLIST.")
(define-gl-procedure
- glXCopyContext
- "glXCopyContext"
- (funcsynopsis
- (funcprototype
- (funcdef "void " (function "glXCopyContext"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXContext " (parameter "src"))
- (paramdef "GLXContext " (parameter "dst"))
- (paramdef "unsigned long " (parameter "mask"))))
+ ((glXCopyContext
+ (dpy *)
+ (src GLXContext)
+ (dst GLXContext)
+ (mask #{unsigned long}#)
+ ->
+ void))
"Copy state from one rendering context to another.
DPY
context.")
(define-gl-procedure
- glXCreateContext
- "glXCreateContext"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXContext "
- (function "glXCreateContext"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "XVisualInfo * " (parameter "vis"))
- (paramdef "GLXContext " (parameter "shareList"))
- (paramdef "Bool " (parameter "direct"))))
+ ((glXCreateContext
+ (dpy *)
+ (vis *)
+ (shareList GLXContext)
+ (direct Bool)
+ ->
+ GLXContext))
"Create a new GLX rendering context.
DPY
allocate the new context.")
(define-gl-procedure
- glXCreateGLXPixmap
- "glXCreateGLXPixmap"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXPixmap "
- (function "glXCreateGLXPixmap"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "XVisualInfo * " (parameter "vis"))
- (paramdef "Pixmap " (parameter "pixmap"))))
+ ((glXCreateGLXPixmap
+ (dpy *)
+ (vis *)
+ (pixmap Pixmap)
+ ->
+ GLXPixmap))
"Create an off-screen GLX rendering area.
DPY
`BadAlloc' is generated if the server cannot allocate the GLX pixmap.")
(define-gl-procedure
- glXCreateNewContext
- "glXCreateNewContext"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXContext "
- (function "glXCreateNewContext"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXFBConfig " (parameter "config"))
- (paramdef "int " (parameter "render_type"))
- (paramdef "GLXContext " (parameter "share_list"))
- (paramdef "Bool " (parameter "direct"))))
+ ((glXCreateNewContext
+ (dpy *)
+ (config GLXFBConfig)
+ (render_type int)
+ (share_list GLXContext)
+ (direct Bool)
+ ->
+ GLXContext))
"Create a new GLX rendering context.
DPY
a particular GLX implementation does not support it).")
(define-gl-procedure
- glXCreatePbuffer
- "glXCreatePbuffer"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXPbuffer "
- (function "glXCreatePbuffer"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXFBConfig " (parameter "config"))
- (paramdef
- "const int * "
- (parameter "attrib_list"))))
+ ((glXCreatePbuffer
+ (dpy *)
+ (config GLXFBConfig)
+ (attrib_list *)
+ ->
+ GLXPbuffer))
"Create an off-screen rendering area.
DPY
buffers (e.g., `GLX_DRAWABLE_TYPE' does not contain `GLX_PBUFFER_BIT').")
(define-gl-procedure
- glXCreatePixmap
- "glXCreatePixmap"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXPixmap "
- (function "glXCreatePixmap"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXFBConfig " (parameter "config"))
- (paramdef "Pixmap " (parameter "pixmap"))
- (paramdef
- "const int * "
- (parameter "attrib_list"))))
+ ((glXCreatePixmap
+ (dpy *)
+ (config GLXFBConfig)
+ (pixmap Pixmap)
+ (attrib_list *)
+ ->
+ GLXPixmap))
"Create an off-screen rendering area.
DPY
`GLXBadFBConfig' is generated if CONFIG is not a valid GLXFBConfig.")
(define-gl-procedure
- glXCreateWindow
- "glXCreateWindow"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXWindow "
- (function "glXCreateWindow"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXFBConfig " (parameter "config"))
- (paramdef "Window " (parameter "win"))
- (paramdef
- "const int * "
- (parameter "attrib_list"))))
+ ((glXCreateWindow
+ (dpy *)
+ (config GLXFBConfig)
+ (win Window)
+ (attrib_list *)
+ ->
+ GLXWindow))
"Create an on-screen rendering area.
DPY
`GLXBadFBConfig' is generated if CONFIG is not a valid GLXFBConfig.")
(define-gl-procedure
- glXDestroyContext
- "glXDestroyContext"
- (funcsynopsis
- (funcprototype
- (funcdef "void " (function "glXDestroyContext"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXContext " (parameter "ctx"))))
+ ((glXDestroyContext
+ (dpy *)
+ (ctx GLXContext)
+ ->
+ void))
"Destroy a GLX context.
DPY
`GLXBadContext' is generated if CTX is not a valid GLX context.")
(define-gl-procedure
- glXDestroyGLXPixmap
- "glXDestroyGLXPixmap"
- (funcsynopsis
- (funcprototype
- (funcdef
- "void "
- (function "glXDestroyGLXPixmap"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXPixmap " (parameter "pix"))))
+ ((glXDestroyGLXPixmap
+ (dpy *)
+ (pix GLXPixmap)
+ ->
+ void))
"Destroy a GLX pixmap.
DPY
`GLXBadPixmap' is generated if PIX is not a valid GLX pixmap.")
(define-gl-procedure
- glXDestroyPbuffer
- "glXDestroyPbuffer"
- (funcsynopsis
- (funcprototype
- (funcdef "void " (function "glXDestroyPbuffer"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXPbuffer " (parameter "pbuf"))))
+ ((glXDestroyPbuffer
+ (dpy *)
+ (pbuf GLXPbuffer)
+ ->
+ void))
"Destroy an off-screen rendering area.
DPY
`GLXBadPbuffer' is generated if PBUF is not a valid GLXPbuffer.")
(define-gl-procedure
- glXDestroyPixmap
- "glXDestroyPixmap"
- (funcsynopsis
- (funcprototype
- (funcdef "void " (function "glXDestroyPixmap"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXPixmap " (parameter "pixmap"))))
+ ((glXDestroyPixmap
+ (dpy *)
+ (pixmap GLXPixmap)
+ ->
+ void))
"Destroy an off-screen rendering area.
DPY
`GLXBadPixmap' is generated if PIXMAP is not a valid GLXPixmap.")
(define-gl-procedure
- glXDestroyWindow
- "glXDestroyWindow"
- (funcsynopsis
- (funcprototype
- (funcdef "void " (function "glXDestroyWindow"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXWindow " (parameter "win"))))
+ ((glXDestroyWindow
+ (dpy *)
+ (win GLXWindow)
+ ->
+ void))
"Destroy an on-screen rendering area.
DPY
`GLXBadWindow' is generated if WIN is not a valid GLXPixmap.")
(define-gl-procedure
- glXFreeContextEXT
- "glXFreeContextEXT"
- (funcsynopsis
- (funcprototype
- (funcdef "void " (function "glXFreeContextEXT"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXContext " (parameter "ctx"))))
+ ((glXFreeContextEXT
+ (dpy *)
+ (ctx GLXContext)
+ ->
+ void))
"Free client-side memory for imported context.
DPY
`GLXBadContext' is generated if CTX does not refer to a valid context.")
(define-gl-procedure
- glXGetClientString
- "glXGetClientString"
- (funcsynopsis
- (funcprototype
- (funcdef
- "const char * "
- (function "glXGetClientString"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "int " (parameter "name"))))
+ ((glXGetClientString (dpy *) (name int) -> *))
"Return a string describing the client.
DPY
present, the format and contents are implementation specific.")
(define-gl-procedure
- glXGetConfig
- "glXGetConfig"
- (funcsynopsis
- (funcprototype
- (funcdef "int " (function "glXGetConfig"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "XVisualInfo * " (parameter "vis"))
- (paramdef "int " (parameter "attrib"))
- (paramdef "int * " (parameter "value"))))
+ ((glXGetConfig
+ (dpy *)
+ (vis *)
+ (attrib int)
+ (value *)
+ ->
+ int))
"Return information about GLX visuals.
DPY
other than `GLX_USE_GL' is requested.")
(define-gl-procedure
- glXGetContextIDEXT
- "glXGetContextIDEXT"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXContextID "
- (function "glXGetContextIDEXT"))
- (paramdef "const GLXContext " (parameter "ctx"))))
+ ((glXGetContextIDEXT
+ (ctx GLXContext)
+ ->
+ GLXContextID))
"Get the XID for a context..
CTX
`GLXBadContext' is generated if CTX does not refer to a valid context.")
(define-gl-procedure
- glXGetCurrentContext
- "glXGetCurrentContext"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXContext "
- (function "glXGetCurrentContext"))))
+ ((glXGetCurrentContext -> GLXContext))
"Return the current context.
`glXGetCurrentContext' returns the current context, as specified by
a round trip to the server.")
(define-gl-procedure
- glXGetCurrentDisplay
- "glXGetCurrentDisplay"
- (funcsynopsis
- (funcprototype
- (funcdef
- "Display * "
- (function "glXGetCurrentDisplay"))))
+ ((glXGetCurrentDisplay -> *))
"Get display for current context.
`glXGetCurrentDisplay' returns the display for the current context. If
events.")
(define-gl-procedure
- glXGetCurrentDrawable
- "glXGetCurrentDrawable"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXDrawable "
- (function "glXGetCurrentDrawable"))))
+ ((glXGetCurrentDrawable -> GLXDrawable))
"Return the current drawable.
`glXGetCurrentDrawable' returns the current drawable, as specified by
make a round trip to the server.")
(define-gl-procedure
- glXGetCurrentReadDrawable
- "glXGetCurrentReadDrawable"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXDrawable "
- (function "glXGetCurrentReadDrawable"))))
+ ((glXGetCurrentReadDrawable -> GLXDrawable))
"Return the current drawable.
`glXGetCurrentReadDrawable' returns the current read drawable, as
make a round-trip to the server.")
(define-gl-procedure
- glXGetFBConfigAttrib
- "glXGetFBConfigAttrib"
- (funcsynopsis
- (funcprototype
- (funcdef
- "int "
- (function "glXGetFBConfigAttrib"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXFBConfig " (parameter "config"))
- (paramdef "int " (parameter "attribute"))
- (paramdef "int * " (parameter "value"))))
+ ((glXGetFBConfigAttrib
+ (dpy *)
+ (config GLXFBConfig)
+ (attribute int)
+ (value *)
+ ->
+ int))
"Return information about a GLX frame buffer configuration.
DPY
GLX attribute.")
(define-gl-procedure
- glXGetFBConfigs
- "glXGetFBConfigs"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXFBConfig * "
- (function "glXGetFBConfigs"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "int " (parameter "screen"))
- (paramdef "int * " (parameter "nelements"))))
+ ((glXGetFBConfigs
+ (dpy *)
+ (screen int)
+ (nelements *)
+ ->
+ *))
"List all GLX frame buffer configurations for a given screen.
DPY
attribute values from a specific GLXFBConfig.")
(define-gl-procedure
- glXGetProcAddress
- "glXGetProcAddress"
- (funcsynopsis
- (funcprototype
- (funcdef
- "void(*)() "
- (function "glXGetProcAddress"))
- (paramdef
- "const GLubyte * "
- (parameter "procName"))))
+ ((glXGetProcAddress
+ (procName *)
+ ->
+ #{void\x28;*\x29;\x28;\x29;}#))
"Obtain a pointer to an OpenGL or GLX function.
PROCNAME
library exports a different set of functions than the runtime library.")
(define-gl-procedure
- glXGetSelectedEvent
- "glXGetSelectedEvent"
- (funcsynopsis
- (funcprototype
- (funcdef
- "void "
- (function "glXGetSelectedEvent"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXDrawable " (parameter "draw"))
- (paramdef
- "unsigned long * "
- (parameter "event_mask"))))
+ ((glXGetSelectedEvent
+ (dpy *)
+ (draw GLXDrawable)
+ (event_mask *)
+ ->
+ void))
"Returns GLX events that are selected for a window or a GLX pixel buffer.
DPY
GLX pixel buffer.")
(define-gl-procedure
- glXGetVisualFromFBConfig
- "glXGetVisualFromFBConfig"
- (funcsynopsis
- (funcprototype
- (funcdef
- "XVisualInfo * "
- (function "glXGetVisualFromFBConfig"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXFBConfig " (parameter "config"))))
+ ((glXGetVisualFromFBConfig
+ (dpy *)
+ (config GLXFBConfig)
+ ->
+ *))
"Return visual that is associated with the frame buffer configuration.
DPY
Returns `NULL' if CONFIG is not a valid GLXFBConfig.")
(define-gl-procedure
- glXImportContextEXT
- "glXImportContextEXT"
- (funcsynopsis
- (funcprototype
- (funcdef
- "GLXContext "
- (function "glXImportContextEXT"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef
- "GLXContextID "
- (parameter "contextID"))))
+ ((glXImportContextEXT
+ (dpy *)
+ (contextID GLXContextID)
+ ->
+ GLXContext))
"Import another process's indirect rendering context..
DPY
context.")
(define-gl-procedure
- glXIntro
- "glXIntro"
- #f
- "Introduction to OpenGL in the X window system.")
-
-(define-gl-procedure
- glXIsDirect
- "glXIsDirect"
- (funcsynopsis
- (funcprototype
- (funcdef "Bool " (function "glXIsDirect"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXContext " (parameter "ctx"))))
+ ((glXIsDirect (dpy *) (ctx GLXContext) -> Bool))
"Indicate whether direct rendering is enabled.
DPY
`GLXBadContext' is generated if CTX is not a valid GLX context.")
(define-gl-procedure
- glXMakeContextCurrent
- "glXMakeContextCurrent"
- (funcsynopsis
- (funcprototype
- (funcdef
- "Bool "
- (function "glXMakeContextCurrent"))
- (paramdef "Display * " (parameter "display"))
- (paramdef "GLXDrawable " (parameter "draw"))
- (paramdef "GLXDrawable " (parameter "read"))
- (paramdef "GLXContext " (parameter "ctx"))))
+ ((glXMakeContextCurrent
+ (display *)
+ (draw GLXDrawable)
+ (read GLXDrawable)
+ (ctx GLXContext)
+ ->
+ Bool))
"Attach a GLX context to a GLX drawable.
DISPLAY
to a GLXPixmap.")
(define-gl-procedure
- glXMakeCurrent
- "glXMakeCurrent"
- (funcsynopsis
- (funcprototype
- (funcdef "Bool " (function "glXMakeCurrent"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXDrawable " (parameter "drawable"))
- (paramdef "GLXContext " (parameter "ctx"))))
+ ((glXMakeCurrent
+ (dpy *)
+ (drawable GLXDrawable)
+ (ctx GLXContext)
+ ->
+ Bool))
"Attach a GLX context to a window or a GLX pixmap.
DPY
has insufficient resources to complete the allocation.")
(define-gl-procedure
- glXQueryContextInfoEXT
- "glXQueryContextInfoEXT"
- (funcsynopsis
- (funcprototype
- (funcdef
- "int "
- (function "glXQueryContextInfoEXT"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXContext " (parameter "ctx"))
- (paramdef "int " (parameter "attribute"))
- (paramdef "int * " (parameter "value"))))
+ ((glXQueryContextInfoEXT
+ (dpy *)
+ (ctx GLXContext)
+ (attribute int)
+ (value *)
+ ->
+ int))
"Query context information.
DPY
fred `GLX_BAD_CONTEXT' is returned if ATTRIBUTE is not a valid context.")
(define-gl-procedure
- glXQueryContext
- "glXQueryContext"
- (funcsynopsis
- (funcprototype
- (funcdef "int " (function "glXQueryContext"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXContext " (parameter "ctx"))
- (paramdef "int " (parameter "attribute"))
- (paramdef "int * " (parameter "value"))))
+ ((glXQueryContext
+ (dpy *)
+ (ctx GLXContext)
+ (attribute int)
+ (value *)
+ ->
+ int))
"Query context information.
DPY
`GLXBadContext' is generated if CTX does not refer to a valid context.")
(define-gl-procedure
- glXQueryDrawable
- "glXQueryDrawable"
- (funcsynopsis
- (funcprototype
- (funcdef "int " (function "glXQueryDrawable"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXDrawable " (parameter "draw"))
- (paramdef "int " (parameter "attribute"))
- (paramdef "unsigned int * " (parameter "value"))))
+ ((glXQueryDrawable
+ (dpy *)
+ (draw GLXDrawable)
+ (attribute int)
+ (value *)
+ ->
+ int))
"Returns an attribute assoicated with a GLX drawable.
DPY
A `GLXBadDrawable' is generated if DRAW is not a valid GLXDrawable.")
(define-gl-procedure
- glXQueryExtensionsString
- "glXQueryExtensionsString"
- (funcsynopsis
- (funcprototype
- (funcdef
- "const char * "
- (function "glXQueryExtensionsString"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "int " (parameter "screen"))))
+ ((glXQueryExtensionsString
+ (dpy *)
+ (screen int)
+ ->
+ *))
"Return list of supported extensions.
DPY
extensions to GLX, then the empty string is returned.")
(define-gl-procedure
- glXQueryExtension
- "glXQueryExtension"
- (funcsynopsis
- (funcprototype
- (funcdef "Bool " (function "glXQueryExtension"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "int * " (parameter "errorBase"))
- (paramdef "int * " (parameter "eventBase"))))
+ ((glXQueryExtension
+ (dpy *)
+ (errorBase *)
+ (eventBase *)
+ ->
+ Bool))
"Indicate whether the GLX extension is supported.
DPY
`NULL'.")
(define-gl-procedure
- glXQueryServerString
- "glXQueryServerString"
- (funcsynopsis
- (funcprototype
- (funcdef
- "const char * "
- (function "glXQueryServerString"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "int " (parameter "screen"))
- (paramdef "int " (parameter "name"))))
+ ((glXQueryServerString
+ (dpy *)
+ (screen int)
+ (name int)
+ ->
+ *))
"Return string describing the server.
DPY
`NULL' is returned.")
(define-gl-procedure
- glXQueryVersion
- "glXQueryVersion"
- (funcsynopsis
- (funcprototype
- (funcdef "Bool " (function "glXQueryVersion"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "int * " (parameter "major"))
- (paramdef "int * " (parameter "minor"))))
+ ((glXQueryVersion
+ (dpy *)
+ (major *)
+ (minor *)
+ ->
+ Bool))
"Return the version numbers of the GLX extension.
DPY
MAJOR and MINOR are not updated when `False' is returned.")
(define-gl-procedure
- glXSelectEvent
- "glXSelectEvent"
- (funcsynopsis
- (funcprototype
- (funcdef "void " (function "glXSelectEvent"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXDrawable " (parameter "draw"))
- (paramdef
- "unsigned long "
- (parameter "event_mask"))))
+ ((glXSelectEvent
+ (dpy *)
+ (draw GLXDrawable)
+ (event_mask #{unsigned long}#)
+ ->
+ void))
"Select GLX events for a window or a GLX pixel buffer.
DPY
GLX pixel buffer.")
(define-gl-procedure
- glXSwapBuffers
- "glXSwapBuffers"
- (funcsynopsis
- (funcprototype
- (funcdef "void " (function "glXSwapBuffers"))
- (paramdef "Display * " (parameter "dpy"))
- (paramdef "GLXDrawable " (parameter "drawable"))))
+ ((glXSwapBuffers
+ (dpy *)
+ (drawable GLXDrawable)
+ ->
+ void))
"Exchange front and back buffers.
DPY
valid.")
(define-gl-procedure
- glXUseXFont
- "glXUseXFont"
- (funcsynopsis
- (funcprototype
- (funcdef "void " (function "glXUseXFont"))
- (paramdef "Font " (parameter "font"))
- (paramdef "int " (parameter "first"))
- (paramdef "int " (parameter "count"))
- (paramdef "int " (parameter "listBase"))))
+ ((glXUseXFont
+ (font Font)
+ (first int)
+ (count int)
+ (listBase int)
+ ->
+ void))
"Create bitmap display lists from an X font.
FONT
longer valid.")
(define-gl-procedure
- glXWaitGL
- "glXWaitGL"
- (funcsynopsis
- (funcprototype
- (funcdef "void " (function "glXWaitGL"))
- (paramdef (parameter "void"))))
+ ((glXWaitGL -> void))
"Complete GL execution prior to subsequent X calls.
GL rendering calls made prior to `glXWaitGL' are guaranteed to be
longer valid.")
(define-gl-procedure
- glXWaitX
- "glXWaitX"
- (funcsynopsis
- (funcprototype
- (funcdef "void " (function "glXWaitX"))
- (paramdef (parameter "void"))))
+ ((glXWaitX -> void))
"Complete X execution prior to subsequent GL calls.
X rendering calls made prior to `glXWaitX' are guaranteed to be executed