x11_platform.h (44741B)
1 //======================================================================== 2 // GLFW 3.4 X11 - www.glfw.org 3 //------------------------------------------------------------------------ 4 // Copyright (c) 2002-2006 Marcus Geelnard 5 // Copyright (c) 2006-2019 Camilla Löwy <elmindreda@glfw.org> 6 // 7 // This software is provided 'as-is', without any express or implied 8 // warranty. In no event will the authors be held liable for any damages 9 // arising from the use of this software. 10 // 11 // Permission is granted to anyone to use this software for any purpose, 12 // including commercial applications, and to alter it and redistribute it 13 // freely, subject to the following restrictions: 14 // 15 // 1. The origin of this software must not be misrepresented; you must not 16 // claim that you wrote the original software. If you use this software 17 // in a product, an acknowledgment in the product documentation would 18 // be appreciated but is not required. 19 // 20 // 2. Altered source versions must be plainly marked as such, and must not 21 // be misrepresented as being the original software. 22 // 23 // 3. This notice may not be removed or altered from any source 24 // distribution. 25 // 26 //======================================================================== 27 28 #include <unistd.h> 29 #include <signal.h> 30 #include <stdint.h> 31 32 #include <X11/Xlib.h> 33 #include <X11/keysym.h> 34 #include <X11/Xatom.h> 35 #include <X11/Xresource.h> 36 #include <X11/Xcursor/Xcursor.h> 37 38 // The XRandR extension provides mode setting and gamma control 39 #include <X11/extensions/Xrandr.h> 40 41 // The Xkb extension provides improved keyboard support 42 #include <X11/XKBlib.h> 43 44 // The Xinerama extension provides legacy monitor indices 45 #include <X11/extensions/Xinerama.h> 46 47 // The XInput extension provides raw mouse motion input 48 #include <X11/extensions/XInput2.h> 49 50 // The Shape extension provides custom window shapes 51 #include <X11/extensions/shape.h> 52 53 #define GLX_VENDOR 1 54 #define GLX_RGBA_BIT 0x00000001 55 #define GLX_WINDOW_BIT 0x00000001 56 #define GLX_DRAWABLE_TYPE 0x8010 57 #define GLX_RENDER_TYPE 0x8011 58 #define GLX_RGBA_TYPE 0x8014 59 #define GLX_DOUBLEBUFFER 5 60 #define GLX_STEREO 6 61 #define GLX_AUX_BUFFERS 7 62 #define GLX_RED_SIZE 8 63 #define GLX_GREEN_SIZE 9 64 #define GLX_BLUE_SIZE 10 65 #define GLX_ALPHA_SIZE 11 66 #define GLX_DEPTH_SIZE 12 67 #define GLX_STENCIL_SIZE 13 68 #define GLX_ACCUM_RED_SIZE 14 69 #define GLX_ACCUM_GREEN_SIZE 15 70 #define GLX_ACCUM_BLUE_SIZE 16 71 #define GLX_ACCUM_ALPHA_SIZE 17 72 #define GLX_SAMPLES 0x186a1 73 #define GLX_VISUAL_ID 0x800b 74 75 #define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20b2 76 #define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001 77 #define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 78 #define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 79 #define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 80 #define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 81 #define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 82 #define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 83 #define GLX_CONTEXT_FLAGS_ARB 0x2094 84 #define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 85 #define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 86 #define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252 87 #define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 88 #define GLX_NO_RESET_NOTIFICATION_ARB 0x8261 89 #define GLX_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097 90 #define GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0 91 #define GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098 92 #define GLX_CONTEXT_OPENGL_NO_ERROR_ARB 0x31b3 93 94 typedef XID GLXWindow; 95 typedef XID GLXDrawable; 96 typedef struct __GLXFBConfig* GLXFBConfig; 97 typedef struct __GLXcontext* GLXContext; 98 typedef void (*__GLXextproc)(void); 99 100 typedef XClassHint* (* PFN_XAllocClassHint)(void); 101 typedef XSizeHints* (* PFN_XAllocSizeHints)(void); 102 typedef XWMHints* (* PFN_XAllocWMHints)(void); 103 typedef int (* PFN_XChangeProperty)(Display*,Window,Atom,Atom,int,int,const unsigned char*,int); 104 typedef int (* PFN_XChangeWindowAttributes)(Display*,Window,unsigned long,XSetWindowAttributes*); 105 typedef Bool (* PFN_XCheckIfEvent)(Display*,XEvent*,Bool(*)(Display*,XEvent*,XPointer),XPointer); 106 typedef Bool (* PFN_XCheckTypedWindowEvent)(Display*,Window,int,XEvent*); 107 typedef int (* PFN_XCloseDisplay)(Display*); 108 typedef Status (* PFN_XCloseIM)(XIM); 109 typedef int (* PFN_XConvertSelection)(Display*,Atom,Atom,Atom,Window,Time); 110 typedef Colormap (* PFN_XCreateColormap)(Display*,Window,Visual*,int); 111 typedef Cursor (* PFN_XCreateFontCursor)(Display*,unsigned int); 112 typedef XIC (* PFN_XCreateIC)(XIM,...); 113 typedef Region (* PFN_XCreateRegion)(void); 114 typedef Window (* PFN_XCreateWindow)(Display*,Window,int,int,unsigned int,unsigned int,unsigned int,int,unsigned int,Visual*,unsigned long,XSetWindowAttributes*); 115 typedef int (* PFN_XDefineCursor)(Display*,Window,Cursor); 116 typedef int (* PFN_XDeleteContext)(Display*,XID,XContext); 117 typedef int (* PFN_XDeleteProperty)(Display*,Window,Atom); 118 typedef void (* PFN_XDestroyIC)(XIC); 119 typedef int (* PFN_XDestroyRegion)(Region); 120 typedef int (* PFN_XDestroyWindow)(Display*,Window); 121 typedef int (* PFN_XDisplayKeycodes)(Display*,int*,int*); 122 typedef int (* PFN_XEventsQueued)(Display*,int); 123 typedef Bool (* PFN_XFilterEvent)(XEvent*,Window); 124 typedef int (* PFN_XFindContext)(Display*,XID,XContext,XPointer*); 125 typedef int (* PFN_XFlush)(Display*); 126 typedef int (* PFN_XFree)(void*); 127 typedef int (* PFN_XFreeColormap)(Display*,Colormap); 128 typedef int (* PFN_XFreeCursor)(Display*,Cursor); 129 typedef void (* PFN_XFreeEventData)(Display*,XGenericEventCookie*); 130 typedef int (* PFN_XGetErrorText)(Display*,int,char*,int); 131 typedef Bool (* PFN_XGetEventData)(Display*,XGenericEventCookie*); 132 typedef char* (* PFN_XGetICValues)(XIC,...); 133 typedef char* (* PFN_XGetIMValues)(XIM,...); 134 typedef int (* PFN_XGetInputFocus)(Display*,Window*,int*); 135 typedef KeySym* (* PFN_XGetKeyboardMapping)(Display*,KeyCode,int,int*); 136 typedef int (* PFN_XGetScreenSaver)(Display*,int*,int*,int*,int*); 137 typedef Window (* PFN_XGetSelectionOwner)(Display*,Atom); 138 typedef XVisualInfo* (* PFN_XGetVisualInfo)(Display*,long,XVisualInfo*,int*); 139 typedef Status (* PFN_XGetWMNormalHints)(Display*,Window,XSizeHints*,long*); 140 typedef Status (* PFN_XGetWindowAttributes)(Display*,Window,XWindowAttributes*); 141 typedef int (* PFN_XGetWindowProperty)(Display*,Window,Atom,long,long,Bool,Atom,Atom*,int*,unsigned long*,unsigned long*,unsigned char**); 142 typedef int (* PFN_XGrabPointer)(Display*,Window,Bool,unsigned int,int,int,Window,Cursor,Time); 143 typedef Status (* PFN_XIconifyWindow)(Display*,Window,int); 144 typedef Status (* PFN_XInitThreads)(void); 145 typedef Atom (* PFN_XInternAtom)(Display*,const char*,Bool); 146 typedef int (* PFN_XLookupString)(XKeyEvent*,char*,int,KeySym*,XComposeStatus*); 147 typedef int (* PFN_XMapRaised)(Display*,Window); 148 typedef int (* PFN_XMapWindow)(Display*,Window); 149 typedef int (* PFN_XMoveResizeWindow)(Display*,Window,int,int,unsigned int,unsigned int); 150 typedef int (* PFN_XMoveWindow)(Display*,Window,int,int); 151 typedef int (* PFN_XNextEvent)(Display*,XEvent*); 152 typedef Display* (* PFN_XOpenDisplay)(const char*); 153 typedef XIM (* PFN_XOpenIM)(Display*,XrmDatabase*,char*,char*); 154 typedef int (* PFN_XPeekEvent)(Display*,XEvent*); 155 typedef int (* PFN_XPending)(Display*); 156 typedef Bool (* PFN_XQueryExtension)(Display*,const char*,int*,int*,int*); 157 typedef Bool (* PFN_XQueryPointer)(Display*,Window,Window*,Window*,int*,int*,int*,int*,unsigned int*); 158 typedef int (* PFN_XRaiseWindow)(Display*,Window); 159 typedef Bool (* PFN_XRegisterIMInstantiateCallback)(Display*,void*,char*,char*,XIDProc,XPointer); 160 typedef int (* PFN_XResizeWindow)(Display*,Window,unsigned int,unsigned int); 161 typedef char* (* PFN_XResourceManagerString)(Display*); 162 typedef int (* PFN_XSaveContext)(Display*,XID,XContext,const char*); 163 typedef int (* PFN_XSelectInput)(Display*,Window,long); 164 typedef Status (* PFN_XSendEvent)(Display*,Window,Bool,long,XEvent*); 165 typedef int (* PFN_XSetClassHint)(Display*,Window,XClassHint*); 166 typedef XErrorHandler (* PFN_XSetErrorHandler)(XErrorHandler); 167 typedef void (* PFN_XSetICFocus)(XIC); 168 typedef char* (* PFN_XSetIMValues)(XIM,...); 169 typedef int (* PFN_XSetInputFocus)(Display*,Window,int,Time); 170 typedef char* (* PFN_XSetLocaleModifiers)(const char*); 171 typedef int (* PFN_XSetScreenSaver)(Display*,int,int,int,int); 172 typedef int (* PFN_XSetSelectionOwner)(Display*,Atom,Window,Time); 173 typedef int (* PFN_XSetWMHints)(Display*,Window,XWMHints*); 174 typedef void (* PFN_XSetWMNormalHints)(Display*,Window,XSizeHints*); 175 typedef Status (* PFN_XSetWMProtocols)(Display*,Window,Atom*,int); 176 typedef Bool (* PFN_XSupportsLocale)(void); 177 typedef int (* PFN_XSync)(Display*,Bool); 178 typedef Bool (* PFN_XTranslateCoordinates)(Display*,Window,Window,int,int,int*,int*,Window*); 179 typedef int (* PFN_XUndefineCursor)(Display*,Window); 180 typedef int (* PFN_XUngrabPointer)(Display*,Time); 181 typedef int (* PFN_XUnmapWindow)(Display*,Window); 182 typedef void (* PFN_XUnsetICFocus)(XIC); 183 typedef VisualID (* PFN_XVisualIDFromVisual)(Visual*); 184 typedef int (* PFN_XWarpPointer)(Display*,Window,Window,int,int,unsigned int,unsigned int,int,int); 185 typedef void (* PFN_XkbFreeKeyboard)(XkbDescPtr,unsigned int,Bool); 186 typedef void (* PFN_XkbFreeNames)(XkbDescPtr,unsigned int,Bool); 187 typedef XkbDescPtr (* PFN_XkbGetMap)(Display*,unsigned int,unsigned int); 188 typedef Status (* PFN_XkbGetNames)(Display*,unsigned int,XkbDescPtr); 189 typedef Status (* PFN_XkbGetState)(Display*,unsigned int,XkbStatePtr); 190 typedef KeySym (* PFN_XkbKeycodeToKeysym)(Display*,KeyCode,int,int); 191 typedef Bool (* PFN_XkbQueryExtension)(Display*,int*,int*,int*,int*,int*); 192 typedef Bool (* PFN_XkbSelectEventDetails)(Display*,unsigned int,unsigned int,unsigned long,unsigned long); 193 typedef Bool (* PFN_XkbSetDetectableAutoRepeat)(Display*,Bool,Bool*); 194 typedef void (* PFN_XrmDestroyDatabase)(XrmDatabase); 195 typedef Bool (* PFN_XrmGetResource)(XrmDatabase,const char*,const char*,char**,XrmValue*); 196 typedef XrmDatabase (* PFN_XrmGetStringDatabase)(const char*); 197 typedef void (* PFN_XrmInitialize)(void); 198 typedef XrmQuark (* PFN_XrmUniqueQuark)(void); 199 typedef Bool (* PFN_XUnregisterIMInstantiateCallback)(Display*,void*,char*,char*,XIDProc,XPointer); 200 typedef int (* PFN_Xutf8LookupString)(XIC,XKeyPressedEvent*,char*,int,KeySym*,Status*); 201 typedef void (* PFN_Xutf8SetWMProperties)(Display*,Window,const char*,const char*,char**,int,XSizeHints*,XWMHints*,XClassHint*); 202 #define XAllocClassHint _glfw.x11.xlib.AllocClassHint 203 #define XAllocSizeHints _glfw.x11.xlib.AllocSizeHints 204 #define XAllocWMHints _glfw.x11.xlib.AllocWMHints 205 #define XChangeProperty _glfw.x11.xlib.ChangeProperty 206 #define XChangeWindowAttributes _glfw.x11.xlib.ChangeWindowAttributes 207 #define XCheckIfEvent _glfw.x11.xlib.CheckIfEvent 208 #define XCheckTypedWindowEvent _glfw.x11.xlib.CheckTypedWindowEvent 209 #define XCloseDisplay _glfw.x11.xlib.CloseDisplay 210 #define XCloseIM _glfw.x11.xlib.CloseIM 211 #define XConvertSelection _glfw.x11.xlib.ConvertSelection 212 #define XCreateColormap _glfw.x11.xlib.CreateColormap 213 #define XCreateFontCursor _glfw.x11.xlib.CreateFontCursor 214 #define XCreateIC _glfw.x11.xlib.CreateIC 215 #define XCreateRegion _glfw.x11.xlib.CreateRegion 216 #define XCreateWindow _glfw.x11.xlib.CreateWindow 217 #define XDefineCursor _glfw.x11.xlib.DefineCursor 218 #define XDeleteContext _glfw.x11.xlib.DeleteContext 219 #define XDeleteProperty _glfw.x11.xlib.DeleteProperty 220 #define XDestroyIC _glfw.x11.xlib.DestroyIC 221 #define XDestroyRegion _glfw.x11.xlib.DestroyRegion 222 #define XDestroyWindow _glfw.x11.xlib.DestroyWindow 223 #define XDisplayKeycodes _glfw.x11.xlib.DisplayKeycodes 224 #define XEventsQueued _glfw.x11.xlib.EventsQueued 225 #define XFilterEvent _glfw.x11.xlib.FilterEvent 226 #define XFindContext _glfw.x11.xlib.FindContext 227 #define XFlush _glfw.x11.xlib.Flush 228 #define XFree _glfw.x11.xlib.Free 229 #define XFreeColormap _glfw.x11.xlib.FreeColormap 230 #define XFreeCursor _glfw.x11.xlib.FreeCursor 231 #define XFreeEventData _glfw.x11.xlib.FreeEventData 232 #define XGetErrorText _glfw.x11.xlib.GetErrorText 233 #define XGetEventData _glfw.x11.xlib.GetEventData 234 #define XGetICValues _glfw.x11.xlib.GetICValues 235 #define XGetIMValues _glfw.x11.xlib.GetIMValues 236 #define XGetInputFocus _glfw.x11.xlib.GetInputFocus 237 #define XGetKeyboardMapping _glfw.x11.xlib.GetKeyboardMapping 238 #define XGetScreenSaver _glfw.x11.xlib.GetScreenSaver 239 #define XGetSelectionOwner _glfw.x11.xlib.GetSelectionOwner 240 #define XGetVisualInfo _glfw.x11.xlib.GetVisualInfo 241 #define XGetWMNormalHints _glfw.x11.xlib.GetWMNormalHints 242 #define XGetWindowAttributes _glfw.x11.xlib.GetWindowAttributes 243 #define XGetWindowProperty _glfw.x11.xlib.GetWindowProperty 244 #define XGrabPointer _glfw.x11.xlib.GrabPointer 245 #define XIconifyWindow _glfw.x11.xlib.IconifyWindow 246 #define XInternAtom _glfw.x11.xlib.InternAtom 247 #define XLookupString _glfw.x11.xlib.LookupString 248 #define XMapRaised _glfw.x11.xlib.MapRaised 249 #define XMapWindow _glfw.x11.xlib.MapWindow 250 #define XMoveResizeWindow _glfw.x11.xlib.MoveResizeWindow 251 #define XMoveWindow _glfw.x11.xlib.MoveWindow 252 #define XNextEvent _glfw.x11.xlib.NextEvent 253 #define XOpenIM _glfw.x11.xlib.OpenIM 254 #define XPeekEvent _glfw.x11.xlib.PeekEvent 255 #define XPending _glfw.x11.xlib.Pending 256 #define XQueryExtension _glfw.x11.xlib.QueryExtension 257 #define XQueryPointer _glfw.x11.xlib.QueryPointer 258 #define XRaiseWindow _glfw.x11.xlib.RaiseWindow 259 #define XRegisterIMInstantiateCallback _glfw.x11.xlib.RegisterIMInstantiateCallback 260 #define XResizeWindow _glfw.x11.xlib.ResizeWindow 261 #define XResourceManagerString _glfw.x11.xlib.ResourceManagerString 262 #define XSaveContext _glfw.x11.xlib.SaveContext 263 #define XSelectInput _glfw.x11.xlib.SelectInput 264 #define XSendEvent _glfw.x11.xlib.SendEvent 265 #define XSetClassHint _glfw.x11.xlib.SetClassHint 266 #define XSetErrorHandler _glfw.x11.xlib.SetErrorHandler 267 #define XSetICFocus _glfw.x11.xlib.SetICFocus 268 #define XSetIMValues _glfw.x11.xlib.SetIMValues 269 #define XSetInputFocus _glfw.x11.xlib.SetInputFocus 270 #define XSetLocaleModifiers _glfw.x11.xlib.SetLocaleModifiers 271 #define XSetScreenSaver _glfw.x11.xlib.SetScreenSaver 272 #define XSetSelectionOwner _glfw.x11.xlib.SetSelectionOwner 273 #define XSetWMHints _glfw.x11.xlib.SetWMHints 274 #define XSetWMNormalHints _glfw.x11.xlib.SetWMNormalHints 275 #define XSetWMProtocols _glfw.x11.xlib.SetWMProtocols 276 #define XSupportsLocale _glfw.x11.xlib.SupportsLocale 277 #define XSync _glfw.x11.xlib.Sync 278 #define XTranslateCoordinates _glfw.x11.xlib.TranslateCoordinates 279 #define XUndefineCursor _glfw.x11.xlib.UndefineCursor 280 #define XUngrabPointer _glfw.x11.xlib.UngrabPointer 281 #define XUnmapWindow _glfw.x11.xlib.UnmapWindow 282 #define XUnsetICFocus _glfw.x11.xlib.UnsetICFocus 283 #define XVisualIDFromVisual _glfw.x11.xlib.VisualIDFromVisual 284 #define XWarpPointer _glfw.x11.xlib.WarpPointer 285 #define XkbFreeKeyboard _glfw.x11.xkb.FreeKeyboard 286 #define XkbFreeNames _glfw.x11.xkb.FreeNames 287 #define XkbGetMap _glfw.x11.xkb.GetMap 288 #define XkbGetNames _glfw.x11.xkb.GetNames 289 #define XkbGetState _glfw.x11.xkb.GetState 290 #define XkbKeycodeToKeysym _glfw.x11.xkb.KeycodeToKeysym 291 #define XkbQueryExtension _glfw.x11.xkb.QueryExtension 292 #define XkbSelectEventDetails _glfw.x11.xkb.SelectEventDetails 293 #define XkbSetDetectableAutoRepeat _glfw.x11.xkb.SetDetectableAutoRepeat 294 #define XrmDestroyDatabase _glfw.x11.xrm.DestroyDatabase 295 #define XrmGetResource _glfw.x11.xrm.GetResource 296 #define XrmGetStringDatabase _glfw.x11.xrm.GetStringDatabase 297 #define XrmUniqueQuark _glfw.x11.xrm.UniqueQuark 298 #define XUnregisterIMInstantiateCallback _glfw.x11.xlib.UnregisterIMInstantiateCallback 299 #define Xutf8LookupString _glfw.x11.xlib.utf8LookupString 300 #define Xutf8SetWMProperties _glfw.x11.xlib.utf8SetWMProperties 301 302 typedef XRRCrtcGamma* (* PFN_XRRAllocGamma)(int); 303 typedef void (* PFN_XRRFreeCrtcInfo)(XRRCrtcInfo*); 304 typedef void (* PFN_XRRFreeGamma)(XRRCrtcGamma*); 305 typedef void (* PFN_XRRFreeOutputInfo)(XRROutputInfo*); 306 typedef void (* PFN_XRRFreeScreenResources)(XRRScreenResources*); 307 typedef XRRCrtcGamma* (* PFN_XRRGetCrtcGamma)(Display*,RRCrtc); 308 typedef int (* PFN_XRRGetCrtcGammaSize)(Display*,RRCrtc); 309 typedef XRRCrtcInfo* (* PFN_XRRGetCrtcInfo) (Display*,XRRScreenResources*,RRCrtc); 310 typedef XRROutputInfo* (* PFN_XRRGetOutputInfo)(Display*,XRRScreenResources*,RROutput); 311 typedef RROutput (* PFN_XRRGetOutputPrimary)(Display*,Window); 312 typedef XRRScreenResources* (* PFN_XRRGetScreenResourcesCurrent)(Display*,Window); 313 typedef Bool (* PFN_XRRQueryExtension)(Display*,int*,int*); 314 typedef Status (* PFN_XRRQueryVersion)(Display*,int*,int*); 315 typedef void (* PFN_XRRSelectInput)(Display*,Window,int); 316 typedef Status (* PFN_XRRSetCrtcConfig)(Display*,XRRScreenResources*,RRCrtc,Time,int,int,RRMode,Rotation,RROutput*,int); 317 typedef void (* PFN_XRRSetCrtcGamma)(Display*,RRCrtc,XRRCrtcGamma*); 318 typedef int (* PFN_XRRUpdateConfiguration)(XEvent*); 319 #define XRRAllocGamma _glfw.x11.randr.AllocGamma 320 #define XRRFreeCrtcInfo _glfw.x11.randr.FreeCrtcInfo 321 #define XRRFreeGamma _glfw.x11.randr.FreeGamma 322 #define XRRFreeOutputInfo _glfw.x11.randr.FreeOutputInfo 323 #define XRRFreeScreenResources _glfw.x11.randr.FreeScreenResources 324 #define XRRGetCrtcGamma _glfw.x11.randr.GetCrtcGamma 325 #define XRRGetCrtcGammaSize _glfw.x11.randr.GetCrtcGammaSize 326 #define XRRGetCrtcInfo _glfw.x11.randr.GetCrtcInfo 327 #define XRRGetOutputInfo _glfw.x11.randr.GetOutputInfo 328 #define XRRGetOutputPrimary _glfw.x11.randr.GetOutputPrimary 329 #define XRRGetScreenResourcesCurrent _glfw.x11.randr.GetScreenResourcesCurrent 330 #define XRRQueryExtension _glfw.x11.randr.QueryExtension 331 #define XRRQueryVersion _glfw.x11.randr.QueryVersion 332 #define XRRSelectInput _glfw.x11.randr.SelectInput 333 #define XRRSetCrtcConfig _glfw.x11.randr.SetCrtcConfig 334 #define XRRSetCrtcGamma _glfw.x11.randr.SetCrtcGamma 335 #define XRRUpdateConfiguration _glfw.x11.randr.UpdateConfiguration 336 337 typedef XcursorImage* (* PFN_XcursorImageCreate)(int,int); 338 typedef void (* PFN_XcursorImageDestroy)(XcursorImage*); 339 typedef Cursor (* PFN_XcursorImageLoadCursor)(Display*,const XcursorImage*); 340 typedef char* (* PFN_XcursorGetTheme)(Display*); 341 typedef int (* PFN_XcursorGetDefaultSize)(Display*); 342 typedef XcursorImage* (* PFN_XcursorLibraryLoadImage)(const char*,const char*,int); 343 #define XcursorImageCreate _glfw.x11.xcursor.ImageCreate 344 #define XcursorImageDestroy _glfw.x11.xcursor.ImageDestroy 345 #define XcursorImageLoadCursor _glfw.x11.xcursor.ImageLoadCursor 346 #define XcursorGetTheme _glfw.x11.xcursor.GetTheme 347 #define XcursorGetDefaultSize _glfw.x11.xcursor.GetDefaultSize 348 #define XcursorLibraryLoadImage _glfw.x11.xcursor.LibraryLoadImage 349 350 typedef Bool (* PFN_XineramaIsActive)(Display*); 351 typedef Bool (* PFN_XineramaQueryExtension)(Display*,int*,int*); 352 typedef XineramaScreenInfo* (* PFN_XineramaQueryScreens)(Display*,int*); 353 #define XineramaIsActive _glfw.x11.xinerama.IsActive 354 #define XineramaQueryExtension _glfw.x11.xinerama.QueryExtension 355 #define XineramaQueryScreens _glfw.x11.xinerama.QueryScreens 356 357 typedef XID xcb_window_t; 358 typedef XID xcb_visualid_t; 359 typedef struct xcb_connection_t xcb_connection_t; 360 typedef xcb_connection_t* (* PFN_XGetXCBConnection)(Display*); 361 #define XGetXCBConnection _glfw.x11.x11xcb.GetXCBConnection 362 363 typedef Bool (* PFN_XF86VidModeQueryExtension)(Display*,int*,int*); 364 typedef Bool (* PFN_XF86VidModeGetGammaRamp)(Display*,int,int,unsigned short*,unsigned short*,unsigned short*); 365 typedef Bool (* PFN_XF86VidModeSetGammaRamp)(Display*,int,int,unsigned short*,unsigned short*,unsigned short*); 366 typedef Bool (* PFN_XF86VidModeGetGammaRampSize)(Display*,int,int*); 367 #define XF86VidModeQueryExtension _glfw.x11.vidmode.QueryExtension 368 #define XF86VidModeGetGammaRamp _glfw.x11.vidmode.GetGammaRamp 369 #define XF86VidModeSetGammaRamp _glfw.x11.vidmode.SetGammaRamp 370 #define XF86VidModeGetGammaRampSize _glfw.x11.vidmode.GetGammaRampSize 371 372 typedef Status (* PFN_XIQueryVersion)(Display*,int*,int*); 373 typedef int (* PFN_XISelectEvents)(Display*,Window,XIEventMask*,int); 374 #define XIQueryVersion _glfw.x11.xi.QueryVersion 375 #define XISelectEvents _glfw.x11.xi.SelectEvents 376 377 typedef Bool (* PFN_XRenderQueryExtension)(Display*,int*,int*); 378 typedef Status (* PFN_XRenderQueryVersion)(Display*dpy,int*,int*); 379 typedef XRenderPictFormat* (* PFN_XRenderFindVisualFormat)(Display*,Visual const*); 380 #define XRenderQueryExtension _glfw.x11.xrender.QueryExtension 381 #define XRenderQueryVersion _glfw.x11.xrender.QueryVersion 382 #define XRenderFindVisualFormat _glfw.x11.xrender.FindVisualFormat 383 384 typedef Bool (* PFN_XShapeQueryExtension)(Display*,int*,int*); 385 typedef Status (* PFN_XShapeQueryVersion)(Display*dpy,int*,int*); 386 typedef void (* PFN_XShapeCombineRegion)(Display*,Window,int,int,int,Region,int); 387 typedef void (* PFN_XShapeCombineMask)(Display*,Window,int,int,int,Pixmap,int); 388 389 #define XShapeQueryExtension _glfw.x11.xshape.QueryExtension 390 #define XShapeQueryVersion _glfw.x11.xshape.QueryVersion 391 #define XShapeCombineRegion _glfw.x11.xshape.ShapeCombineRegion 392 #define XShapeCombineMask _glfw.x11.xshape.ShapeCombineMask 393 394 typedef int (*PFNGLXGETFBCONFIGATTRIBPROC)(Display*,GLXFBConfig,int,int*); 395 typedef const char* (*PFNGLXGETCLIENTSTRINGPROC)(Display*,int); 396 typedef Bool (*PFNGLXQUERYEXTENSIONPROC)(Display*,int*,int*); 397 typedef Bool (*PFNGLXQUERYVERSIONPROC)(Display*,int*,int*); 398 typedef void (*PFNGLXDESTROYCONTEXTPROC)(Display*,GLXContext); 399 typedef Bool (*PFNGLXMAKECURRENTPROC)(Display*,GLXDrawable,GLXContext); 400 typedef void (*PFNGLXSWAPBUFFERSPROC)(Display*,GLXDrawable); 401 typedef const char* (*PFNGLXQUERYEXTENSIONSSTRINGPROC)(Display*,int); 402 typedef GLXFBConfig* (*PFNGLXGETFBCONFIGSPROC)(Display*,int,int*); 403 typedef GLXContext (*PFNGLXCREATENEWCONTEXTPROC)(Display*,GLXFBConfig,int,GLXContext,Bool); 404 typedef __GLXextproc (* PFNGLXGETPROCADDRESSPROC)(const GLubyte *procName); 405 typedef void (*PFNGLXSWAPINTERVALEXTPROC)(Display*,GLXDrawable,int); 406 typedef XVisualInfo* (*PFNGLXGETVISUALFROMFBCONFIGPROC)(Display*,GLXFBConfig); 407 typedef GLXWindow (*PFNGLXCREATEWINDOWPROC)(Display*,GLXFBConfig,Window,const int*); 408 typedef void (*PFNGLXDESTROYWINDOWPROC)(Display*,GLXWindow); 409 410 typedef int (*PFNGLXSWAPINTERVALMESAPROC)(int); 411 typedef int (*PFNGLXSWAPINTERVALSGIPROC)(int); 412 typedef GLXContext (*PFNGLXCREATECONTEXTATTRIBSARBPROC)(Display*,GLXFBConfig,GLXContext,Bool,const int*); 413 414 // libGL.so function pointer typedefs 415 #define glXGetFBConfigs _glfw.glx.GetFBConfigs 416 #define glXGetFBConfigAttrib _glfw.glx.GetFBConfigAttrib 417 #define glXGetClientString _glfw.glx.GetClientString 418 #define glXQueryExtension _glfw.glx.QueryExtension 419 #define glXQueryVersion _glfw.glx.QueryVersion 420 #define glXDestroyContext _glfw.glx.DestroyContext 421 #define glXMakeCurrent _glfw.glx.MakeCurrent 422 #define glXSwapBuffers _glfw.glx.SwapBuffers 423 #define glXQueryExtensionsString _glfw.glx.QueryExtensionsString 424 #define glXCreateNewContext _glfw.glx.CreateNewContext 425 #define glXGetVisualFromFBConfig _glfw.glx.GetVisualFromFBConfig 426 #define glXCreateWindow _glfw.glx.CreateWindow 427 #define glXDestroyWindow _glfw.glx.DestroyWindow 428 429 typedef VkFlags VkXlibSurfaceCreateFlagsKHR; 430 typedef VkFlags VkXcbSurfaceCreateFlagsKHR; 431 432 typedef struct VkXlibSurfaceCreateInfoKHR 433 { 434 VkStructureType sType; 435 const void* pNext; 436 VkXlibSurfaceCreateFlagsKHR flags; 437 Display* dpy; 438 Window window; 439 } VkXlibSurfaceCreateInfoKHR; 440 441 typedef struct VkXcbSurfaceCreateInfoKHR 442 { 443 VkStructureType sType; 444 const void* pNext; 445 VkXcbSurfaceCreateFlagsKHR flags; 446 xcb_connection_t* connection; 447 xcb_window_t window; 448 } VkXcbSurfaceCreateInfoKHR; 449 450 typedef VkResult (APIENTRY *PFN_vkCreateXlibSurfaceKHR)(VkInstance,const VkXlibSurfaceCreateInfoKHR*,const VkAllocationCallbacks*,VkSurfaceKHR*); 451 typedef VkBool32 (APIENTRY *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice,uint32_t,Display*,VisualID); 452 typedef VkResult (APIENTRY *PFN_vkCreateXcbSurfaceKHR)(VkInstance,const VkXcbSurfaceCreateInfoKHR*,const VkAllocationCallbacks*,VkSurfaceKHR*); 453 typedef VkBool32 (APIENTRY *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice,uint32_t,xcb_connection_t*,xcb_visualid_t); 454 455 #include "xkb_unicode.h" 456 #include "posix_poll.h" 457 458 #define GLFW_X11_WINDOW_STATE _GLFWwindowX11 x11; 459 #define GLFW_X11_LIBRARY_WINDOW_STATE _GLFWlibraryX11 x11; 460 #define GLFW_X11_MONITOR_STATE _GLFWmonitorX11 x11; 461 #define GLFW_X11_CURSOR_STATE _GLFWcursorX11 x11; 462 463 #define GLFW_GLX_CONTEXT_STATE _GLFWcontextGLX glx; 464 #define GLFW_GLX_LIBRARY_CONTEXT_STATE _GLFWlibraryGLX glx; 465 466 467 // GLX-specific per-context data 468 // 469 typedef struct _GLFWcontextGLX 470 { 471 GLXContext handle; 472 GLXWindow window; 473 } _GLFWcontextGLX; 474 475 // GLX-specific global data 476 // 477 typedef struct _GLFWlibraryGLX 478 { 479 int major, minor; 480 int eventBase; 481 int errorBase; 482 483 void* handle; 484 485 // GLX 1.3 functions 486 PFNGLXGETFBCONFIGSPROC GetFBConfigs; 487 PFNGLXGETFBCONFIGATTRIBPROC GetFBConfigAttrib; 488 PFNGLXGETCLIENTSTRINGPROC GetClientString; 489 PFNGLXQUERYEXTENSIONPROC QueryExtension; 490 PFNGLXQUERYVERSIONPROC QueryVersion; 491 PFNGLXDESTROYCONTEXTPROC DestroyContext; 492 PFNGLXMAKECURRENTPROC MakeCurrent; 493 PFNGLXSWAPBUFFERSPROC SwapBuffers; 494 PFNGLXQUERYEXTENSIONSSTRINGPROC QueryExtensionsString; 495 PFNGLXCREATENEWCONTEXTPROC CreateNewContext; 496 PFNGLXGETVISUALFROMFBCONFIGPROC GetVisualFromFBConfig; 497 PFNGLXCREATEWINDOWPROC CreateWindow; 498 PFNGLXDESTROYWINDOWPROC DestroyWindow; 499 500 // GLX 1.4 and extension functions 501 PFNGLXGETPROCADDRESSPROC GetProcAddress; 502 PFNGLXGETPROCADDRESSPROC GetProcAddressARB; 503 PFNGLXSWAPINTERVALSGIPROC SwapIntervalSGI; 504 PFNGLXSWAPINTERVALEXTPROC SwapIntervalEXT; 505 PFNGLXSWAPINTERVALMESAPROC SwapIntervalMESA; 506 PFNGLXCREATECONTEXTATTRIBSARBPROC CreateContextAttribsARB; 507 GLFWbool SGI_swap_control; 508 GLFWbool EXT_swap_control; 509 GLFWbool MESA_swap_control; 510 GLFWbool ARB_multisample; 511 GLFWbool ARB_framebuffer_sRGB; 512 GLFWbool EXT_framebuffer_sRGB; 513 GLFWbool ARB_create_context; 514 GLFWbool ARB_create_context_profile; 515 GLFWbool ARB_create_context_robustness; 516 GLFWbool EXT_create_context_es2_profile; 517 GLFWbool ARB_create_context_no_error; 518 GLFWbool ARB_context_flush_control; 519 } _GLFWlibraryGLX; 520 521 // X11-specific per-window data 522 // 523 typedef struct _GLFWwindowX11 524 { 525 Colormap colormap; 526 Window handle; 527 Window parent; 528 XIC ic; 529 530 GLFWbool overrideRedirect; 531 GLFWbool iconified; 532 GLFWbool maximized; 533 534 // Whether the visual supports framebuffer transparency 535 GLFWbool transparent; 536 537 // Cached position and size used to filter out duplicate events 538 int width, height; 539 int xpos, ypos; 540 541 // The last received cursor position, regardless of source 542 int lastCursorPosX, lastCursorPosY; 543 // The last position the cursor was warped to by GLFW 544 int warpCursorPosX, warpCursorPosY; 545 546 // The time of the last KeyPress event per keycode, for discarding 547 // duplicate key events generated for some keys by ibus 548 Time keyPressTimes[256]; 549 } _GLFWwindowX11; 550 551 // X11-specific global data 552 // 553 typedef struct _GLFWlibraryX11 554 { 555 Display* display; 556 int screen; 557 Window root; 558 559 // System content scale 560 float contentScaleX, contentScaleY; 561 // Helper window for IPC 562 Window helperWindowHandle; 563 // Invisible cursor for hidden cursor mode 564 Cursor hiddenCursorHandle; 565 // Context for mapping window XIDs to _GLFWwindow pointers 566 XContext context; 567 // XIM input method 568 XIM im; 569 // The previous X error handler, to be restored later 570 XErrorHandler errorHandler; 571 // Most recent error code received by X error handler 572 int errorCode; 573 // Primary selection string (while the primary selection is owned) 574 char* primarySelectionString; 575 // Clipboard string (while the selection is owned) 576 char* clipboardString; 577 // Key name string 578 char keynames[GLFW_KEY_LAST + 1][5]; 579 // X11 keycode to GLFW key LUT 580 short int keycodes[256]; 581 // GLFW key to X11 keycode LUT 582 short int scancodes[GLFW_KEY_LAST + 1]; 583 // Where to place the cursor when re-enabled 584 double restoreCursorPosX, restoreCursorPosY; 585 // The window whose disabled cursor mode is active 586 _GLFWwindow* disabledCursorWindow; 587 int emptyEventPipe[2]; 588 589 // Window manager atoms 590 Atom NET_SUPPORTED; 591 Atom NET_SUPPORTING_WM_CHECK; 592 Atom WM_PROTOCOLS; 593 Atom WM_STATE; 594 Atom WM_DELETE_WINDOW; 595 Atom NET_WM_NAME; 596 Atom NET_WM_ICON_NAME; 597 Atom NET_WM_ICON; 598 Atom NET_WM_PID; 599 Atom NET_WM_PING; 600 Atom NET_WM_WINDOW_TYPE; 601 Atom NET_WM_WINDOW_TYPE_NORMAL; 602 Atom NET_WM_STATE; 603 Atom NET_WM_STATE_ABOVE; 604 Atom NET_WM_STATE_FULLSCREEN; 605 Atom NET_WM_STATE_MAXIMIZED_VERT; 606 Atom NET_WM_STATE_MAXIMIZED_HORZ; 607 Atom NET_WM_STATE_DEMANDS_ATTENTION; 608 Atom NET_WM_BYPASS_COMPOSITOR; 609 Atom NET_WM_FULLSCREEN_MONITORS; 610 Atom NET_WM_WINDOW_OPACITY; 611 Atom NET_WM_CM_Sx; 612 Atom NET_WORKAREA; 613 Atom NET_CURRENT_DESKTOP; 614 Atom NET_ACTIVE_WINDOW; 615 Atom NET_FRAME_EXTENTS; 616 Atom NET_REQUEST_FRAME_EXTENTS; 617 Atom MOTIF_WM_HINTS; 618 619 // Xdnd (drag and drop) atoms 620 Atom XdndAware; 621 Atom XdndEnter; 622 Atom XdndPosition; 623 Atom XdndStatus; 624 Atom XdndActionCopy; 625 Atom XdndDrop; 626 Atom XdndFinished; 627 Atom XdndSelection; 628 Atom XdndTypeList; 629 Atom text_uri_list; 630 631 // Selection (clipboard) atoms 632 Atom TARGETS; 633 Atom MULTIPLE; 634 Atom INCR; 635 Atom CLIPBOARD; 636 Atom PRIMARY; 637 Atom CLIPBOARD_MANAGER; 638 Atom SAVE_TARGETS; 639 Atom NULL_; 640 Atom UTF8_STRING; 641 Atom COMPOUND_STRING; 642 Atom ATOM_PAIR; 643 Atom GLFW_SELECTION; 644 645 struct { 646 void* handle; 647 GLFWbool utf8; 648 PFN_XAllocClassHint AllocClassHint; 649 PFN_XAllocSizeHints AllocSizeHints; 650 PFN_XAllocWMHints AllocWMHints; 651 PFN_XChangeProperty ChangeProperty; 652 PFN_XChangeWindowAttributes ChangeWindowAttributes; 653 PFN_XCheckIfEvent CheckIfEvent; 654 PFN_XCheckTypedWindowEvent CheckTypedWindowEvent; 655 PFN_XCloseDisplay CloseDisplay; 656 PFN_XCloseIM CloseIM; 657 PFN_XConvertSelection ConvertSelection; 658 PFN_XCreateColormap CreateColormap; 659 PFN_XCreateFontCursor CreateFontCursor; 660 PFN_XCreateIC CreateIC; 661 PFN_XCreateRegion CreateRegion; 662 PFN_XCreateWindow CreateWindow; 663 PFN_XDefineCursor DefineCursor; 664 PFN_XDeleteContext DeleteContext; 665 PFN_XDeleteProperty DeleteProperty; 666 PFN_XDestroyIC DestroyIC; 667 PFN_XDestroyRegion DestroyRegion; 668 PFN_XDestroyWindow DestroyWindow; 669 PFN_XDisplayKeycodes DisplayKeycodes; 670 PFN_XEventsQueued EventsQueued; 671 PFN_XFilterEvent FilterEvent; 672 PFN_XFindContext FindContext; 673 PFN_XFlush Flush; 674 PFN_XFree Free; 675 PFN_XFreeColormap FreeColormap; 676 PFN_XFreeCursor FreeCursor; 677 PFN_XFreeEventData FreeEventData; 678 PFN_XGetErrorText GetErrorText; 679 PFN_XGetEventData GetEventData; 680 PFN_XGetICValues GetICValues; 681 PFN_XGetIMValues GetIMValues; 682 PFN_XGetInputFocus GetInputFocus; 683 PFN_XGetKeyboardMapping GetKeyboardMapping; 684 PFN_XGetScreenSaver GetScreenSaver; 685 PFN_XGetSelectionOwner GetSelectionOwner; 686 PFN_XGetVisualInfo GetVisualInfo; 687 PFN_XGetWMNormalHints GetWMNormalHints; 688 PFN_XGetWindowAttributes GetWindowAttributes; 689 PFN_XGetWindowProperty GetWindowProperty; 690 PFN_XGrabPointer GrabPointer; 691 PFN_XIconifyWindow IconifyWindow; 692 PFN_XInternAtom InternAtom; 693 PFN_XLookupString LookupString; 694 PFN_XMapRaised MapRaised; 695 PFN_XMapWindow MapWindow; 696 PFN_XMoveResizeWindow MoveResizeWindow; 697 PFN_XMoveWindow MoveWindow; 698 PFN_XNextEvent NextEvent; 699 PFN_XOpenIM OpenIM; 700 PFN_XPeekEvent PeekEvent; 701 PFN_XPending Pending; 702 PFN_XQueryExtension QueryExtension; 703 PFN_XQueryPointer QueryPointer; 704 PFN_XRaiseWindow RaiseWindow; 705 PFN_XRegisterIMInstantiateCallback RegisterIMInstantiateCallback; 706 PFN_XResizeWindow ResizeWindow; 707 PFN_XResourceManagerString ResourceManagerString; 708 PFN_XSaveContext SaveContext; 709 PFN_XSelectInput SelectInput; 710 PFN_XSendEvent SendEvent; 711 PFN_XSetClassHint SetClassHint; 712 PFN_XSetErrorHandler SetErrorHandler; 713 PFN_XSetICFocus SetICFocus; 714 PFN_XSetIMValues SetIMValues; 715 PFN_XSetInputFocus SetInputFocus; 716 PFN_XSetLocaleModifiers SetLocaleModifiers; 717 PFN_XSetScreenSaver SetScreenSaver; 718 PFN_XSetSelectionOwner SetSelectionOwner; 719 PFN_XSetWMHints SetWMHints; 720 PFN_XSetWMNormalHints SetWMNormalHints; 721 PFN_XSetWMProtocols SetWMProtocols; 722 PFN_XSupportsLocale SupportsLocale; 723 PFN_XSync Sync; 724 PFN_XTranslateCoordinates TranslateCoordinates; 725 PFN_XUndefineCursor UndefineCursor; 726 PFN_XUngrabPointer UngrabPointer; 727 PFN_XUnmapWindow UnmapWindow; 728 PFN_XUnsetICFocus UnsetICFocus; 729 PFN_XVisualIDFromVisual VisualIDFromVisual; 730 PFN_XWarpPointer WarpPointer; 731 PFN_XUnregisterIMInstantiateCallback UnregisterIMInstantiateCallback; 732 PFN_Xutf8LookupString utf8LookupString; 733 PFN_Xutf8SetWMProperties utf8SetWMProperties; 734 } xlib; 735 736 struct { 737 PFN_XrmDestroyDatabase DestroyDatabase; 738 PFN_XrmGetResource GetResource; 739 PFN_XrmGetStringDatabase GetStringDatabase; 740 PFN_XrmUniqueQuark UniqueQuark; 741 } xrm; 742 743 struct { 744 GLFWbool available; 745 void* handle; 746 int eventBase; 747 int errorBase; 748 int major; 749 int minor; 750 GLFWbool gammaBroken; 751 GLFWbool monitorBroken; 752 PFN_XRRAllocGamma AllocGamma; 753 PFN_XRRFreeCrtcInfo FreeCrtcInfo; 754 PFN_XRRFreeGamma FreeGamma; 755 PFN_XRRFreeOutputInfo FreeOutputInfo; 756 PFN_XRRFreeScreenResources FreeScreenResources; 757 PFN_XRRGetCrtcGamma GetCrtcGamma; 758 PFN_XRRGetCrtcGammaSize GetCrtcGammaSize; 759 PFN_XRRGetCrtcInfo GetCrtcInfo; 760 PFN_XRRGetOutputInfo GetOutputInfo; 761 PFN_XRRGetOutputPrimary GetOutputPrimary; 762 PFN_XRRGetScreenResourcesCurrent GetScreenResourcesCurrent; 763 PFN_XRRQueryExtension QueryExtension; 764 PFN_XRRQueryVersion QueryVersion; 765 PFN_XRRSelectInput SelectInput; 766 PFN_XRRSetCrtcConfig SetCrtcConfig; 767 PFN_XRRSetCrtcGamma SetCrtcGamma; 768 PFN_XRRUpdateConfiguration UpdateConfiguration; 769 } randr; 770 771 struct { 772 GLFWbool available; 773 GLFWbool detectable; 774 int majorOpcode; 775 int eventBase; 776 int errorBase; 777 int major; 778 int minor; 779 unsigned int group; 780 PFN_XkbFreeKeyboard FreeKeyboard; 781 PFN_XkbFreeNames FreeNames; 782 PFN_XkbGetMap GetMap; 783 PFN_XkbGetNames GetNames; 784 PFN_XkbGetState GetState; 785 PFN_XkbKeycodeToKeysym KeycodeToKeysym; 786 PFN_XkbQueryExtension QueryExtension; 787 PFN_XkbSelectEventDetails SelectEventDetails; 788 PFN_XkbSetDetectableAutoRepeat SetDetectableAutoRepeat; 789 } xkb; 790 791 struct { 792 int count; 793 int timeout; 794 int interval; 795 int blanking; 796 int exposure; 797 } saver; 798 799 struct { 800 int version; 801 Window source; 802 Atom format; 803 } xdnd; 804 805 struct { 806 void* handle; 807 PFN_XcursorImageCreate ImageCreate; 808 PFN_XcursorImageDestroy ImageDestroy; 809 PFN_XcursorImageLoadCursor ImageLoadCursor; 810 PFN_XcursorGetTheme GetTheme; 811 PFN_XcursorGetDefaultSize GetDefaultSize; 812 PFN_XcursorLibraryLoadImage LibraryLoadImage; 813 } xcursor; 814 815 struct { 816 GLFWbool available; 817 void* handle; 818 int major; 819 int minor; 820 PFN_XineramaIsActive IsActive; 821 PFN_XineramaQueryExtension QueryExtension; 822 PFN_XineramaQueryScreens QueryScreens; 823 } xinerama; 824 825 struct { 826 void* handle; 827 PFN_XGetXCBConnection GetXCBConnection; 828 } x11xcb; 829 830 struct { 831 GLFWbool available; 832 void* handle; 833 int eventBase; 834 int errorBase; 835 PFN_XF86VidModeQueryExtension QueryExtension; 836 PFN_XF86VidModeGetGammaRamp GetGammaRamp; 837 PFN_XF86VidModeSetGammaRamp SetGammaRamp; 838 PFN_XF86VidModeGetGammaRampSize GetGammaRampSize; 839 } vidmode; 840 841 struct { 842 GLFWbool available; 843 void* handle; 844 int majorOpcode; 845 int eventBase; 846 int errorBase; 847 int major; 848 int minor; 849 PFN_XIQueryVersion QueryVersion; 850 PFN_XISelectEvents SelectEvents; 851 } xi; 852 853 struct { 854 GLFWbool available; 855 void* handle; 856 int major; 857 int minor; 858 int eventBase; 859 int errorBase; 860 PFN_XRenderQueryExtension QueryExtension; 861 PFN_XRenderQueryVersion QueryVersion; 862 PFN_XRenderFindVisualFormat FindVisualFormat; 863 } xrender; 864 865 struct { 866 GLFWbool available; 867 void* handle; 868 int major; 869 int minor; 870 int eventBase; 871 int errorBase; 872 PFN_XShapeQueryExtension QueryExtension; 873 PFN_XShapeCombineRegion ShapeCombineRegion; 874 PFN_XShapeQueryVersion QueryVersion; 875 PFN_XShapeCombineMask ShapeCombineMask; 876 } xshape; 877 } _GLFWlibraryX11; 878 879 // X11-specific per-monitor data 880 // 881 typedef struct _GLFWmonitorX11 882 { 883 RROutput output; 884 RRCrtc crtc; 885 RRMode oldMode; 886 887 // Index of corresponding Xinerama screen, 888 // for EWMH full screen window placement 889 int index; 890 } _GLFWmonitorX11; 891 892 // X11-specific per-cursor data 893 // 894 typedef struct _GLFWcursorX11 895 { 896 Cursor handle; 897 } _GLFWcursorX11; 898 899 900 GLFWbool _glfwConnectX11(int platformID, _GLFWplatform* platform); 901 int _glfwInitX11(void); 902 void _glfwTerminateX11(void); 903 904 GLFWbool _glfwCreateWindowX11(_GLFWwindow* window, const _GLFWwndconfig* wndconfig, const _GLFWctxconfig* ctxconfig, const _GLFWfbconfig* fbconfig); 905 void _glfwDestroyWindowX11(_GLFWwindow* window); 906 void _glfwSetWindowTitleX11(_GLFWwindow* window, const char* title); 907 void _glfwSetWindowIconX11(_GLFWwindow* window, int count, const GLFWimage* images); 908 void _glfwGetWindowPosX11(_GLFWwindow* window, int* xpos, int* ypos); 909 void _glfwSetWindowPosX11(_GLFWwindow* window, int xpos, int ypos); 910 void _glfwGetWindowSizeX11(_GLFWwindow* window, int* width, int* height); 911 void _glfwSetWindowSizeX11(_GLFWwindow* window, int width, int height); 912 void _glfwSetWindowSizeLimitsX11(_GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); 913 void _glfwSetWindowAspectRatioX11(_GLFWwindow* window, int numer, int denom); 914 void _glfwGetFramebufferSizeX11(_GLFWwindow* window, int* width, int* height); 915 void _glfwGetWindowFrameSizeX11(_GLFWwindow* window, int* left, int* top, int* right, int* bottom); 916 void _glfwGetWindowContentScaleX11(_GLFWwindow* window, float* xscale, float* yscale); 917 void _glfwIconifyWindowX11(_GLFWwindow* window); 918 void _glfwRestoreWindowX11(_GLFWwindow* window); 919 void _glfwMaximizeWindowX11(_GLFWwindow* window); 920 void _glfwShowWindowX11(_GLFWwindow* window); 921 void _glfwHideWindowX11(_GLFWwindow* window); 922 void _glfwRequestWindowAttentionX11(_GLFWwindow* window); 923 void _glfwFocusWindowX11(_GLFWwindow* window); 924 void _glfwSetWindowMonitorX11(_GLFWwindow* window, _GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); 925 GLFWbool _glfwWindowFocusedX11(_GLFWwindow* window); 926 GLFWbool _glfwWindowIconifiedX11(_GLFWwindow* window); 927 GLFWbool _glfwWindowVisibleX11(_GLFWwindow* window); 928 GLFWbool _glfwWindowMaximizedX11(_GLFWwindow* window); 929 GLFWbool _glfwWindowHoveredX11(_GLFWwindow* window); 930 GLFWbool _glfwFramebufferTransparentX11(_GLFWwindow* window); 931 void _glfwSetWindowResizableX11(_GLFWwindow* window, GLFWbool enabled); 932 void _glfwSetWindowDecoratedX11(_GLFWwindow* window, GLFWbool enabled); 933 void _glfwSetWindowFloatingX11(_GLFWwindow* window, GLFWbool enabled); 934 float _glfwGetWindowOpacityX11(_GLFWwindow* window); 935 void _glfwSetWindowOpacityX11(_GLFWwindow* window, float opacity); 936 void _glfwSetWindowMousePassthroughX11(_GLFWwindow* window, GLFWbool enabled); 937 938 void _glfwSetRawMouseMotionX11(_GLFWwindow *window, GLFWbool enabled); 939 GLFWbool _glfwRawMouseMotionSupportedX11(void); 940 941 void _glfwPollEventsX11(void); 942 void _glfwWaitEventsX11(void); 943 void _glfwWaitEventsTimeoutX11(double timeout); 944 void _glfwPostEmptyEventX11(void); 945 946 void _glfwGetCursorPosX11(_GLFWwindow* window, double* xpos, double* ypos); 947 void _glfwSetCursorPosX11(_GLFWwindow* window, double xpos, double ypos); 948 void _glfwSetCursorModeX11(_GLFWwindow* window, int mode); 949 const char* _glfwGetScancodeNameX11(int scancode); 950 int _glfwGetKeyScancodeX11(int key); 951 GLFWbool _glfwCreateCursorX11(_GLFWcursor* cursor, const GLFWimage* image, int xhot, int yhot); 952 GLFWbool _glfwCreateStandardCursorX11(_GLFWcursor* cursor, int shape); 953 void _glfwDestroyCursorX11(_GLFWcursor* cursor); 954 void _glfwSetCursorX11(_GLFWwindow* window, _GLFWcursor* cursor); 955 void _glfwSetClipboardStringX11(const char* string); 956 const char* _glfwGetClipboardStringX11(void); 957 958 EGLenum _glfwGetEGLPlatformX11(EGLint** attribs); 959 EGLNativeDisplayType _glfwGetEGLNativeDisplayX11(void); 960 EGLNativeWindowType _glfwGetEGLNativeWindowX11(_GLFWwindow* window); 961 962 void _glfwGetRequiredInstanceExtensionsX11(char** extensions); 963 GLFWbool _glfwGetPhysicalDevicePresentationSupportX11(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); 964 VkResult _glfwCreateWindowSurfaceX11(VkInstance instance, _GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); 965 966 void _glfwFreeMonitorX11(_GLFWmonitor* monitor); 967 void _glfwGetMonitorPosX11(_GLFWmonitor* monitor, int* xpos, int* ypos); 968 void _glfwGetMonitorContentScaleX11(_GLFWmonitor* monitor, float* xscale, float* yscale); 969 void _glfwGetMonitorWorkareaX11(_GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); 970 GLFWvidmode* _glfwGetVideoModesX11(_GLFWmonitor* monitor, int* count); 971 GLFWbool _glfwGetVideoModeX11(_GLFWmonitor* monitor, GLFWvidmode* mode); 972 GLFWbool _glfwGetGammaRampX11(_GLFWmonitor* monitor, GLFWgammaramp* ramp); 973 void _glfwSetGammaRampX11(_GLFWmonitor* monitor, const GLFWgammaramp* ramp); 974 975 void _glfwPollMonitorsX11(void); 976 void _glfwSetVideoModeX11(_GLFWmonitor* monitor, const GLFWvidmode* desired); 977 void _glfwRestoreVideoModeX11(_GLFWmonitor* monitor); 978 979 Cursor _glfwCreateNativeCursorX11(const GLFWimage* image, int xhot, int yhot); 980 981 unsigned long _glfwGetWindowPropertyX11(Window window, 982 Atom property, 983 Atom type, 984 unsigned char** value); 985 GLFWbool _glfwIsVisualTransparentX11(Visual* visual); 986 987 void _glfwGrabErrorHandlerX11(void); 988 void _glfwReleaseErrorHandlerX11(void); 989 void _glfwInputErrorX11(int error, const char* message); 990 991 void _glfwPushSelectionToManagerX11(void); 992 void _glfwCreateInputContextX11(_GLFWwindow* window); 993 994 GLFWbool _glfwInitGLX(void); 995 void _glfwTerminateGLX(void); 996 GLFWbool _glfwCreateContextGLX(_GLFWwindow* window, 997 const _GLFWctxconfig* ctxconfig, 998 const _GLFWfbconfig* fbconfig); 999 void _glfwDestroyContextGLX(_GLFWwindow* window); 1000 GLFWbool _glfwChooseVisualGLX(const _GLFWwndconfig* wndconfig, 1001 const _GLFWctxconfig* ctxconfig, 1002 const _GLFWfbconfig* fbconfig, 1003 Visual** visual, int* depth); 1004