| ofs | hex dump | ascii |
|---|
| 0000 | 56 69 6d 9f 55 6e 44 6f e5 00 03 8e cd a1 49 9b 32 26 02 6d 70 46 9e e9 5d eb f6 f1 d1 fc 6b 96 | Vim.UnDo......I.2&.mpF..].....k. |
| 0020 | fd 99 cf 63 79 ee 0a 53 b4 7e 79 00 00 00 96 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...cy..S.~y..................... |
| 0040 | 20 20 20 20 20 20 20 58 57 61 72 70 50 6f 69 00 00 00 74 00 00 00 1c 00 00 00 01 00 00 00 0a 00 | .......XWarpPoi...t............. |
| 0060 | 00 00 00 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 00 6a 63 47 7f 04 01 00 00 00 05 00 5f d0 | ...................jcG........_. |
| 0080 | 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 | ................................ |
| 00a0 | ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0200 | 00 00 6a 63 46 e1 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 96 00 | ..jcF........................... |
| 0220 | 00 00 15 23 69 6e 63 6c 75 64 65 20 22 70 6c 61 74 66 6f 72 6d 2e 68 22 00 00 00 15 23 69 6e 63 | ...#include."platform.h"....#inc |
| 0240 | 6c 75 64 65 20 3c 58 31 31 2f 58 6c 69 62 2e 68 3e 00 00 00 17 23 69 6e 63 6c 75 64 65 20 3c 58 | lude.<X11/Xlib.h>....#include.<X |
| 0260 | 31 31 2f 6b 65 79 73 79 6d 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 47 4c 2f 67 6c 78 | 11/keysym.h>....#include.<GL/glx |
| 0280 | 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 47 4c 2f 67 6c 2e 68 3e 00 00 00 13 23 69 6e | .h>....#include.<GL/gl.h>....#in |
| 02a0 | 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 | clude.<stdlib.h>....#include.<st |
| 02c0 | 72 69 6e 67 2e 68 3e 00 00 00 00 00 00 00 10 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 00 | ring.h>........typedef.struct.{. |
| 02e0 | 00 00 11 20 20 20 20 44 69 73 70 6c 61 79 20 2a 64 70 79 3b 00 00 00 0f 20 20 20 20 57 69 6e 64 | .......Display.*dpy;........Wind |
| 0300 | 6f 77 20 77 69 6e 3b 00 00 00 13 20 20 20 20 47 4c 58 43 6f 6e 74 65 78 74 20 63 74 78 3b 00 00 | ow.win;........GLXContext.ctx;.. |
| 0320 | 00 13 20 20 20 20 41 74 6f 6d 20 77 6d 5f 64 65 6c 65 74 65 3b 00 00 00 1b 20 20 20 20 69 6e 74 | ......Atom.wm_delete;........int |
| 0340 | 20 63 65 6e 74 65 72 5f 78 2c 20 63 65 6e 74 65 72 5f 79 3b 00 00 00 0f 20 20 20 20 69 6e 74 20 | .center_x,.center_y;........int. |
| 0360 | 77 61 72 70 65 64 3b 00 00 00 0d 7d 20 58 31 31 42 61 63 6b 65 6e 64 3b 00 00 00 00 00 00 00 25 | warped;....}.X11Backend;.......% |
| 0380 | 73 74 61 74 69 63 20 69 6e 74 20 6b 65 79 73 79 6d 5f 74 6f 5f 6b 65 79 28 4b 65 79 53 79 6d 20 | static.int.keysym_to_key(KeySym. |
| 03a0 | 6b 73 29 20 7b 00 00 00 11 20 20 20 20 73 77 69 74 63 68 20 28 6b 73 29 20 7b 00 00 00 2b 20 20 | ks).{........switch.(ks).{...+.. |
| 03c0 | 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 77 3a 20 63 61 73 65 20 58 4b 5f 57 3a 20 72 65 74 75 | ......case.XK_w:.case.XK_W:.retu |
| 03e0 | 72 6e 20 4b 45 59 5f 57 3b 00 00 00 2b 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 61 3a 20 | rn.KEY_W;...+........case.XK_a:. |
| 0400 | 63 61 73 65 20 58 4b 5f 41 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 41 3b 00 00 00 2b 20 20 20 20 | case.XK_A:.return.KEY_A;...+.... |
| 0420 | 20 20 20 20 63 61 73 65 20 58 4b 5f 73 3a 20 63 61 73 65 20 58 4b 5f 53 3a 20 72 65 74 75 72 6e | ....case.XK_s:.case.XK_S:.return |
| 0440 | 20 4b 45 59 5f 53 3b 00 00 00 2b 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 64 3a 20 63 61 | .KEY_S;...+........case.XK_d:.ca |
| 0460 | 73 65 20 58 4b 5f 44 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 44 3b 00 00 00 28 20 20 20 20 20 20 | se.XK_D:.return.KEY_D;...(...... |
| 0480 | 20 20 63 61 73 65 20 58 4b 5f 73 70 61 63 65 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 53 50 41 43 | ..case.XK_space:.return.KEY_SPAC |
| 04a0 | 45 3b 00 00 00 27 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 45 73 63 61 70 65 3a 20 72 65 | E;...'........case.XK_Escape:.re |
| 04c0 | 74 75 72 6e 20 4b 45 59 5f 45 53 43 3b 00 00 00 20 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b | turn.KEY_ESC;............case.XK |
| 04e0 | 5f 31 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 31 3b 00 00 00 20 20 20 20 20 20 20 20 20 63 61 73 | _1:.return.KEY_1;............cas |
| 0500 | 65 20 58 4b 5f 32 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 32 3b 00 00 00 20 20 20 20 20 20 20 20 | e.XK_2:.return.KEY_2;........... |
| 0520 | 20 63 61 73 65 20 58 4b 5f 33 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 33 3b 00 00 00 1b 20 20 20 | .case.XK_3:.return.KEY_3;....... |
| 0540 | 20 20 20 20 20 64 65 66 61 75 6c 74 3a 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 | .....default:.return.-1;........ |
| 0560 | 7d 00 00 00 01 7d 00 00 00 00 00 00 00 45 69 6e 74 20 70 6c 61 74 66 6f 72 6d 5f 78 31 31 5f 69 | }....}.......Eint.platform_x11_i |
| 0580 | 6e 69 74 28 50 6c 61 74 66 6f 72 6d 20 2a 70 2c 20 69 6e 74 20 77 2c 20 69 6e 74 20 68 2c 20 63 | nit(Platform.*p,.int.w,.int.h,.c |
| 05a0 | 6f 6e 73 74 20 63 68 61 72 20 2a 74 69 74 6c 65 29 20 7b 00 00 00 32 20 20 20 20 58 31 31 42 61 | onst.char.*title).{...2....X11Ba |
| 05c0 | 63 6b 65 6e 64 20 2a 62 20 3d 20 63 61 6c 6c 6f 63 28 31 2c 20 73 69 7a 65 6f 66 28 58 31 31 42 | ckend.*b.=.calloc(1,.sizeof(X11B |
| 05e0 | 61 63 6b 65 6e 64 29 29 3b 00 00 00 13 20 20 20 20 70 2d 3e 62 61 63 6b 65 6e 64 20 3d 20 62 3b | ackend));........p->backend.=.b; |
| 0600 | 00 00 00 00 00 00 00 20 20 20 20 20 62 2d 3e 64 70 79 20 3d 20 58 4f 70 65 6e 44 69 73 70 6c 61 | ............b->dpy.=.XOpenDispla |
| 0620 | 79 28 4e 55 4c 4c 29 3b 00 00 00 27 20 20 20 20 69 66 20 28 21 62 2d 3e 64 70 79 29 20 7b 20 66 | y(NULL);...'....if.(!b->dpy).{.f |
| 0640 | 72 65 65 28 62 29 3b 20 72 65 74 75 72 6e 20 30 3b 20 7d 00 00 00 00 00 00 00 27 20 20 20 20 69 | ree(b);.return.0;.}.......'....i |
| 0660 | 6e 74 20 73 63 72 65 65 6e 20 3d 20 44 65 66 61 75 6c 74 53 63 72 65 65 6e 28 62 2d 3e 64 70 79 | nt.screen.=.DefaultScreen(b->dpy |
| 0680 | 29 3b 00 00 00 4d 20 20 20 20 69 6e 74 20 61 74 74 72 69 62 73 5b 5d 20 3d 20 7b 20 47 4c 58 5f | );...M....int.attribs[].=.{.GLX_ |
| 06a0 | 52 47 42 41 2c 20 47 4c 58 5f 44 45 50 54 48 5f 53 49 5a 45 2c 20 32 34 2c 20 47 4c 58 5f 44 4f | RGBA,.GLX_DEPTH_SIZE,.24,.GLX_DO |
| 06c0 | 55 42 4c 45 42 55 46 46 45 52 2c 20 4e 6f 6e 65 20 7d 3b 00 00 00 3f 20 20 20 20 58 56 69 73 75 | UBLEBUFFER,.None.};...?....XVisu |
| 06e0 | 61 6c 49 6e 66 6f 20 2a 76 69 20 3d 20 67 6c 58 43 68 6f 6f 73 65 56 69 73 75 61 6c 28 62 2d 3e | alInfo.*vi.=.glXChooseVisual(b-> |
| 0700 | 64 70 79 2c 20 73 63 72 65 65 6e 2c 20 61 74 74 72 69 62 73 29 3b 00 00 00 3a 20 20 20 20 69 66 | dpy,.screen,.attribs);...:....if |
| 0720 | 20 28 21 76 69 29 20 7b 20 58 43 6c 6f 73 65 44 69 73 70 6c 61 79 28 62 2d 3e 64 70 79 29 3b 20 | .(!vi).{.XCloseDisplay(b->dpy);. |
| 0740 | 66 72 65 65 28 62 29 3b 20 72 65 74 75 72 6e 20 30 3b 20 7d 00 00 00 00 00 00 00 2d 20 20 20 20 | free(b);.return.0;.}.......-.... |
| 0760 | 57 69 6e 64 6f 77 20 72 6f 6f 74 20 3d 20 52 6f 6f 74 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c | Window.root.=.RootWindow(b->dpy, |
| 0780 | 20 73 63 72 65 65 6e 29 3b 00 00 00 49 20 20 20 20 43 6f 6c 6f 72 6d 61 70 20 63 6d 61 70 20 3d | .screen);...I....Colormap.cmap.= |
| 07a0 | 20 58 43 72 65 61 74 65 43 6f 6c 6f 72 6d 61 70 28 62 2d 3e 64 70 79 2c 20 72 6f 6f 74 2c 20 76 | .XCreateColormap(b->dpy,.root,.v |
| 07c0 | 69 2d 3e 76 69 73 75 61 6c 2c 20 41 6c 6c 6f 63 4e 6f 6e 65 29 3b 00 00 00 1d 20 20 20 20 58 53 | i->visual,.AllocNone);........XS |
| 07e0 | 65 74 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 20 73 77 61 3b 00 00 00 18 20 20 20 20 73 | etWindowAttributes.swa;........s |
| 0800 | 77 61 2e 63 6f 6c 6f 72 6d 61 70 20 3d 20 63 6d 61 70 3b 00 00 00 46 20 20 20 20 73 77 61 2e 65 | wa.colormap.=.cmap;...F....swa.e |
| 0820 | 76 65 6e 74 5f 6d 61 73 6b 20 3d 20 4b 65 79 50 72 65 73 73 4d 61 73 6b 20 7c 20 4b 65 79 52 65 | vent_mask.=.KeyPressMask.|.KeyRe |
| 0840 | 6c 65 61 73 65 4d 61 73 6b 20 7c 20 42 75 74 74 6f 6e 50 72 65 73 73 4d 61 73 6b 20 7c 00 00 00 | leaseMask.|.ButtonPressMask.|... |
| 0860 | 52 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 75 74 74 6f 6e 52 65 6c | R......................ButtonRel |
| 0880 | 65 61 73 65 4d 61 73 6b 20 7c 20 50 6f 69 6e 74 65 72 4d 6f 74 69 6f 6e 4d 61 73 6b 20 7c 20 53 | easeMask.|.PointerMotionMask.|.S |
| 08a0 | 74 72 75 63 74 75 72 65 4e 6f 74 69 66 79 4d 61 73 6b 3b 00 00 00 00 00 00 00 56 20 20 20 20 62 | tructureNotifyMask;.......V....b |
| 08c0 | 2d 3e 77 69 6e 20 3d 20 58 43 72 65 61 74 65 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c 20 72 6f | ->win.=.XCreateWindow(b->dpy,.ro |
| 08e0 | 6f 74 2c 20 30 2c 20 30 2c 20 28 75 6e 73 69 67 6e 65 64 29 77 2c 20 28 75 6e 73 69 67 6e 65 64 | ot,.0,.0,.(unsigned)w,.(unsigned |
| 0900 | 29 68 2c 20 30 2c 20 76 69 2d 3e 64 65 70 74 68 2c 00 00 00 55 20 20 20 20 20 20 20 20 20 20 20 | )h,.0,.vi->depth,...U........... |
| 0920 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 70 75 74 4f 75 74 70 75 74 2c 20 76 69 | .................InputOutput,.vi |
| 0940 | 2d 3e 76 69 73 75 61 6c 2c 20 43 57 43 6f 6c 6f 72 6d 61 70 20 7c 20 43 57 45 76 65 6e 74 4d 61 | ->visual,.CWColormap.|.CWEventMa |
| 0960 | 73 6b 2c 20 26 73 77 61 29 3b 00 00 00 26 20 20 20 20 58 53 74 6f 72 65 4e 61 6d 65 28 62 2d 3e | sk,.&swa);...&....XStoreName(b-> |
| 0980 | 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 74 69 74 6c 65 29 3b 00 00 00 42 20 20 20 20 62 2d 3e 77 | dpy,.b->win,.title);...B....b->w |
| 09a0 | 6d 5f 64 65 6c 65 74 65 20 3d 20 58 49 6e 74 65 72 6e 41 74 6f 6d 28 62 2d 3e 64 70 79 2c 20 22 | m_delete.=.XInternAtom(b->dpy,." |
| 09c0 | 57 4d 5f 44 45 4c 45 54 45 5f 57 49 4e 44 4f 57 22 2c 20 46 61 6c 73 65 29 3b 00 00 00 36 20 20 | WM_DELETE_WINDOW",.False);...6.. |
| 09e0 | 20 20 58 53 65 74 57 4d 50 72 6f 74 6f 63 6f 6c 73 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e | ..XSetWMProtocols(b->dpy,.b->win |
| 0a00 | 2c 20 26 62 2d 3e 77 6d 5f 64 65 6c 65 74 65 2c 20 31 29 3b 00 00 00 1f 20 20 20 20 58 4d 61 70 | ,.&b->wm_delete,.1);........XMap |
| 0a20 | 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 29 3b 00 00 00 00 00 00 00 36 20 | Window(b->dpy,.b->win);.......6. |
| 0a40 | 20 20 20 62 2d 3e 63 74 78 20 3d 20 67 6c 58 43 72 65 61 74 65 43 6f 6e 74 65 78 74 28 62 2d 3e | ...b->ctx.=.glXCreateContext(b-> |
| 0a60 | 64 70 79 2c 20 76 69 2c 20 4e 55 4c 4c 2c 20 54 72 75 65 29 3b 00 00 00 2b 20 20 20 20 67 6c 58 | dpy,.vi,.NULL,.True);...+....glX |
| 0a80 | 4d 61 6b 65 43 75 72 72 65 6e 74 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 62 2d 3e 63 | MakeCurrent(b->dpy,.b->win,.b->c |
| 0aa0 | 74 78 29 3b 00 00 00 0e 20 20 20 20 58 46 72 65 65 28 76 69 29 3b 00 00 00 00 00 00 00 17 20 20 | tx);........XFree(vi);.......... |
| 0ac0 | 20 20 63 68 61 72 20 64 61 74 61 5b 38 5d 20 3d 20 7b 30 7d 3b 00 00 00 45 20 20 20 20 50 69 78 | ..char.data[8].=.{0};...E....Pix |
| 0ae0 | 6d 61 70 20 62 6c 61 6e 6b 20 3d 20 58 43 72 65 61 74 65 42 69 74 6d 61 70 46 72 6f 6d 44 61 74 | map.blank.=.XCreateBitmapFromDat |
| 0b00 | 61 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 64 61 74 61 2c 20 31 2c 20 31 29 3b 00 00 | a(b->dpy,.b->win,.data,.1,.1);.. |
| 0b20 | 00 11 20 20 20 20 58 43 6f 6c 6f 72 20 64 75 6d 6d 79 3b 00 00 00 25 20 20 20 20 6d 65 6d 73 65 | ......XColor.dummy;...%....memse |
| 0b40 | 74 28 26 64 75 6d 6d 79 2c 20 30 2c 20 73 69 7a 65 6f 66 28 64 75 6d 6d 79 29 29 3b 00 00 00 54 | t(&dummy,.0,.sizeof(dummy));...T |
| 0b60 | 20 20 20 20 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 3d 20 58 43 72 65 61 74 65 50 69 78 6d 61 | ....Cursor.cursor.=.XCreatePixma |
| 0b80 | 70 43 75 72 73 6f 72 28 62 2d 3e 64 70 79 2c 20 62 6c 61 6e 6b 2c 20 62 6c 61 6e 6b 2c 20 26 64 | pCursor(b->dpy,.blank,.blank,.&d |
| 0ba0 | 75 6d 6d 79 2c 20 26 64 75 6d 6d 79 2c 20 30 2c 20 30 29 3b 00 00 00 2a 20 20 20 20 58 44 65 66 | ummy,.&dummy,.0,.0);...*....XDef |
| 0bc0 | 69 6e 65 43 75 72 73 6f 72 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 63 75 72 73 6f 72 | ineCursor(b->dpy,.b->win,.cursor |
| 0be0 | 29 3b 00 00 00 1f 20 20 20 20 58 46 72 65 65 50 69 78 6d 61 70 28 62 2d 3e 64 70 79 2c 20 62 6c | );........XFreePixmap(b->dpy,.bl |
| 0c00 | 61 6e 6b 29 3b 00 00 00 20 20 20 20 20 58 46 72 65 65 43 75 72 73 6f 72 28 62 2d 3e 64 70 79 2c | ank);........XFreeCursor(b->dpy, |
| 0c20 | 20 63 75 72 73 6f 72 29 3b 00 00 00 00 00 00 00 19 20 20 20 20 58 53 79 6e 63 28 62 2d 3e 64 70 | .cursor);............XSync(b->dp |
| 0c40 | 79 2c 20 46 61 6c 73 65 29 3b 00 00 00 47 20 20 20 20 58 47 72 61 62 50 6f 69 6e 74 65 72 28 62 | y,.False);...G....XGrabPointer(b |
| 0c60 | 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 54 72 75 65 2c 20 30 2c 20 47 72 61 62 4d 6f 64 65 | ->dpy,.b->win,.True,.0,.GrabMode |
| 0c80 | 41 73 79 6e 63 2c 20 47 72 61 62 4d 6f 64 65 41 73 79 6e 63 2c 00 00 00 2c 20 20 20 20 20 20 20 | Async,.GrabModeAsync,...,....... |
| 0ca0 | 20 20 20 20 20 20 20 20 20 20 62 2d 3e 77 69 6e 2c 20 4e 6f 6e 65 2c 20 43 75 72 72 65 6e 74 54 | ..........b->win,.None,.CurrentT |
| 0cc0 | 69 6d 65 29 3b 00 00 00 00 00 00 00 17 20 20 20 20 70 2d 3e 73 74 61 74 65 2e 77 69 64 74 68 20 | ime);............p->state.width. |
| 0ce0 | 3d 20 77 3b 00 00 00 18 20 20 20 20 70 2d 3e 73 74 61 74 65 2e 68 65 69 67 68 74 20 3d 20 68 3b | =.w;........p->state.height.=.h; |
| 0d00 | 00 00 00 18 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 78 20 3d 20 77 20 2f 20 32 3b 00 00 00 18 | ........b->center_x.=.w./.2;.... |
| 0d20 | 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 79 20 3d 20 68 20 2f 20 32 3b 00 00 00 4d 20 20 20 20 | ....b->center_y.=.h./.2;...M.... |
| 0d40 | 58 57 61 72 70 50 6f 69 6e 74 65 72 28 62 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c 20 62 2d 3e 77 69 | XWarpPointer(b->dpy,.None,.b->wi |
| 0d60 | 6e 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c 20 62 2d 3e 63 65 6e 74 65 72 5f 78 2c 20 62 2d 3e 63 | n,.0,.0,.0,.0,.b->center_x,.b->c |
| 0d80 | 65 6e 74 65 72 5f 79 29 3b 00 00 00 12 20 20 20 20 62 2d 3e 77 61 72 70 65 64 20 3d 20 31 3b 00 | enter_y);........b->warped.=.1;. |
| 0da0 | 00 00 19 20 20 20 20 58 53 79 6e 63 28 62 2d 3e 64 70 79 2c 20 46 61 6c 73 65 29 3b 00 00 00 00 | .......XSync(b->dpy,.False);.... |
| 0dc0 | 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 01 7d 00 00 00 00 00 00 00 25 76 6f | ........return.1;....}.......%vo |
| 0de0 | 69 64 20 70 6c 61 74 66 6f 72 6d 5f 78 31 31 5f 70 6f 6c 6c 28 50 6c 61 74 66 6f 72 6d 20 2a 70 | id.platform_x11_poll(Platform.*p |
| 0e00 | 29 20 7b 00 00 00 1f 20 20 20 20 58 31 31 42 61 63 6b 65 6e 64 20 2a 62 20 3d 20 70 2d 3e 62 61 | ).{........X11Backend.*b.=.p->ba |
| 0e20 | 63 6b 65 6e 64 3b 00 00 00 1a 20 20 20 20 70 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 78 20 | ckend;........p->state.mouse_dx. |
| 0e40 | 3d 20 30 3b 00 00 00 1a 20 20 20 20 70 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 79 20 3d 20 | =.0;........p->state.mouse_dy.=. |
| 0e60 | 30 3b 00 00 00 00 00 00 00 1e 20 20 20 20 77 68 69 6c 65 20 28 58 50 65 6e 64 69 6e 67 28 62 2d | 0;............while.(XPending(b- |
| 0e80 | 3e 64 70 79 29 29 20 7b 00 00 00 11 20 20 20 20 20 20 20 20 58 45 76 65 6e 74 20 65 3b 00 00 00 | >dpy)).{............XEvent.e;... |
| 0ea0 | 1f 20 20 20 20 20 20 20 20 58 4e 65 78 74 45 76 65 6e 74 28 62 2d 3e 64 70 79 2c 20 26 65 29 3b | .........XNextEvent(b->dpy,.&e); |
| 0ec0 | 00 00 00 19 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 65 2e 74 79 70 65 29 20 7b 00 00 00 | ............switch.(e.type).{... |
| 0ee0 | 2d 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 4b 65 79 50 72 65 73 73 3a 20 63 61 73 65 | -............case.KeyPress:.case |
| 0f00 | 20 4b 65 79 52 65 6c 65 61 73 65 3a 20 7b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .KeyRelease:.{...6.............. |
| 0f20 | 20 20 4b 65 79 53 79 6d 20 6b 73 20 3d 20 58 4c 6f 6f 6b 75 70 4b 65 79 73 79 6d 28 26 65 2e 78 | ..KeySym.ks.=.XLookupKeysym(&e.x |
| 0f40 | 6b 65 79 2c 20 30 29 3b 00 00 00 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 | key,.0);...*................int. |
| 0f60 | 6b 20 3d 20 6b 65 79 73 79 6d 5f 74 6f 5f 6b 65 79 28 6b 73 29 3b 00 00 00 44 20 20 20 20 20 20 | k.=.keysym_to_key(ks);...D...... |
| 0f80 | 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 20 3e 3d 20 30 29 20 70 2d 3e 73 74 61 74 65 2e 6b | ..........if.(k.>=.0).p->state.k |
| 0fa0 | 65 79 73 5b 6b 5d 20 3d 20 28 65 2e 74 79 70 65 20 3d 3d 20 4b 65 79 50 72 65 73 73 29 3b 00 00 | eys[k].=.(e.type.==.KeyPress);.. |
| 0fc0 | 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 | ..................break;........ |
| 0fe0 | 20 20 20 20 20 20 20 20 7d 00 00 00 33 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 42 75 | ........}...3............case.Bu |
| 1000 | 74 74 6f 6e 50 72 65 73 73 3a 20 63 61 73 65 20 42 75 74 74 6f 6e 52 65 6c 65 61 73 65 3a 20 7b | ttonPress:.case.ButtonRelease:.{ |
| 1020 | 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 70 72 65 73 73 65 64 20 | ...6................int.pressed. |
| 1040 | 3d 20 28 65 2e 74 79 70 65 20 3d 3d 20 42 75 74 74 6f 6e 50 72 65 73 73 29 3b 00 00 00 4f 20 20 | =.(e.type.==.ButtonPress);...O.. |
| 1060 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 2e 78 62 75 74 74 6f 6e 2e 62 75 74 74 | ..............if.(e.xbutton.butt |
| 1080 | 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 31 29 20 70 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 6c 65 | on.==.Button1).p->state.mouse_le |
| 10a0 | 66 74 20 3d 20 70 72 65 73 73 65 64 3b 00 00 00 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ft.=.pressed;...P............... |
| 10c0 | 20 69 66 20 28 65 2e 78 62 75 74 74 6f 6e 2e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 33 | .if.(e.xbutton.button.==.Button3 |
| 10e0 | 29 20 70 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 72 69 67 68 74 20 3d 20 70 72 65 73 73 65 64 | ).p->state.mouse_right.=.pressed |
| 1100 | 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 | ;....................break;..... |
| 1120 | 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 | ...........}................case |
| 1140 | 20 4d 6f 74 69 6f 6e 4e 6f 74 69 66 79 3a 20 7b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 | .MotionNotify:.{................ |
| 1160 | 20 20 20 20 69 66 20 28 62 2d 3e 77 61 72 70 65 64 29 20 7b 00 00 00 22 20 20 20 20 20 20 20 20 | ....if.(b->warped).{..."........ |
| 1180 | 20 20 20 20 20 20 20 20 20 20 20 20 62 2d 3e 77 61 72 70 65 64 20 3d 20 30 3b 00 00 00 18 20 20 | ............b->warped.=.0;...... |
| 11a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 43 20 20 20 20 20 20 | ..............}.else.{...C...... |
| 11c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 78 20 | ..............p->state.mouse_dx. |
| 11e0 | 2b 3d 20 65 2e 78 6d 6f 74 69 6f 6e 2e 78 20 2d 20 62 2d 3e 63 65 6e 74 65 72 5f 78 3b 00 00 00 | +=.e.xmotion.x.-.b->center_x;... |
| 1200 | 43 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 2d 3e 73 74 61 74 65 2e 6d 6f | C....................p->state.mo |
| 1220 | 75 73 65 5f 64 79 20 2b 3d 20 65 2e 78 6d 6f 74 69 6f 6e 2e 79 20 2d 20 62 2d 3e 63 65 6e 74 65 | use_dy.+=.e.xmotion.y.-.b->cente |
| 1240 | 72 5f 79 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 4f 20 20 20 | r_y;....................}...O... |
| 1260 | 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 2e 78 6d 6f 74 69 6f 6e 2e 78 20 21 3d 20 | .............if.(e.xmotion.x.!=. |
| 1280 | 62 2d 3e 63 65 6e 74 65 72 5f 78 20 7c 7c 20 65 2e 78 6d 6f 74 69 6f 6e 2e 79 20 21 3d 20 62 2d | b->center_x.||.e.xmotion.y.!=.b- |
| 12a0 | 3e 63 65 6e 74 65 72 5f 79 29 20 7b 00 00 00 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | >center_y).{...]................ |
| 12c0 | 20 20 20 20 58 57 61 72 70 50 6f 69 6e 74 65 72 28 62 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c 20 62 | ....XWarpPointer(b->dpy,.None,.b |
| 12e0 | 2d 3e 77 69 6e 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c 20 62 2d 3e 63 65 6e 74 65 72 5f 78 2c 20 | ->win,.0,.0,.0,.0,.b->center_x,. |
| 1300 | 62 2d 3e 63 65 6e 74 65 72 5f 79 29 3b 00 00 00 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | b->center_y);..."............... |
| 1320 | 20 20 20 20 20 62 2d 3e 77 61 72 70 65 64 20 3d 20 31 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 | .....b->warped.=.1;............. |
| 1340 | 20 20 20 20 20 20 20 7d 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 | .......}....................brea |
| 1360 | 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 23 20 20 20 20 20 20 20 20 20 | k;................}...#......... |
| 1380 | 20 20 20 63 61 73 65 20 43 6f 6e 66 69 67 75 72 65 4e 6f 74 69 66 79 3a 20 7b 00 00 00 34 20 20 | ...case.ConfigureNotify:.{...4.. |
| 13a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 2d 3e 73 74 61 74 65 2e 77 69 64 74 68 20 3d 20 65 | ..............p->state.width.=.e |
| 13c0 | 2e 78 63 6f 6e 66 69 67 75 72 65 2e 77 69 64 74 68 3b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 | .xconfigure.width;...6.......... |
| 13e0 | 20 20 20 20 20 20 70 2d 3e 73 74 61 74 65 2e 68 65 69 67 68 74 20 3d 20 65 2e 78 63 6f 6e 66 69 | ......p->state.height.=.e.xconfi |
| 1400 | 67 75 72 65 2e 68 65 69 67 68 74 3b 00 00 00 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | gure.height;...1................ |
| 1420 | 62 2d 3e 63 65 6e 74 65 72 5f 78 20 3d 20 70 2d 3e 73 74 61 74 65 2e 77 69 64 74 68 20 2f 20 32 | b->center_x.=.p->state.width./.2 |
| 1440 | 3b 00 00 00 32 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 79 | ;...2................b->center_y |
| 1460 | 20 3d 20 70 2d 3e 73 74 61 74 65 2e 68 65 69 67 68 74 20 2f 20 32 3b 00 00 00 16 20 20 20 20 20 | .=.p->state.height./.2;......... |
| 1480 | 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 | ...........break;............... |
| 14a0 | 20 7d 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 43 6c 69 65 6e 74 4d 65 73 | .}...!............case.ClientMes |
| 14c0 | 73 61 67 65 3a 20 7b 00 00 00 3e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 | sage:.{...>................if.(( |
| 14e0 | 41 74 6f 6d 29 65 2e 78 63 6c 69 65 6e 74 2e 64 61 74 61 2e 6c 5b 30 5d 20 3d 3d 20 62 2d 3e 77 | Atom)e.xclient.data.l[0].==.b->w |
| 1500 | 6d 5f 64 65 6c 65 74 65 29 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | m_delete)....................... |
| 1520 | 20 70 2d 3e 73 74 61 74 65 2e 73 68 6f 75 6c 64 5f 63 6c 6f 73 65 20 3d 20 31 3b 00 00 00 16 20 | .p->state.should_close.=.1;..... |
| 1540 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 | ...............break;........... |
| 1560 | 20 20 20 20 20 7d 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 20 62 | .....}................default:.b |
| 1580 | 72 65 61 6b 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d | reak;............}........}....} |
| 15a0 | 00 00 00 00 00 00 00 25 76 6f 69 64 20 70 6c 61 74 66 6f 72 6d 5f 78 31 31 5f 73 77 61 70 28 50 | .......%void.platform_x11_swap(P |
| 15c0 | 6c 61 74 66 6f 72 6d 20 2a 70 29 20 7b 00 00 00 1f 20 20 20 20 58 31 31 42 61 63 6b 65 6e 64 20 | latform.*p).{........X11Backend. |
| 15e0 | 2a 62 20 3d 20 70 2d 3e 62 61 63 6b 65 6e 64 3b 00 00 00 23 20 20 20 20 67 6c 58 53 77 61 70 42 | *b.=.p->backend;...#....glXSwapB |
| 1600 | 75 66 66 65 72 73 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 29 3b 00 00 00 01 7d 00 00 00 00 | uffers(b->dpy,.b->win);....}.... |
| 1620 | 00 00 00 28 76 6f 69 64 20 70 6c 61 74 66 6f 72 6d 5f 78 31 31 5f 64 65 73 74 72 6f 79 28 50 6c | ...(void.platform_x11_destroy(Pl |
| 1640 | 61 74 66 6f 72 6d 20 2a 70 29 20 7b 00 00 00 1f 20 20 20 20 58 31 31 42 61 63 6b 65 6e 64 20 2a | atform.*p).{........X11Backend.* |
| 1660 | 62 20 3d 20 70 2d 3e 62 61 63 6b 65 6e 64 3b 00 00 00 27 20 20 20 20 67 6c 58 4d 61 6b 65 43 75 | b.=.p->backend;...'....glXMakeCu |
| 1680 | 72 72 65 6e 74 28 62 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c 20 4e 55 4c 4c 29 3b 00 00 00 26 20 20 | rrent(b->dpy,.None,.NULL);...&.. |
| 16a0 | 20 20 67 6c 58 44 65 73 74 72 6f 79 43 6f 6e 74 65 78 74 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 63 | ..glXDestroyContext(b->dpy,.b->c |
| 16c0 | 74 78 29 3b 00 00 00 23 20 20 20 20 58 44 65 73 74 72 6f 79 57 69 6e 64 6f 77 28 62 2d 3e 64 70 | tx);...#....XDestroyWindow(b->dp |
| 16e0 | 79 2c 20 62 2d 3e 77 69 6e 29 3b 00 00 00 1a 20 20 20 20 58 43 6c 6f 73 65 44 69 73 70 6c 61 79 | y,.b->win);........XCloseDisplay |
| 1700 | 28 62 2d 3e 64 70 79 29 3b 00 00 00 0c 20 20 20 20 66 72 65 65 28 62 29 3b 00 00 00 01 7d 35 81 | (b->dpy);........free(b);....}5. |
| 1720 | f5 18 00 00 00 00 00 00 00 00 00 00 00 00 96 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 | ................................ |
| 1740 | 00 00 00 00 00 00 3d 13 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 01 00 00 | ......=...............5._....... |
| 1760 | 00 03 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 | ................................ |
| 1780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 17e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 18c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 63 46 e1 | ............................jcF. |
| 18e0 | 04 01 00 00 00 01 00 f5 18 00 00 00 76 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 16 20 20 20 | ............v................... |
| 1900 | 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b f5 18 00 00 00 77 00 00 00 00 00 00 00 | .............break;.....w....... |
| 1920 | 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 | ................................ |
| 1940 | 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .............5.................. |
| 1960 | 00 00 00 00 00 76 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f9 0f 00 | .....v.......................... |
| 1980 | 00 00 00 00 00 f5 18 00 00 00 00 76 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 1f 00 00 00 01 | ...........v.................... |
| 19a0 | 00 00 00 f9 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 57 03 00 00 00 00 00 00 35 81 5f d0 00 | ...................W.......5._.. |
| 19c0 | 00 00 02 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 01 00 00 00 00 00 00 00 00 ff | ................................ |
| 19e0 | ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b40 | 00 6a 63 47 0b 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 96 00 00 | .jcG............................ |
| 1b60 | 00 13 23 69 6e 63 6c 75 64 65 20 22 77 69 6e 64 6f 77 2e 68 22 00 00 00 15 23 69 6e 63 6c 75 64 | ..#include."window.h"....#includ |
| 1b80 | 65 20 3c 58 31 31 2f 58 6c 69 62 2e 68 3e 00 00 00 17 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f | e.<X11/Xlib.h>....#include.<X11/ |
| 1ba0 | 6b 65 79 73 79 6d 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 47 4c 2f 67 6c 78 2e 68 3e | keysym.h>....#include.<GL/glx.h> |
| 1bc0 | 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 47 4c 2f 67 6c 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 | ....#include.<GL/gl.h>....#inclu |
| 1be0 | 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e | de.<stdlib.h>....#include.<strin |
| 1c00 | 67 2e 68 3e 00 00 00 00 00 00 00 10 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 00 00 00 11 | g.h>........typedef.struct.{.... |
| 1c20 | 20 20 20 20 44 69 73 70 6c 61 79 20 2a 64 70 79 3b 00 00 00 0f 20 20 20 20 57 69 6e 64 6f 77 20 | ....Display.*dpy;........Window. |
| 1c40 | 77 69 6e 3b 00 00 00 13 20 20 20 20 47 4c 58 43 6f 6e 74 65 78 74 20 63 74 78 3b 00 00 00 13 20 | win;........GLXContext.ctx;..... |
| 1c60 | 20 20 20 41 74 6f 6d 20 77 6d 5f 64 65 6c 65 74 65 3b 00 00 00 1b 20 20 20 20 69 6e 74 20 63 65 | ...Atom.wm_delete;........int.ce |
| 1c80 | 6e 74 65 72 5f 78 2c 20 63 65 6e 74 65 72 5f 79 3b 00 00 00 0f 20 20 20 20 69 6e 74 20 77 61 72 | nter_x,.center_y;........int.war |
| 1ca0 | 70 65 64 3b 00 00 00 0d 7d 20 58 31 31 42 61 63 6b 65 6e 64 3b 00 00 00 00 00 00 00 25 73 74 61 | ped;....}.X11Backend;.......%sta |
| 1cc0 | 74 69 63 20 69 6e 74 20 6b 65 79 73 79 6d 5f 74 6f 5f 6b 65 79 28 4b 65 79 53 79 6d 20 6b 73 29 | tic.int.keysym_to_key(KeySym.ks) |
| 1ce0 | 20 7b 00 00 00 11 20 20 20 20 73 77 69 74 63 68 20 28 6b 73 29 20 7b 00 00 00 2b 20 20 20 20 20 | .{........switch.(ks).{...+..... |
| 1d00 | 20 20 20 63 61 73 65 20 58 4b 5f 77 3a 20 63 61 73 65 20 58 4b 5f 57 3a 20 72 65 74 75 72 6e 20 | ...case.XK_w:.case.XK_W:.return. |
| 1d20 | 4b 45 59 5f 57 3b 00 00 00 2b 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 61 3a 20 63 61 73 | KEY_W;...+........case.XK_a:.cas |
| 1d40 | 65 20 58 4b 5f 41 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 41 3b 00 00 00 2b 20 20 20 20 20 20 20 | e.XK_A:.return.KEY_A;...+....... |
| 1d60 | 20 63 61 73 65 20 58 4b 5f 73 3a 20 63 61 73 65 20 58 4b 5f 53 3a 20 72 65 74 75 72 6e 20 4b 45 | .case.XK_s:.case.XK_S:.return.KE |
| 1d80 | 59 5f 53 3b 00 00 00 2b 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 64 3a 20 63 61 73 65 20 | Y_S;...+........case.XK_d:.case. |
| 1da0 | 58 4b 5f 44 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 44 3b 00 00 00 28 20 20 20 20 20 20 20 20 63 | XK_D:.return.KEY_D;...(........c |
| 1dc0 | 61 73 65 20 58 4b 5f 73 70 61 63 65 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 53 50 41 43 45 3b 00 | ase.XK_space:.return.KEY_SPACE;. |
| 1de0 | 00 00 27 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 45 73 63 61 70 65 3a 20 72 65 74 75 72 | ..'........case.XK_Escape:.retur |
| 1e00 | 6e 20 4b 45 59 5f 45 53 43 3b 00 00 00 20 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 31 3a | n.KEY_ESC;............case.XK_1: |
| 1e20 | 20 72 65 74 75 72 6e 20 4b 45 59 5f 31 3b 00 00 00 20 20 20 20 20 20 20 20 20 63 61 73 65 20 58 | .return.KEY_1;............case.X |
| 1e40 | 4b 5f 32 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 32 3b 00 00 00 20 20 20 20 20 20 20 20 20 63 61 | K_2:.return.KEY_2;............ca |
| 1e60 | 73 65 20 58 4b 5f 33 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 33 3b 00 00 00 1b 20 20 20 20 20 20 | se.XK_3:.return.KEY_3;.......... |
| 1e80 | 20 20 64 65 66 61 75 6c 74 3a 20 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 | ..default:.return.-1;........}.. |
| 1ea0 | 00 01 7d 00 00 00 00 00 00 00 4a 69 6e 74 20 77 69 6e 64 6f 77 5f 78 31 31 5f 69 6e 69 74 28 57 | ..}.......Jint.window_x11_init(W |
| 1ec0 | 69 6e 64 6f 77 20 2a 77 2c 20 69 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 2c | indow.*w,.int.width,.int.height, |
| 1ee0 | 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 74 69 74 6c 65 29 20 7b 00 00 00 32 20 20 20 20 58 31 31 | .const.char.*title).{...2....X11 |
| 1f00 | 42 61 63 6b 65 6e 64 20 2a 62 20 3d 20 63 61 6c 6c 6f 63 28 31 2c 20 73 69 7a 65 6f 66 28 58 31 | Backend.*b.=.calloc(1,.sizeof(X1 |
| 1f20 | 31 42 61 63 6b 65 6e 64 29 29 3b 00 00 00 13 20 20 20 20 77 2d 3e 62 61 63 6b 65 6e 64 20 3d 20 | 1Backend));........w->backend.=. |
| 1f40 | 62 3b 00 00 00 00 00 00 00 20 20 20 20 20 62 2d 3e 64 70 79 20 3d 20 58 4f 70 65 6e 44 69 73 70 | b;............b->dpy.=.XOpenDisp |
| 1f60 | 6c 61 79 28 4e 55 4c 4c 29 3b 00 00 00 27 20 20 20 20 69 66 20 28 21 62 2d 3e 64 70 79 29 20 7b | lay(NULL);...'....if.(!b->dpy).{ |
| 1f80 | 20 66 72 65 65 28 62 29 3b 20 72 65 74 75 72 6e 20 30 3b 20 7d 00 00 00 00 00 00 00 27 20 20 20 | .free(b);.return.0;.}.......'... |
| 1fa0 | 20 69 6e 74 20 73 63 72 65 65 6e 20 3d 20 44 65 66 61 75 6c 74 53 63 72 65 65 6e 28 62 2d 3e 64 | .int.screen.=.DefaultScreen(b->d |
| 1fc0 | 70 79 29 3b 00 00 00 4d 20 20 20 20 69 6e 74 20 61 74 74 72 69 62 73 5b 5d 20 3d 20 7b 20 47 4c | py);...M....int.attribs[].=.{.GL |
| 1fe0 | 58 5f 52 47 42 41 2c 20 47 4c 58 5f 44 45 50 54 48 5f 53 49 5a 45 2c 20 32 34 2c 20 47 4c 58 5f | X_RGBA,.GLX_DEPTH_SIZE,.24,.GLX_ |
| 2000 | 44 4f 55 42 4c 45 42 55 46 46 45 52 2c 20 4e 6f 6e 65 20 7d 3b 00 00 00 3f 20 20 20 20 58 56 69 | DOUBLEBUFFER,.None.};...?....XVi |
| 2020 | 73 75 61 6c 49 6e 66 6f 20 2a 76 69 20 3d 20 67 6c 58 43 68 6f 6f 73 65 56 69 73 75 61 6c 28 62 | sualInfo.*vi.=.glXChooseVisual(b |
| 2040 | 2d 3e 64 70 79 2c 20 73 63 72 65 65 6e 2c 20 61 74 74 72 69 62 73 29 3b 00 00 00 3a 20 20 20 20 | ->dpy,.screen,.attribs);...:.... |
| 2060 | 69 66 20 28 21 76 69 29 20 7b 20 58 43 6c 6f 73 65 44 69 73 70 6c 61 79 28 62 2d 3e 64 70 79 29 | if.(!vi).{.XCloseDisplay(b->dpy) |
| 2080 | 3b 20 66 72 65 65 28 62 29 3b 20 72 65 74 75 72 6e 20 30 3b 20 7d 00 00 00 00 00 00 00 2f 20 20 | ;.free(b);.return.0;.}......./.. |
| 20a0 | 20 20 3a 3a 57 69 6e 64 6f 77 20 72 6f 6f 74 20 3d 20 52 6f 6f 74 57 69 6e 64 6f 77 28 62 2d 3e | ..::Window.root.=.RootWindow(b-> |
| 20c0 | 64 70 79 2c 20 73 63 72 65 65 6e 29 3b 00 00 00 49 20 20 20 20 43 6f 6c 6f 72 6d 61 70 20 63 6d | dpy,.screen);...I....Colormap.cm |
| 20e0 | 61 70 20 3d 20 58 43 72 65 61 74 65 43 6f 6c 6f 72 6d 61 70 28 62 2d 3e 64 70 79 2c 20 72 6f 6f | ap.=.XCreateColormap(b->dpy,.roo |
| 2100 | 74 2c 20 76 69 2d 3e 76 69 73 75 61 6c 2c 20 41 6c 6c 6f 63 4e 6f 6e 65 29 3b 00 00 00 1d 20 20 | t,.vi->visual,.AllocNone);...... |
| 2120 | 20 20 58 53 65 74 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 20 73 77 61 3b 00 00 00 18 20 | ..XSetWindowAttributes.swa;..... |
| 2140 | 20 20 20 73 77 61 2e 63 6f 6c 6f 72 6d 61 70 20 3d 20 63 6d 61 70 3b 00 00 00 46 20 20 20 20 73 | ...swa.colormap.=.cmap;...F....s |
| 2160 | 77 61 2e 65 76 65 6e 74 5f 6d 61 73 6b 20 3d 20 4b 65 79 50 72 65 73 73 4d 61 73 6b 20 7c 20 4b | wa.event_mask.=.KeyPressMask.|.K |
| 2180 | 65 79 52 65 6c 65 61 73 65 4d 61 73 6b 20 7c 20 42 75 74 74 6f 6e 50 72 65 73 73 4d 61 73 6b 20 | eyReleaseMask.|.ButtonPressMask. |
| 21a0 | 7c 00 00 00 52 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 75 74 74 6f | |...R......................Butto |
| 21c0 | 6e 52 65 6c 65 61 73 65 4d 61 73 6b 20 7c 20 50 6f 69 6e 74 65 72 4d 6f 74 69 6f 6e 4d 61 73 6b | nReleaseMask.|.PointerMotionMask |
| 21e0 | 20 7c 20 53 74 72 75 63 74 75 72 65 4e 6f 74 69 66 79 4d 61 73 6b 3b 00 00 00 00 00 00 00 5f 20 | .|.StructureNotifyMask;......._. |
| 2200 | 20 20 20 62 2d 3e 77 69 6e 20 3d 20 58 43 72 65 61 74 65 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 | ...b->win.=.XCreateWindow(b->dpy |
| 2220 | 2c 20 72 6f 6f 74 2c 20 30 2c 20 30 2c 20 28 75 6e 73 69 67 6e 65 64 29 77 69 64 74 68 2c 20 28 | ,.root,.0,.0,.(unsigned)width,.( |
| 2240 | 75 6e 73 69 67 6e 65 64 29 68 65 69 67 68 74 2c 20 30 2c 20 76 69 2d 3e 64 65 70 74 68 2c 00 00 | unsigned)height,.0,.vi->depth,.. |
| 2260 | 00 55 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e | .U............................In |
| 2280 | 70 75 74 4f 75 74 70 75 74 2c 20 76 69 2d 3e 76 69 73 75 61 6c 2c 20 43 57 43 6f 6c 6f 72 6d 61 | putOutput,.vi->visual,.CWColorma |
| 22a0 | 70 20 7c 20 43 57 45 76 65 6e 74 4d 61 73 6b 2c 20 26 73 77 61 29 3b 00 00 00 26 20 20 20 20 58 | p.|.CWEventMask,.&swa);...&....X |
| 22c0 | 53 74 6f 72 65 4e 61 6d 65 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 74 69 74 6c 65 29 | StoreName(b->dpy,.b->win,.title) |
| 22e0 | 3b 00 00 00 42 20 20 20 20 62 2d 3e 77 6d 5f 64 65 6c 65 74 65 20 3d 20 58 49 6e 74 65 72 6e 41 | ;...B....b->wm_delete.=.XInternA |
| 2300 | 74 6f 6d 28 62 2d 3e 64 70 79 2c 20 22 57 4d 5f 44 45 4c 45 54 45 5f 57 49 4e 44 4f 57 22 2c 20 | tom(b->dpy,."WM_DELETE_WINDOW",. |
| 2320 | 46 61 6c 73 65 29 3b 00 00 00 36 20 20 20 20 58 53 65 74 57 4d 50 72 6f 74 6f 63 6f 6c 73 28 62 | False);...6....XSetWMProtocols(b |
| 2340 | 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 26 62 2d 3e 77 6d 5f 64 65 6c 65 74 65 2c 20 31 29 | ->dpy,.b->win,.&b->wm_delete,.1) |
| 2360 | 3b 00 00 00 1f 20 20 20 20 58 4d 61 70 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 | ;........XMapWindow(b->dpy,.b->w |
| 2380 | 69 6e 29 3b 00 00 00 00 00 00 00 36 20 20 20 20 62 2d 3e 63 74 78 20 3d 20 67 6c 58 43 72 65 61 | in);.......6....b->ctx.=.glXCrea |
| 23a0 | 74 65 43 6f 6e 74 65 78 74 28 62 2d 3e 64 70 79 2c 20 76 69 2c 20 4e 55 4c 4c 2c 20 54 72 75 65 | teContext(b->dpy,.vi,.NULL,.True |
| 23c0 | 29 3b 00 00 00 2b 20 20 20 20 67 6c 58 4d 61 6b 65 43 75 72 72 65 6e 74 28 62 2d 3e 64 70 79 2c | );...+....glXMakeCurrent(b->dpy, |
| 23e0 | 20 62 2d 3e 77 69 6e 2c 20 62 2d 3e 63 74 78 29 3b 00 00 00 0e 20 20 20 20 58 46 72 65 65 28 76 | .b->win,.b->ctx);........XFree(v |
| 2400 | 69 29 3b 00 00 00 00 00 00 00 17 20 20 20 20 63 68 61 72 20 64 61 74 61 5b 38 5d 20 3d 20 7b 30 | i);............char.data[8].=.{0 |
| 2420 | 7d 3b 00 00 00 45 20 20 20 20 50 69 78 6d 61 70 20 62 6c 61 6e 6b 20 3d 20 58 43 72 65 61 74 65 | };...E....Pixmap.blank.=.XCreate |
| 2440 | 42 69 74 6d 61 70 46 72 6f 6d 44 61 74 61 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 64 | BitmapFromData(b->dpy,.b->win,.d |
| 2460 | 61 74 61 2c 20 31 2c 20 31 29 3b 00 00 00 11 20 20 20 20 58 43 6f 6c 6f 72 20 64 75 6d 6d 79 3b | ata,.1,.1);........XColor.dummy; |
| 2480 | 00 00 00 25 20 20 20 20 6d 65 6d 73 65 74 28 26 64 75 6d 6d 79 2c 20 30 2c 20 73 69 7a 65 6f 66 | ...%....memset(&dummy,.0,.sizeof |
| 24a0 | 28 64 75 6d 6d 79 29 29 3b 00 00 00 54 20 20 20 20 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 3d | (dummy));...T....Cursor.cursor.= |
| 24c0 | 20 58 43 72 65 61 74 65 50 69 78 6d 61 70 43 75 72 73 6f 72 28 62 2d 3e 64 70 79 2c 20 62 6c 61 | .XCreatePixmapCursor(b->dpy,.bla |
| 24e0 | 6e 6b 2c 20 62 6c 61 6e 6b 2c 20 26 64 75 6d 6d 79 2c 20 26 64 75 6d 6d 79 2c 20 30 2c 20 30 29 | nk,.blank,.&dummy,.&dummy,.0,.0) |
| 2500 | 3b 00 00 00 2a 20 20 20 20 58 44 65 66 69 6e 65 43 75 72 73 6f 72 28 62 2d 3e 64 70 79 2c 20 62 | ;...*....XDefineCursor(b->dpy,.b |
| 2520 | 2d 3e 77 69 6e 2c 20 63 75 72 73 6f 72 29 3b 00 00 00 1f 20 20 20 20 58 46 72 65 65 50 69 78 6d | ->win,.cursor);........XFreePixm |
| 2540 | 61 70 28 62 2d 3e 64 70 79 2c 20 62 6c 61 6e 6b 29 3b 00 00 00 20 20 20 20 20 58 46 72 65 65 43 | ap(b->dpy,.blank);........XFreeC |
| 2560 | 75 72 73 6f 72 28 62 2d 3e 64 70 79 2c 20 63 75 72 73 6f 72 29 3b 00 00 00 00 00 00 00 19 20 20 | ursor(b->dpy,.cursor);.......... |
| 2580 | 20 20 58 53 79 6e 63 28 62 2d 3e 64 70 79 2c 20 46 61 6c 73 65 29 3b 00 00 00 47 20 20 20 20 58 | ..XSync(b->dpy,.False);...G....X |
| 25a0 | 47 72 61 62 50 6f 69 6e 74 65 72 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 54 72 75 65 | GrabPointer(b->dpy,.b->win,.True |
| 25c0 | 2c 20 30 2c 20 47 72 61 62 4d 6f 64 65 41 73 79 6e 63 2c 20 47 72 61 62 4d 6f 64 65 41 73 79 6e | ,.0,.GrabModeAsync,.GrabModeAsyn |
| 25e0 | 63 2c 00 00 00 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 2d 3e 77 69 6e 2c 20 4e | c,...,.................b->win,.N |
| 2600 | 6f 6e 65 2c 20 43 75 72 72 65 6e 74 54 69 6d 65 29 3b 00 00 00 00 00 00 00 1b 20 20 20 20 77 2d | one,.CurrentTime);............w- |
| 2620 | 3e 73 74 61 74 65 2e 77 69 64 74 68 20 3d 20 77 69 64 74 68 3b 00 00 00 1d 20 20 20 20 77 2d 3e | >state.width.=.width;........w-> |
| 2640 | 73 74 61 74 65 2e 68 65 69 67 68 74 20 3d 20 68 65 69 67 68 74 3b 00 00 00 1c 20 20 20 20 62 2d | state.height.=.height;........b- |
| 2660 | 3e 63 65 6e 74 65 72 5f 78 20 3d 20 77 69 64 74 68 20 2f 20 32 3b 00 00 00 1d 20 20 20 20 62 2d | >center_x.=.width./.2;........b- |
| 2680 | 3e 63 65 6e 74 65 72 5f 79 20 3d 20 68 65 69 67 68 74 20 2f 20 32 3b 00 00 00 4d 20 20 20 20 58 | >center_y.=.height./.2;...M....X |
| 26a0 | 57 61 72 70 50 6f 69 6e 74 65 72 28 62 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c 20 62 2d 3e 77 69 6e | WarpPointer(b->dpy,.None,.b->win |
| 26c0 | 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c 20 62 2d 3e 63 65 6e 74 65 72 5f 78 2c 20 62 2d 3e 63 65 | ,.0,.0,.0,.0,.b->center_x,.b->ce |
| 26e0 | 6e 74 65 72 5f 79 29 3b 00 00 00 12 20 20 20 20 62 2d 3e 77 61 72 70 65 64 20 3d 20 31 3b 00 00 | nter_y);........b->warped.=.1;.. |
| 2700 | 00 19 20 20 20 20 58 53 79 6e 63 28 62 2d 3e 64 70 79 2c 20 46 61 6c 73 65 29 3b 00 00 00 00 00 | ......XSync(b->dpy,.False);..... |
| 2720 | 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 01 7d 00 00 00 00 00 00 00 21 76 6f 69 | .......return.1;....}.......!voi |
| 2740 | 64 20 77 69 6e 64 6f 77 5f 78 31 31 5f 70 6f 6c 6c 28 57 69 6e 64 6f 77 20 2a 77 29 20 7b 00 00 | d.window_x11_poll(Window.*w).{.. |
| 2760 | 00 1f 20 20 20 20 58 31 31 42 61 63 6b 65 6e 64 20 2a 62 20 3d 20 77 2d 3e 62 61 63 6b 65 6e 64 | ......X11Backend.*b.=.w->backend |
| 2780 | 3b 00 00 00 1a 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 78 20 3d 20 30 3b 00 | ;........w->state.mouse_dx.=.0;. |
| 27a0 | 00 00 1a 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 79 20 3d 20 30 3b 00 00 00 | .......w->state.mouse_dy.=.0;... |
| 27c0 | 00 00 00 00 1e 20 20 20 20 77 68 69 6c 65 20 28 58 50 65 6e 64 69 6e 67 28 62 2d 3e 64 70 79 29 | .........while.(XPending(b->dpy) |
| 27e0 | 29 20 7b 00 00 00 11 20 20 20 20 20 20 20 20 58 45 76 65 6e 74 20 65 3b 00 00 00 1f 20 20 20 20 | ).{............XEvent.e;........ |
| 2800 | 20 20 20 20 58 4e 65 78 74 45 76 65 6e 74 28 62 2d 3e 64 70 79 2c 20 26 65 29 3b 00 00 00 19 20 | ....XNextEvent(b->dpy,.&e);..... |
| 2820 | 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 65 2e 74 79 70 65 29 20 7b 00 00 00 2d 20 20 20 20 | .......switch.(e.type).{...-.... |
| 2840 | 20 20 20 20 20 20 20 20 63 61 73 65 20 4b 65 79 50 72 65 73 73 3a 20 63 61 73 65 20 4b 65 79 52 | ........case.KeyPress:.case.KeyR |
| 2860 | 65 6c 65 61 73 65 3a 20 7b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4b 65 79 | elease:.{...6................Key |
| 2880 | 53 79 6d 20 6b 73 20 3d 20 58 4c 6f 6f 6b 75 70 4b 65 79 73 79 6d 28 26 65 2e 78 6b 65 79 2c 20 | Sym.ks.=.XLookupKeysym(&e.xkey,. |
| 28a0 | 30 29 3b 00 00 00 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6b 20 3d 20 6b | 0);...*................int.k.=.k |
| 28c0 | 65 79 73 79 6d 5f 74 6f 5f 6b 65 79 28 6b 73 29 3b 00 00 00 44 20 20 20 20 20 20 20 20 20 20 20 | eysym_to_key(ks);...D........... |
| 28e0 | 20 20 20 20 20 69 66 20 28 6b 20 3e 3d 20 30 29 20 77 2d 3e 73 74 61 74 65 2e 6b 65 79 73 5b 6b | .....if.(k.>=.0).w->state.keys[k |
| 2900 | 5d 20 3d 20 28 65 2e 74 79 70 65 20 3d 3d 20 4b 65 79 50 72 65 73 73 29 3b 00 00 00 16 20 20 20 | ].=.(e.type.==.KeyPress);....... |
| 2920 | 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 | .............break;............. |
| 2940 | 20 20 20 7d 00 00 00 33 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 42 75 74 74 6f 6e 50 | ...}...3............case.ButtonP |
| 2960 | 72 65 73 73 3a 20 63 61 73 65 20 42 75 74 74 6f 6e 52 65 6c 65 61 73 65 3a 20 7b 00 00 00 36 20 | ress:.case.ButtonRelease:.{...6. |
| 2980 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 70 72 65 73 73 65 64 20 3d 20 28 65 2e | ...............int.pressed.=.(e. |
| 29a0 | 74 79 70 65 20 3d 3d 20 42 75 74 74 6f 6e 50 72 65 73 73 29 3b 00 00 00 4f 20 20 20 20 20 20 20 | type.==.ButtonPress);...O....... |
| 29c0 | 20 20 20 20 20 20 20 20 20 69 66 20 28 65 2e 78 62 75 74 74 6f 6e 2e 62 75 74 74 6f 6e 20 3d 3d | .........if.(e.xbutton.button.== |
| 29e0 | 20 42 75 74 74 6f 6e 31 29 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 6c 65 66 74 20 3d 20 | .Button1).w->state.mouse_left.=. |
| 2a00 | 70 72 65 73 73 65 64 3b 00 00 00 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 | pressed;...P................if.( |
| 2a20 | 65 2e 78 62 75 74 74 6f 6e 2e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 33 29 20 77 2d 3e | e.xbutton.button.==.Button3).w-> |
| 2a40 | 73 74 61 74 65 2e 6d 6f 75 73 65 5f 72 69 67 68 74 20 3d 20 70 72 65 73 73 65 64 3b 00 00 00 16 | state.mouse_right.=.pressed;.... |
| 2a60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 | ................break;.......... |
| 2a80 | 20 20 20 20 20 20 7d 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 4d 6f 74 69 | ......}................case.Moti |
| 2aa0 | 6f 6e 4e 6f 74 69 66 79 3a 20 7b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 | onNotify:.{....................i |
| 2ac0 | 66 20 28 62 2d 3e 77 61 72 70 65 64 29 20 7b 00 00 00 22 20 20 20 20 20 20 20 20 20 20 20 20 20 | f.(b->warped).{..."............. |
| 2ae0 | 20 20 20 20 20 20 20 62 2d 3e 77 61 72 70 65 64 20 3d 20 30 3b 00 00 00 18 20 20 20 20 20 20 20 | .......b->warped.=.0;........... |
| 2b00 | 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 43 20 20 20 20 20 20 20 20 20 20 20 | .........}.else.{...C........... |
| 2b20 | 20 20 20 20 20 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 78 20 2b 3d 20 65 2e | .........w->state.mouse_dx.+=.e. |
| 2b40 | 78 6d 6f 74 69 6f 6e 2e 78 20 2d 20 62 2d 3e 63 65 6e 74 65 72 5f 78 3b 00 00 00 43 20 20 20 20 | xmotion.x.-.b->center_x;...C.... |
| 2b60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 | ................w->state.mouse_d |
| 2b80 | 79 20 2b 3d 20 65 2e 78 6d 6f 74 69 6f 6e 2e 79 20 2d 20 62 2d 3e 63 65 6e 74 65 72 5f 79 3b 00 | y.+=.e.xmotion.y.-.b->center_y;. |
| 2ba0 | 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 4f 20 20 20 20 20 20 20 20 | ...................}...O........ |
| 2bc0 | 20 20 20 20 20 20 20 20 69 66 20 28 65 2e 78 6d 6f 74 69 6f 6e 2e 78 20 21 3d 20 62 2d 3e 63 65 | ........if.(e.xmotion.x.!=.b->ce |
| 2be0 | 6e 74 65 72 5f 78 20 7c 7c 20 65 2e 78 6d 6f 74 69 6f 6e 2e 79 20 21 3d 20 62 2d 3e 63 65 6e 74 | nter_x.||.e.xmotion.y.!=.b->cent |
| 2c00 | 65 72 5f 79 29 20 7b 00 00 00 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 | er_y).{...]....................X |
| 2c20 | 57 61 72 70 50 6f 69 6e 74 65 72 28 62 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c 20 62 2d 3e 77 69 6e | WarpPointer(b->dpy,.None,.b->win |
| 2c40 | 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c 20 62 2d 3e 63 65 6e 74 65 72 5f 78 2c 20 62 2d 3e 63 65 | ,.0,.0,.0,.0,.b->center_x,.b->ce |
| 2c60 | 6e 74 65 72 5f 79 29 3b 00 00 00 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | nter_y);...".................... |
| 2c80 | 62 2d 3e 77 61 72 70 65 64 20 3d 20 31 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | b->warped.=.1;.................. |
| 2ca0 | 20 20 7d 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 | ..}....................break;... |
| 2cc0 | 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 63 61 | .............}...#............ca |
| 2ce0 | 73 65 20 43 6f 6e 66 69 67 75 72 65 4e 6f 74 69 66 79 3a 20 7b 00 00 00 34 20 20 20 20 20 20 20 | se.ConfigureNotify:.{...4....... |
| 2d00 | 20 20 20 20 20 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 77 69 64 74 68 20 3d 20 65 2e 78 63 6f 6e | .........w->state.width.=.e.xcon |
| 2d20 | 66 69 67 75 72 65 2e 77 69 64 74 68 3b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | figure.width;...6............... |
| 2d40 | 20 77 2d 3e 73 74 61 74 65 2e 68 65 69 67 68 74 20 3d 20 65 2e 78 63 6f 6e 66 69 67 75 72 65 2e | .w->state.height.=.e.xconfigure. |
| 2d60 | 68 65 69 67 68 74 3b 00 00 00 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 2d 3e 63 65 | height;...1................b->ce |
| 2d80 | 6e 74 65 72 5f 78 20 3d 20 77 2d 3e 73 74 61 74 65 2e 77 69 64 74 68 20 2f 20 32 3b 00 00 00 32 | nter_x.=.w->state.width./.2;...2 |
| 2da0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 79 20 3d 20 77 2d | ................b->center_y.=.w- |
| 2dc0 | 3e 73 74 61 74 65 2e 68 65 69 67 68 74 20 2f 20 32 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 | >state.height./.2;.............. |
| 2de0 | 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 | ......break;................}... |
| 2e00 | 21 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 43 6c 69 65 6e 74 4d 65 73 73 61 67 65 3a | !............case.ClientMessage: |
| 2e20 | 20 7b 00 00 00 3e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 41 74 6f 6d 29 | .{...>................if.((Atom) |
| 2e40 | 65 2e 78 63 6c 69 65 6e 74 2e 64 61 74 61 2e 6c 5b 30 5d 20 3d 3d 20 62 2d 3e 77 6d 5f 64 65 6c | e.xclient.data.l[0].==.b->wm_del |
| 2e60 | 65 74 65 29 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 2d 3e 73 | ete)........................w->s |
| 2e80 | 74 61 74 65 2e 73 68 6f 75 6c 64 5f 63 6c 6f 73 65 20 3d 20 31 3b 00 00 00 16 20 20 20 20 20 20 | tate.should_close.=.1;.......... |
| 2ea0 | 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 | ..........break;................ |
| 2ec0 | 7d 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 20 62 72 65 61 6b 3b | }................default:.break; |
| 2ee0 | 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 | ............}........}....}..... |
| 2f00 | 00 00 21 76 6f 69 64 20 77 69 6e 64 6f 77 5f 78 31 31 5f 73 77 61 70 28 57 69 6e 64 6f 77 20 2a | ..!void.window_x11_swap(Window.* |
| 2f20 | 77 29 20 7b 00 00 00 1f 20 20 20 20 58 31 31 42 61 63 6b 65 6e 64 20 2a 62 20 3d 20 77 2d 3e 62 | w).{........X11Backend.*b.=.w->b |
| 2f40 | 61 63 6b 65 6e 64 3b 00 00 00 23 20 20 20 20 67 6c 58 53 77 61 70 42 75 66 66 65 72 73 28 62 2d | ackend;...#....glXSwapBuffers(b- |
| 2f60 | 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 24 76 6f 69 64 20 | >dpy,.b->win);....}.......$void. |
| 2f80 | 77 69 6e 64 6f 77 5f 78 31 31 5f 64 65 73 74 72 6f 79 28 57 69 6e 64 6f 77 20 2a 77 29 20 7b 00 | window_x11_destroy(Window.*w).{. |
| 2fa0 | 00 00 1f 20 20 20 20 58 31 31 42 61 63 6b 65 6e 64 20 2a 62 20 3d 20 77 2d 3e 62 61 63 6b 65 6e | .......X11Backend.*b.=.w->backen |
| 2fc0 | 64 3b 00 00 00 27 20 20 20 20 67 6c 58 4d 61 6b 65 43 75 72 72 65 6e 74 28 62 2d 3e 64 70 79 2c | d;...'....glXMakeCurrent(b->dpy, |
| 2fe0 | 20 4e 6f 6e 65 2c 20 4e 55 4c 4c 29 3b 00 00 00 26 20 20 20 20 67 6c 58 44 65 73 74 72 6f 79 43 | .None,.NULL);...&....glXDestroyC |
| 3000 | 6f 6e 74 65 78 74 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 63 74 78 29 3b 00 00 00 23 20 20 20 20 58 | ontext(b->dpy,.b->ctx);...#....X |
| 3020 | 44 65 73 74 72 6f 79 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 29 3b 00 00 | DestroyWindow(b->dpy,.b->win);.. |
| 3040 | 00 1a 20 20 20 20 58 43 6c 6f 73 65 44 69 73 70 6c 61 79 28 62 2d 3e 64 70 79 29 3b 00 00 00 0c | ......XCloseDisplay(b->dpy);.... |
| 3060 | 20 20 20 20 66 72 65 65 28 62 29 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 | ....free(b);....}5.............. |
| 3080 | 00 96 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 13 00 00 00 00 00 | .........................Q...... |
| 30a0 | 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 03 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 | .........5._.................... |
| 30c0 | 04 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 63 47 0b 04 01 00 00 00 02 00 f5 18 00 00 00 76 | ...............jcG.............v |
| 3240 | 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 3260 | 62 72 65 61 f5 18 00 00 00 77 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 | brea.....w...................... |
| 3280 | 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 | ..............................5. |
| 32a0 | f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 76 00 00 00 14 00 00 00 00 00 | ......................v......... |
| 32c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f9 0f 00 00 00 00 00 00 f5 18 00 00 00 00 76 00 00 00 | ............................v... |
| 32e0 | 14 00 00 00 00 00 00 00 00 00 00 00 1f 00 00 00 01 00 00 00 f9 0f 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3300 | 00 00 00 00 59 03 00 00 00 00 00 00 35 81 5f d0 00 00 00 04 00 00 00 06 00 00 00 00 00 00 00 00 | ....Y.......5._................. |
| 3320 | 00 00 00 05 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 63 47 35 04 01 00 00 00 00 00 f5 18 00 | ..................jcG5.......... |
| 34a0 | 00 00 00 00 00 00 02 00 00 00 00 00 00 00 96 00 00 00 13 23 69 6e 63 6c 75 64 65 20 22 77 69 6e | ...................#include."win |
| 34c0 | 64 6f 77 2e 68 22 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 58 6c 69 62 2e 68 3e 00 | dow.h"....#include.<X11/Xlib.h>. |
| 34e0 | 00 00 17 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 6b 65 79 73 79 6d 2e 68 3e 00 00 00 13 23 69 | ...#include.<X11/keysym.h>....#i |
| 3500 | 6e 63 6c 75 64 65 20 3c 47 4c 2f 67 6c 78 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 47 | nclude.<GL/glx.h>....#include.<G |
| 3520 | 4c 2f 67 6c 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 | L/gl.h>....#include.<stdlib.h>.. |
| 3540 | 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 00 00 00 00 10 74 79 70 | ..#include.<string.h>........typ |
| 3560 | 65 64 65 66 20 73 74 72 75 63 74 20 7b 00 00 00 11 20 20 20 20 44 69 73 70 6c 61 79 20 2a 64 70 | edef.struct.{........Display.*dp |
| 3580 | 79 3b 00 00 00 11 20 20 20 20 3a 3a 57 69 6e 64 6f 77 20 77 69 6e 3b 00 00 00 13 20 20 20 20 47 | y;........::Window.win;........G |
| 35a0 | 4c 58 43 6f 6e 74 65 78 74 20 63 74 78 3b 00 00 00 13 20 20 20 20 41 74 6f 6d 20 77 6d 5f 64 65 | LXContext.ctx;........Atom.wm_de |
| 35c0 | 6c 65 74 65 3b 00 00 00 1b 20 20 20 20 69 6e 74 20 63 65 6e 74 65 72 5f 78 2c 20 63 65 6e 74 65 | lete;........int.center_x,.cente |
| 35e0 | 72 5f 79 3b 00 00 00 0f 20 20 20 20 69 6e 74 20 77 61 72 70 65 64 3b 00 00 00 0d 7d 20 58 31 31 | r_y;........int.warped;....}.X11 |
| 3600 | 42 61 63 6b 65 6e 64 3b 00 00 00 00 00 00 00 25 73 74 61 74 69 63 20 69 6e 74 20 6b 65 79 73 79 | Backend;.......%static.int.keysy |
| 3620 | 6d 5f 74 6f 5f 6b 65 79 28 4b 65 79 53 79 6d 20 6b 73 29 20 7b 00 00 00 11 20 20 20 20 73 77 69 | m_to_key(KeySym.ks).{........swi |
| 3640 | 74 63 68 20 28 6b 73 29 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 77 3a | tch.(ks).{...+........case.XK_w: |
| 3660 | 20 63 61 73 65 20 58 4b 5f 57 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 57 3b 00 00 00 2b 20 20 20 | .case.XK_W:.return.KEY_W;...+... |
| 3680 | 20 20 20 20 20 63 61 73 65 20 58 4b 5f 61 3a 20 63 61 73 65 20 58 4b 5f 41 3a 20 72 65 74 75 72 | .....case.XK_a:.case.XK_A:.retur |
| 36a0 | 6e 20 4b 45 59 5f 41 3b 00 00 00 2b 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 73 3a 20 63 | n.KEY_A;...+........case.XK_s:.c |
| 36c0 | 61 73 65 20 58 4b 5f 53 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 53 3b 00 00 00 2b 20 20 20 20 20 | ase.XK_S:.return.KEY_S;...+..... |
| 36e0 | 20 20 20 63 61 73 65 20 58 4b 5f 64 3a 20 63 61 73 65 20 58 4b 5f 44 3a 20 72 65 74 75 72 6e 20 | ...case.XK_d:.case.XK_D:.return. |
| 3700 | 4b 45 59 5f 44 3b 00 00 00 28 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 73 70 61 63 65 3a | KEY_D;...(........case.XK_space: |
| 3720 | 20 72 65 74 75 72 6e 20 4b 45 59 5f 53 50 41 43 45 3b 00 00 00 27 20 20 20 20 20 20 20 20 63 61 | .return.KEY_SPACE;...'........ca |
| 3740 | 73 65 20 58 4b 5f 45 73 63 61 70 65 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 45 53 43 3b 00 00 00 | se.XK_Escape:.return.KEY_ESC;... |
| 3760 | 20 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 31 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 31 | .........case.XK_1:.return.KEY_1 |
| 3780 | 3b 00 00 00 20 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 32 3a 20 72 65 74 75 72 6e 20 4b | ;............case.XK_2:.return.K |
| 37a0 | 45 59 5f 32 3b 00 00 00 20 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 33 3a 20 72 65 74 75 | EY_2;............case.XK_3:.retu |
| 37c0 | 72 6e 20 4b 45 59 5f 33 3b 00 00 00 1b 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 20 72 65 | rn.KEY_3;............default:.re |
| 37e0 | 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 4a 69 6e | turn.-1;........}....}.......Jin |
| 3800 | 74 20 77 69 6e 64 6f 77 5f 78 31 31 5f 69 6e 69 74 28 57 69 6e 64 6f 77 20 2a 77 2c 20 69 6e 74 | t.window_x11_init(Window.*w,.int |
| 3820 | 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a | .width,.int.height,.const.char.* |
| 3840 | 74 69 74 6c 65 29 20 7b 00 00 00 32 20 20 20 20 58 31 31 42 61 63 6b 65 6e 64 20 2a 62 20 3d 20 | title).{...2....X11Backend.*b.=. |
| 3860 | 63 61 6c 6c 6f 63 28 31 2c 20 73 69 7a 65 6f 66 28 58 31 31 42 61 63 6b 65 6e 64 29 29 3b 00 00 | calloc(1,.sizeof(X11Backend));.. |
| 3880 | 00 13 20 20 20 20 77 2d 3e 62 61 63 6b 65 6e 64 20 3d 20 62 3b 00 00 00 00 00 00 00 20 20 20 20 | ......w->backend.=.b;........... |
| 38a0 | 20 62 2d 3e 64 70 79 20 3d 20 58 4f 70 65 6e 44 69 73 70 6c 61 79 28 4e 55 4c 4c 29 3b 00 00 00 | .b->dpy.=.XOpenDisplay(NULL);... |
| 38c0 | 27 20 20 20 20 69 66 20 28 21 62 2d 3e 64 70 79 29 20 7b 20 66 72 65 65 28 62 29 3b 20 72 65 74 | '....if.(!b->dpy).{.free(b);.ret |
| 38e0 | 75 72 6e 20 30 3b 20 7d 00 00 00 00 00 00 00 27 20 20 20 20 69 6e 74 20 73 63 72 65 65 6e 20 3d | urn.0;.}.......'....int.screen.= |
| 3900 | 20 44 65 66 61 75 6c 74 53 63 72 65 65 6e 28 62 2d 3e 64 70 79 29 3b 00 00 00 4d 20 20 20 20 69 | .DefaultScreen(b->dpy);...M....i |
| 3920 | 6e 74 20 61 74 74 72 69 62 73 5b 5d 20 3d 20 7b 20 47 4c 58 5f 52 47 42 41 2c 20 47 4c 58 5f 44 | nt.attribs[].=.{.GLX_RGBA,.GLX_D |
| 3940 | 45 50 54 48 5f 53 49 5a 45 2c 20 32 34 2c 20 47 4c 58 5f 44 4f 55 42 4c 45 42 55 46 46 45 52 2c | EPTH_SIZE,.24,.GLX_DOUBLEBUFFER, |
| 3960 | 20 4e 6f 6e 65 20 7d 3b 00 00 00 3f 20 20 20 20 58 56 69 73 75 61 6c 49 6e 66 6f 20 2a 76 69 20 | .None.};...?....XVisualInfo.*vi. |
| 3980 | 3d 20 67 6c 58 43 68 6f 6f 73 65 56 69 73 75 61 6c 28 62 2d 3e 64 70 79 2c 20 73 63 72 65 65 6e | =.glXChooseVisual(b->dpy,.screen |
| 39a0 | 2c 20 61 74 74 72 69 62 73 29 3b 00 00 00 3a 20 20 20 20 69 66 20 28 21 76 69 29 20 7b 20 58 43 | ,.attribs);...:....if.(!vi).{.XC |
| 39c0 | 6c 6f 73 65 44 69 73 70 6c 61 79 28 62 2d 3e 64 70 79 29 3b 20 66 72 65 65 28 62 29 3b 20 72 65 | loseDisplay(b->dpy);.free(b);.re |
| 39e0 | 74 75 72 6e 20 30 3b 20 7d 00 00 00 00 00 00 00 2f 20 20 20 20 3a 3a 57 69 6e 64 6f 77 20 72 6f | turn.0;.}......./....::Window.ro |
| 3a00 | 6f 74 20 3d 20 52 6f 6f 74 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c 20 73 63 72 65 65 6e 29 3b | ot.=.RootWindow(b->dpy,.screen); |
| 3a20 | 00 00 00 49 20 20 20 20 43 6f 6c 6f 72 6d 61 70 20 63 6d 61 70 20 3d 20 58 43 72 65 61 74 65 43 | ...I....Colormap.cmap.=.XCreateC |
| 3a40 | 6f 6c 6f 72 6d 61 70 28 62 2d 3e 64 70 79 2c 20 72 6f 6f 74 2c 20 76 69 2d 3e 76 69 73 75 61 6c | olormap(b->dpy,.root,.vi->visual |
| 3a60 | 2c 20 41 6c 6c 6f 63 4e 6f 6e 65 29 3b 00 00 00 1d 20 20 20 20 58 53 65 74 57 69 6e 64 6f 77 41 | ,.AllocNone);........XSetWindowA |
| 3a80 | 74 74 72 69 62 75 74 65 73 20 73 77 61 3b 00 00 00 18 20 20 20 20 73 77 61 2e 63 6f 6c 6f 72 6d | ttributes.swa;........swa.colorm |
| 3aa0 | 61 70 20 3d 20 63 6d 61 70 3b 00 00 00 46 20 20 20 20 73 77 61 2e 65 76 65 6e 74 5f 6d 61 73 6b | ap.=.cmap;...F....swa.event_mask |
| 3ac0 | 20 3d 20 4b 65 79 50 72 65 73 73 4d 61 73 6b 20 7c 20 4b 65 79 52 65 6c 65 61 73 65 4d 61 73 6b | .=.KeyPressMask.|.KeyReleaseMask |
| 3ae0 | 20 7c 20 42 75 74 74 6f 6e 50 72 65 73 73 4d 61 73 6b 20 7c 00 00 00 52 20 20 20 20 20 20 20 20 | .|.ButtonPressMask.|...R........ |
| 3b00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 75 74 74 6f 6e 52 65 6c 65 61 73 65 4d 61 73 6b 20 | ..............ButtonReleaseMask. |
| 3b20 | 7c 20 50 6f 69 6e 74 65 72 4d 6f 74 69 6f 6e 4d 61 73 6b 20 7c 20 53 74 72 75 63 74 75 72 65 4e | |.PointerMotionMask.|.StructureN |
| 3b40 | 6f 74 69 66 79 4d 61 73 6b 3b 00 00 00 00 00 00 00 5f 20 20 20 20 62 2d 3e 77 69 6e 20 3d 20 58 | otifyMask;......._....b->win.=.X |
| 3b60 | 43 72 65 61 74 65 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c 20 72 6f 6f 74 2c 20 30 2c 20 30 2c | CreateWindow(b->dpy,.root,.0,.0, |
| 3b80 | 20 28 75 6e 73 69 67 6e 65 64 29 77 69 64 74 68 2c 20 28 75 6e 73 69 67 6e 65 64 29 68 65 69 67 | .(unsigned)width,.(unsigned)heig |
| 3ba0 | 68 74 2c 20 30 2c 20 76 69 2d 3e 64 65 70 74 68 2c 00 00 00 55 20 20 20 20 20 20 20 20 20 20 20 | ht,.0,.vi->depth,...U........... |
| 3bc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 70 75 74 4f 75 74 70 75 74 2c 20 76 69 | .................InputOutput,.vi |
| 3be0 | 2d 3e 76 69 73 75 61 6c 2c 20 43 57 43 6f 6c 6f 72 6d 61 70 20 7c 20 43 57 45 76 65 6e 74 4d 61 | ->visual,.CWColormap.|.CWEventMa |
| 3c00 | 73 6b 2c 20 26 73 77 61 29 3b 00 00 00 26 20 20 20 20 58 53 74 6f 72 65 4e 61 6d 65 28 62 2d 3e | sk,.&swa);...&....XStoreName(b-> |
| 3c20 | 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 74 69 74 6c 65 29 3b 00 00 00 42 20 20 20 20 62 2d 3e 77 | dpy,.b->win,.title);...B....b->w |
| 3c40 | 6d 5f 64 65 6c 65 74 65 20 3d 20 58 49 6e 74 65 72 6e 41 74 6f 6d 28 62 2d 3e 64 70 79 2c 20 22 | m_delete.=.XInternAtom(b->dpy,." |
| 3c60 | 57 4d 5f 44 45 4c 45 54 45 5f 57 49 4e 44 4f 57 22 2c 20 46 61 6c 73 65 29 3b 00 00 00 36 20 20 | WM_DELETE_WINDOW",.False);...6.. |
| 3c80 | 20 20 58 53 65 74 57 4d 50 72 6f 74 6f 63 6f 6c 73 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e | ..XSetWMProtocols(b->dpy,.b->win |
| 3ca0 | 2c 20 26 62 2d 3e 77 6d 5f 64 65 6c 65 74 65 2c 20 31 29 3b 00 00 00 1f 20 20 20 20 58 4d 61 70 | ,.&b->wm_delete,.1);........XMap |
| 3cc0 | 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 29 3b 00 00 00 00 00 00 00 36 20 | Window(b->dpy,.b->win);.......6. |
| 3ce0 | 20 20 20 62 2d 3e 63 74 78 20 3d 20 67 6c 58 43 72 65 61 74 65 43 6f 6e 74 65 78 74 28 62 2d 3e | ...b->ctx.=.glXCreateContext(b-> |
| 3d00 | 64 70 79 2c 20 76 69 2c 20 4e 55 4c 4c 2c 20 54 72 75 65 29 3b 00 00 00 2b 20 20 20 20 67 6c 58 | dpy,.vi,.NULL,.True);...+....glX |
| 3d20 | 4d 61 6b 65 43 75 72 72 65 6e 74 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 62 2d 3e 63 | MakeCurrent(b->dpy,.b->win,.b->c |
| 3d40 | 74 78 29 3b 00 00 00 0e 20 20 20 20 58 46 72 65 65 28 76 69 29 3b 00 00 00 00 00 00 00 17 20 20 | tx);........XFree(vi);.......... |
| 3d60 | 20 20 63 68 61 72 20 64 61 74 61 5b 38 5d 20 3d 20 7b 30 7d 3b 00 00 00 45 20 20 20 20 50 69 78 | ..char.data[8].=.{0};...E....Pix |
| 3d80 | 6d 61 70 20 62 6c 61 6e 6b 20 3d 20 58 43 72 65 61 74 65 42 69 74 6d 61 70 46 72 6f 6d 44 61 74 | map.blank.=.XCreateBitmapFromDat |
| 3da0 | 61 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 64 61 74 61 2c 20 31 2c 20 31 29 3b 00 00 | a(b->dpy,.b->win,.data,.1,.1);.. |
| 3dc0 | 00 11 20 20 20 20 58 43 6f 6c 6f 72 20 64 75 6d 6d 79 3b 00 00 00 25 20 20 20 20 6d 65 6d 73 65 | ......XColor.dummy;...%....memse |
| 3de0 | 74 28 26 64 75 6d 6d 79 2c 20 30 2c 20 73 69 7a 65 6f 66 28 64 75 6d 6d 79 29 29 3b 00 00 00 54 | t(&dummy,.0,.sizeof(dummy));...T |
| 3e00 | 20 20 20 20 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 3d 20 58 43 72 65 61 74 65 50 69 78 6d 61 | ....Cursor.cursor.=.XCreatePixma |
| 3e20 | 70 43 75 72 73 6f 72 28 62 2d 3e 64 70 79 2c 20 62 6c 61 6e 6b 2c 20 62 6c 61 6e 6b 2c 20 26 64 | pCursor(b->dpy,.blank,.blank,.&d |
| 3e40 | 75 6d 6d 79 2c 20 26 64 75 6d 6d 79 2c 20 30 2c 20 30 29 3b 00 00 00 2a 20 20 20 20 58 44 65 66 | ummy,.&dummy,.0,.0);...*....XDef |
| 3e60 | 69 6e 65 43 75 72 73 6f 72 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 63 75 72 73 6f 72 | ineCursor(b->dpy,.b->win,.cursor |
| 3e80 | 29 3b 00 00 00 1f 20 20 20 20 58 46 72 65 65 50 69 78 6d 61 70 28 62 2d 3e 64 70 79 2c 20 62 6c | );........XFreePixmap(b->dpy,.bl |
| 3ea0 | 61 6e 6b 29 3b 00 00 00 20 20 20 20 20 58 46 72 65 65 43 75 72 73 6f 72 28 62 2d 3e 64 70 79 2c | ank);........XFreeCursor(b->dpy, |
| 3ec0 | 20 63 75 72 73 6f 72 29 3b 00 00 00 00 00 00 00 19 20 20 20 20 58 53 79 6e 63 28 62 2d 3e 64 70 | .cursor);............XSync(b->dp |
| 3ee0 | 79 2c 20 46 61 6c 73 65 29 3b 00 00 00 47 20 20 20 20 58 47 72 61 62 50 6f 69 6e 74 65 72 28 62 | y,.False);...G....XGrabPointer(b |
| 3f00 | 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 2c 20 54 72 75 65 2c 20 30 2c 20 47 72 61 62 4d 6f 64 65 | ->dpy,.b->win,.True,.0,.GrabMode |
| 3f20 | 41 73 79 6e 63 2c 20 47 72 61 62 4d 6f 64 65 41 73 79 6e 63 2c 00 00 00 2c 20 20 20 20 20 20 20 | Async,.GrabModeAsync,...,....... |
| 3f40 | 20 20 20 20 20 20 20 20 20 20 62 2d 3e 77 69 6e 2c 20 4e 6f 6e 65 2c 20 43 75 72 72 65 6e 74 54 | ..........b->win,.None,.CurrentT |
| 3f60 | 69 6d 65 29 3b 00 00 00 00 00 00 00 1b 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 77 69 64 74 68 20 | ime);............w->state.width. |
| 3f80 | 3d 20 77 69 64 74 68 3b 00 00 00 1d 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 68 65 69 67 68 74 20 | =.width;........w->state.height. |
| 3fa0 | 3d 20 68 65 69 67 68 74 3b 00 00 00 1c 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 78 20 3d 20 77 | =.height;........b->center_x.=.w |
| 3fc0 | 69 64 74 68 20 2f 20 32 3b 00 00 00 1d 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 79 20 3d 20 68 | idth./.2;........b->center_y.=.h |
| 3fe0 | 65 69 67 68 74 20 2f 20 32 3b 00 00 00 4d 20 20 20 20 58 57 61 72 70 50 6f 69 6e 74 65 72 28 62 | eight./.2;...M....XWarpPointer(b |
| 4000 | 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c 20 62 2d 3e 77 69 6e 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c | ->dpy,.None,.b->win,.0,.0,.0,.0, |
| 4020 | 20 62 2d 3e 63 65 6e 74 65 72 5f 78 2c 20 62 2d 3e 63 65 6e 74 65 72 5f 79 29 3b 00 00 00 12 20 | .b->center_x,.b->center_y);..... |
| 4040 | 20 20 20 62 2d 3e 77 61 72 70 65 64 20 3d 20 31 3b 00 00 00 19 20 20 20 20 58 53 79 6e 63 28 62 | ...b->warped.=.1;........XSync(b |
| 4060 | 2d 3e 64 70 79 2c 20 46 61 6c 73 65 29 3b 00 00 00 00 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e | ->dpy,.False);............return |
| 4080 | 20 31 3b 00 00 00 01 7d 00 00 00 00 00 00 00 21 76 6f 69 64 20 77 69 6e 64 6f 77 5f 78 31 31 5f | .1;....}.......!void.window_x11_ |
| 40a0 | 70 6f 6c 6c 28 57 69 6e 64 6f 77 20 2a 77 29 20 7b 00 00 00 1f 20 20 20 20 58 31 31 42 61 63 6b | poll(Window.*w).{........X11Back |
| 40c0 | 65 6e 64 20 2a 62 20 3d 20 77 2d 3e 62 61 63 6b 65 6e 64 3b 00 00 00 1a 20 20 20 20 77 2d 3e 73 | end.*b.=.w->backend;........w->s |
| 40e0 | 74 61 74 65 2e 6d 6f 75 73 65 5f 64 78 20 3d 20 30 3b 00 00 00 1a 20 20 20 20 77 2d 3e 73 74 61 | tate.mouse_dx.=.0;........w->sta |
| 4100 | 74 65 2e 6d 6f 75 73 65 5f 64 79 20 3d 20 30 3b 00 00 00 00 00 00 00 1e 20 20 20 20 77 68 69 6c | te.mouse_dy.=.0;............whil |
| 4120 | 65 20 28 58 50 65 6e 64 69 6e 67 28 62 2d 3e 64 70 79 29 29 20 7b 00 00 00 11 20 20 20 20 20 20 | e.(XPending(b->dpy)).{.......... |
| 4140 | 20 20 58 45 76 65 6e 74 20 65 3b 00 00 00 1f 20 20 20 20 20 20 20 20 58 4e 65 78 74 45 76 65 6e | ..XEvent.e;............XNextEven |
| 4160 | 74 28 62 2d 3e 64 70 79 2c 20 26 65 29 3b 00 00 00 19 20 20 20 20 20 20 20 20 73 77 69 74 63 68 | t(b->dpy,.&e);............switch |
| 4180 | 20 28 65 2e 74 79 70 65 29 20 7b 00 00 00 2d 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 | .(e.type).{...-............case. |
| 41a0 | 4b 65 79 50 72 65 73 73 3a 20 63 61 73 65 20 4b 65 79 52 65 6c 65 61 73 65 3a 20 7b 00 00 00 36 | KeyPress:.case.KeyRelease:.{...6 |
| 41c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4b 65 79 53 79 6d 20 6b 73 20 3d 20 58 4c 6f 6f | ................KeySym.ks.=.XLoo |
| 41e0 | 6b 75 70 4b 65 79 73 79 6d 28 26 65 2e 78 6b 65 79 2c 20 30 29 3b 00 00 00 2a 20 20 20 20 20 20 | kupKeysym(&e.xkey,.0);...*...... |
| 4200 | 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6b 20 3d 20 6b 65 79 73 79 6d 5f 74 6f 5f 6b 65 79 28 | ..........int.k.=.keysym_to_key( |
| 4220 | 6b 73 29 3b 00 00 00 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 20 3e 3d | ks);...D................if.(k.>= |
| 4240 | 20 30 29 20 77 2d 3e 73 74 61 74 65 2e 6b 65 79 73 5b 6b 5d 20 3d 20 28 65 2e 74 79 70 65 20 3d | .0).w->state.keys[k].=.(e.type.= |
| 4260 | 3d 20 4b 65 79 50 72 65 73 73 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | =.KeyPress);.................... |
| 4280 | 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 33 20 20 20 20 20 | break;................}...3..... |
| 42a0 | 20 20 20 20 20 20 20 63 61 73 65 20 42 75 74 74 6f 6e 50 72 65 73 73 3a 20 63 61 73 65 20 42 75 | .......case.ButtonPress:.case.Bu |
| 42c0 | 74 74 6f 6e 52 65 6c 65 61 73 65 3a 20 7b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ttonRelease:.{...6.............. |
| 42e0 | 20 20 69 6e 74 20 70 72 65 73 73 65 64 20 3d 20 28 65 2e 74 79 70 65 20 3d 3d 20 42 75 74 74 6f | ..int.pressed.=.(e.type.==.Butto |
| 4300 | 6e 50 72 65 73 73 29 3b 00 00 00 4f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 | nPress);...O................if.( |
| 4320 | 65 2e 78 62 75 74 74 6f 6e 2e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 31 29 20 77 2d 3e | e.xbutton.button.==.Button1).w-> |
| 4340 | 73 74 61 74 65 2e 6d 6f 75 73 65 5f 6c 65 66 74 20 3d 20 70 72 65 73 73 65 64 3b 00 00 00 50 20 | state.mouse_left.=.pressed;...P. |
| 4360 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 2e 78 62 75 74 74 6f 6e 2e 62 75 74 | ...............if.(e.xbutton.but |
| 4380 | 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 33 29 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 72 | ton.==.Button3).w->state.mouse_r |
| 43a0 | 69 67 68 74 20 3d 20 70 72 65 73 73 65 64 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 | ight.=.pressed;................. |
| 43c0 | 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 20 20 20 | ...break;................}...... |
| 43e0 | 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 4d 6f 74 69 6f 6e 4e 6f 74 69 66 79 3a 20 7b 00 00 | ..........case.MotionNotify:.{.. |
| 4400 | 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 2d 3e 77 61 72 70 65 64 29 | ..................if.(b->warped) |
| 4420 | 20 7b 00 00 00 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 2d 3e 77 61 72 | .{..."....................b->war |
| 4440 | 70 65 64 20 3d 20 30 3b 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c | ped.=.0;....................}.el |
| 4460 | 73 65 20 7b 00 00 00 43 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 2d 3e 73 | se.{...C....................w->s |
| 4480 | 74 61 74 65 2e 6d 6f 75 73 65 5f 64 78 20 2b 3d 20 65 2e 78 6d 6f 74 69 6f 6e 2e 78 20 2d 20 62 | tate.mouse_dx.+=.e.xmotion.x.-.b |
| 44a0 | 2d 3e 63 65 6e 74 65 72 5f 78 3b 00 00 00 43 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ->center_x;...C................. |
| 44c0 | 20 20 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 79 20 2b 3d 20 65 2e 78 6d 6f 74 69 6f | ...w->state.mouse_dy.+=.e.xmotio |
| 44e0 | 6e 2e 79 20 2d 20 62 2d 3e 63 65 6e 74 65 72 5f 79 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 20 | n.y.-.b->center_y;.............. |
| 4500 | 20 20 20 20 20 20 7d 00 00 00 4f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 | ......}...O................if.(e |
| 4520 | 2e 78 6d 6f 74 69 6f 6e 2e 78 20 21 3d 20 62 2d 3e 63 65 6e 74 65 72 5f 78 20 7c 7c 20 65 2e 78 | .xmotion.x.!=.b->center_x.||.e.x |
| 4540 | 6d 6f 74 69 6f 6e 2e 79 20 21 3d 20 62 2d 3e 63 65 6e 74 65 72 5f 79 29 20 7b 00 00 00 5d 20 20 | motion.y.!=.b->center_y).{...].. |
| 4560 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 57 61 72 70 50 6f 69 6e 74 65 72 28 62 | ..................XWarpPointer(b |
| 4580 | 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c 20 62 2d 3e 77 69 6e 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c | ->dpy,.None,.b->win,.0,.0,.0,.0, |
| 45a0 | 20 62 2d 3e 63 65 6e 74 65 72 5f 78 2c 20 62 2d 3e 63 65 6e 74 65 72 5f 79 29 3b 00 00 00 22 20 | .b->center_x,.b->center_y);...". |
| 45c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 2d 3e 77 61 72 70 65 64 20 3d 20 31 | ...................b->warped.=.1 |
| 45e0 | 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 16 20 20 20 20 20 20 | ;....................}.......... |
| 4600 | 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 | ..........break;................ |
| 4620 | 7d 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 43 6f 6e 66 69 67 75 72 65 4e | }...#............case.ConfigureN |
| 4640 | 6f 74 69 66 79 3a 20 7b 00 00 00 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 2d 3e 73 | otify:.{...4................w->s |
| 4660 | 74 61 74 65 2e 77 69 64 74 68 20 3d 20 65 2e 78 63 6f 6e 66 69 67 75 72 65 2e 77 69 64 74 68 3b | tate.width.=.e.xconfigure.width; |
| 4680 | 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 68 65 69 | ...6................w->state.hei |
| 46a0 | 67 68 74 20 3d 20 65 2e 78 63 6f 6e 66 69 67 75 72 65 2e 68 65 69 67 68 74 3b 00 00 00 31 20 20 | ght.=.e.xconfigure.height;...1.. |
| 46c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 78 20 3d 20 77 2d 3e 73 | ..............b->center_x.=.w->s |
| 46e0 | 74 61 74 65 2e 77 69 64 74 68 20 2f 20 32 3b 00 00 00 32 20 20 20 20 20 20 20 20 20 20 20 20 20 | tate.width./.2;...2............. |
| 4700 | 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 79 20 3d 20 77 2d 3e 73 74 61 74 65 2e 68 65 69 67 68 74 | ...b->center_y.=.w->state.height |
| 4720 | 20 2f 20 32 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 | ./.2;....................break;. |
| 4740 | 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 | ...............}...!............ |
| 4760 | 63 61 73 65 20 43 6c 69 65 6e 74 4d 65 73 73 61 67 65 3a 20 7b 00 00 00 3e 20 20 20 20 20 20 20 | case.ClientMessage:.{...>....... |
| 4780 | 20 20 20 20 20 20 20 20 20 69 66 20 28 28 41 74 6f 6d 29 65 2e 78 63 6c 69 65 6e 74 2e 64 61 74 | .........if.((Atom)e.xclient.dat |
| 47a0 | 61 2e 6c 5b 30 5d 20 3d 3d 20 62 2d 3e 77 6d 5f 64 65 6c 65 74 65 29 00 00 00 2e 20 20 20 20 20 | a.l[0].==.b->wm_delete)......... |
| 47c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 73 68 6f 75 6c 64 5f 63 | ...............w->state.should_c |
| 47e0 | 6c 6f 73 65 20 3d 20 31 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 | lose.=.1;....................bre |
| 4800 | 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 1b 20 20 20 20 20 20 20 20 | ak;................}............ |
| 4820 | 20 20 20 20 64 65 66 61 75 6c 74 3a 20 62 72 65 61 6b 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d | ....default:.break;............} |
| 4840 | 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 21 76 6f 69 64 20 77 69 6e 64 6f | ........}....}.......!void.windo |
| 4860 | 77 5f 78 31 31 5f 73 77 61 70 28 57 69 6e 64 6f 77 20 2a 77 29 20 7b 00 00 00 1f 20 20 20 20 58 | w_x11_swap(Window.*w).{........X |
| 4880 | 31 31 42 61 63 6b 65 6e 64 20 2a 62 20 3d 20 77 2d 3e 62 61 63 6b 65 6e 64 3b 00 00 00 23 20 20 | 11Backend.*b.=.w->backend;...#.. |
| 48a0 | 20 20 67 6c 58 53 77 61 70 42 75 66 66 65 72 73 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 29 | ..glXSwapBuffers(b->dpy,.b->win) |
| 48c0 | 3b 00 00 00 01 7d 00 00 00 00 00 00 00 24 76 6f 69 64 20 77 69 6e 64 6f 77 5f 78 31 31 5f 64 65 | ;....}.......$void.window_x11_de |
| 48e0 | 73 74 72 6f 79 28 57 69 6e 64 6f 77 20 2a 77 29 20 7b 00 00 00 1f 20 20 20 20 58 31 31 42 61 63 | stroy(Window.*w).{........X11Bac |
| 4900 | 6b 65 6e 64 20 2a 62 20 3d 20 77 2d 3e 62 61 63 6b 65 6e 64 3b 00 00 00 27 20 20 20 20 67 6c 58 | kend.*b.=.w->backend;...'....glX |
| 4920 | 4d 61 6b 65 43 75 72 72 65 6e 74 28 62 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c 20 4e 55 4c 4c 29 3b | MakeCurrent(b->dpy,.None,.NULL); |
| 4940 | 00 00 00 26 20 20 20 20 67 6c 58 44 65 73 74 72 6f 79 43 6f 6e 74 65 78 74 28 62 2d 3e 64 70 79 | ...&....glXDestroyContext(b->dpy |
| 4960 | 2c 20 62 2d 3e 63 74 78 29 3b 00 00 00 23 20 20 20 20 58 44 65 73 74 72 6f 79 57 69 6e 64 6f 77 | ,.b->ctx);...#....XDestroyWindow |
| 4980 | 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 77 69 6e 29 3b 00 00 00 1a 20 20 20 20 58 43 6c 6f 73 65 44 | (b->dpy,.b->win);........XCloseD |
| 49a0 | 69 73 70 6c 61 79 28 62 2d 3e 64 70 79 29 3b 00 00 00 0c 20 20 20 20 66 72 65 65 28 62 29 3b 00 | isplay(b->dpy);........free(b);. |
| 49c0 | 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 96 00 00 00 00 00 00 00 01 00 00 00 | ...}5........................... |
| 49e0 | 00 00 00 00 00 00 00 00 00 00 00 00 53 13 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 | ............S...............5._. |
| 4a00 | 00 00 00 05 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 01 00 00 00 00 00 00 00 00 | ................................ |
| 4a20 | ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4b80 | 00 00 6a 63 47 36 04 01 00 00 00 03 00 f5 18 00 00 00 73 00 00 00 00 00 00 00 00 00 00 00 01 00 | ..jcG6............s............. |
| 4ba0 | 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 57 61 72 70 50 6f 69 6e | ..)....................XWarpPoin |
| 4bc0 | 74 65 72 28 62 2d 3e 64 70 79 2c 20 f5 18 00 00 00 74 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 | ter(b->dpy,......t.............. |
| 4be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 | ................................ |
| 4c00 | 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 73 00 | ......5.......................s. |
| 4c20 | 00 00 29 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f9 0f 00 00 00 00 00 00 f5 18 | ..)............................. |
| 4c40 | 00 00 00 00 73 00 00 00 29 00 00 00 00 00 00 00 00 00 00 00 22 00 00 00 01 00 00 00 f9 0f 00 00 | ....s...)..........."........... |
| 4c60 | 00 00 00 00 00 00 00 00 00 00 00 00 f4 03 00 00 00 00 00 00 35 81 5f d0 00 00 00 06 00 00 00 08 | ....................5._......... |
| 4c80 | 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 | ................................ |
| 4ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 63 47 55 04 01 | ..........................jcGU.. |
| 4e00 | 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 96 00 00 00 13 23 69 6e 63 6c | ...........................#incl |
| 4e20 | 75 64 65 20 22 77 69 6e 64 6f 77 2e 68 22 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f | ude."window.h"....#include.<X11/ |
| 4e40 | 58 6c 69 62 2e 68 3e 00 00 00 17 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 2f 6b 65 79 73 79 6d 2e | Xlib.h>....#include.<X11/keysym. |
| 4e60 | 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 47 4c 2f 67 6c 78 2e 68 3e 00 00 00 12 23 69 6e | h>....#include.<GL/glx.h>....#in |
| 4e80 | 63 6c 75 64 65 20 3c 47 4c 2f 67 6c 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 | clude.<GL/gl.h>....#include.<std |
| 4ea0 | 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 | lib.h>....#include.<string.h>... |
| 4ec0 | 00 00 00 00 10 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 00 00 00 11 20 20 20 20 44 69 73 | .....typedef.struct.{........Dis |
| 4ee0 | 70 6c 61 79 20 2a 64 70 79 3b 00 00 00 6b 20 20 20 20 3a 3a 57 69 6e 64 6f 77 20 78 77 69 6e 3b | play.*dpy;...k....::Window.xwin; |
| 4f00 | 20 2f 2f 20 55 73 65 20 65 78 70 6c 69 63 69 74 20 67 6c 6f 62 61 6c 20 73 63 6f 70 65 20 72 65 | .//.Use.explicit.global.scope.re |
| 4f20 | 73 6f 6c 75 74 69 6f 6e 20 6f 72 20 72 65 6e 61 6d 65 20 74 6f 20 61 76 6f 69 64 20 63 6f 6c 6c | solution.or.rename.to.avoid.coll |
| 4f40 | 69 73 69 6f 6e 20 77 69 74 68 20 58 31 31 27 73 20 27 57 69 6e 64 6f 77 27 00 00 00 13 20 20 20 | ision.with.X11's.'Window'....... |
| 4f60 | 20 47 4c 58 43 6f 6e 74 65 78 74 20 63 74 78 3b 00 00 00 13 20 20 20 20 41 74 6f 6d 20 77 6d 5f | .GLXContext.ctx;........Atom.wm_ |
| 4f80 | 64 65 6c 65 74 65 3b 00 00 00 1b 20 20 20 20 69 6e 74 20 63 65 6e 74 65 72 5f 78 2c 20 63 65 6e | delete;........int.center_x,.cen |
| 4fa0 | 74 65 72 5f 79 3b 00 00 00 0f 20 20 20 20 69 6e 74 20 77 61 72 70 65 64 3b 00 00 00 0d 7d 20 58 | ter_y;........int.warped;....}.X |
| 4fc0 | 31 31 42 61 63 6b 65 6e 64 3b 00 00 00 00 00 00 00 25 73 74 61 74 69 63 20 69 6e 74 20 6b 65 79 | 11Backend;.......%static.int.key |
| 4fe0 | 73 79 6d 5f 74 6f 5f 6b 65 79 28 4b 65 79 53 79 6d 20 6b 73 29 20 7b 00 00 00 11 20 20 20 20 73 | sym_to_key(KeySym.ks).{........s |
| 5000 | 77 69 74 63 68 20 28 6b 73 29 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f | witch.(ks).{...+........case.XK_ |
| 5020 | 77 3a 20 63 61 73 65 20 58 4b 5f 57 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 57 3b 00 00 00 2b 20 | w:.case.XK_W:.return.KEY_W;...+. |
| 5040 | 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 61 3a 20 63 61 73 65 20 58 4b 5f 41 3a 20 72 65 74 | .......case.XK_a:.case.XK_A:.ret |
| 5060 | 75 72 6e 20 4b 45 59 5f 41 3b 00 00 00 2b 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 73 3a | urn.KEY_A;...+........case.XK_s: |
| 5080 | 20 63 61 73 65 20 58 4b 5f 53 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 53 3b 00 00 00 2b 20 20 20 | .case.XK_S:.return.KEY_S;...+... |
| 50a0 | 20 20 20 20 20 63 61 73 65 20 58 4b 5f 64 3a 20 63 61 73 65 20 58 4b 5f 44 3a 20 72 65 74 75 72 | .....case.XK_d:.case.XK_D:.retur |
| 50c0 | 6e 20 4b 45 59 5f 44 3b 00 00 00 28 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 73 70 61 63 | n.KEY_D;...(........case.XK_spac |
| 50e0 | 65 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 53 50 41 43 45 3b 00 00 00 27 20 20 20 20 20 20 20 20 | e:.return.KEY_SPACE;...'........ |
| 5100 | 63 61 73 65 20 58 4b 5f 45 73 63 61 70 65 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 45 53 43 3b 00 | case.XK_Escape:.return.KEY_ESC;. |
| 5120 | 00 00 20 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 31 3a 20 72 65 74 75 72 6e 20 4b 45 59 | ...........case.XK_1:.return.KEY |
| 5140 | 5f 31 3b 00 00 00 20 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 32 3a 20 72 65 74 75 72 6e | _1;............case.XK_2:.return |
| 5160 | 20 4b 45 59 5f 32 3b 00 00 00 20 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 33 3a 20 72 65 | .KEY_2;............case.XK_3:.re |
| 5180 | 74 75 72 6e 20 4b 45 59 5f 33 3b 00 00 00 1b 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 20 | turn.KEY_3;............default:. |
| 51a0 | 72 65 74 75 72 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 57 | return.-1;........}....}.......W |
| 51c0 | 69 6e 74 20 77 69 6e 64 6f 77 5f 78 31 31 5f 69 6e 69 74 28 73 74 72 75 63 74 20 4e 61 74 69 76 | int.window_x11_init(struct.Nativ |
| 51e0 | 65 57 69 6e 64 6f 77 20 2a 77 2c 20 69 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 | eWindow.*w,.int.width,.int.heigh |
| 5200 | 74 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 74 69 74 6c 65 29 20 7b 00 00 00 32 20 20 20 20 58 | t,.const.char.*title).{...2....X |
| 5220 | 31 31 42 61 63 6b 65 6e 64 20 2a 62 20 3d 20 63 61 6c 6c 6f 63 28 31 2c 20 73 69 7a 65 6f 66 28 | 11Backend.*b.=.calloc(1,.sizeof( |
| 5240 | 58 31 31 42 61 63 6b 65 6e 64 29 29 3b 00 00 00 13 20 20 20 20 77 2d 3e 62 61 63 6b 65 6e 64 20 | X11Backend));........w->backend. |
| 5260 | 3d 20 62 3b 00 00 00 00 00 00 00 20 20 20 20 20 62 2d 3e 64 70 79 20 3d 20 58 4f 70 65 6e 44 69 | =.b;............b->dpy.=.XOpenDi |
| 5280 | 73 70 6c 61 79 28 4e 55 4c 4c 29 3b 00 00 00 27 20 20 20 20 69 66 20 28 21 62 2d 3e 64 70 79 29 | splay(NULL);...'....if.(!b->dpy) |
| 52a0 | 20 7b 20 66 72 65 65 28 62 29 3b 20 72 65 74 75 72 6e 20 30 3b 20 7d 00 00 00 00 00 00 00 27 20 | .{.free(b);.return.0;.}.......'. |
| 52c0 | 20 20 20 69 6e 74 20 73 63 72 65 65 6e 20 3d 20 44 65 66 61 75 6c 74 53 63 72 65 65 6e 28 62 2d | ...int.screen.=.DefaultScreen(b- |
| 52e0 | 3e 64 70 79 29 3b 00 00 00 4d 20 20 20 20 69 6e 74 20 61 74 74 72 69 62 73 5b 5d 20 3d 20 7b 20 | >dpy);...M....int.attribs[].=.{. |
| 5300 | 47 4c 58 5f 52 47 42 41 2c 20 47 4c 58 5f 44 45 50 54 48 5f 53 49 5a 45 2c 20 32 34 2c 20 47 4c | GLX_RGBA,.GLX_DEPTH_SIZE,.24,.GL |
| 5320 | 58 5f 44 4f 55 42 4c 45 42 55 46 46 45 52 2c 20 4e 6f 6e 65 20 7d 3b 00 00 00 3f 20 20 20 20 58 | X_DOUBLEBUFFER,.None.};...?....X |
| 5340 | 56 69 73 75 61 6c 49 6e 66 6f 20 2a 76 69 20 3d 20 67 6c 58 43 68 6f 6f 73 65 56 69 73 75 61 6c | VisualInfo.*vi.=.glXChooseVisual |
| 5360 | 28 62 2d 3e 64 70 79 2c 20 73 63 72 65 65 6e 2c 20 61 74 74 72 69 62 73 29 3b 00 00 00 3a 20 20 | (b->dpy,.screen,.attribs);...:.. |
| 5380 | 20 20 69 66 20 28 21 76 69 29 20 7b 20 58 43 6c 6f 73 65 44 69 73 70 6c 61 79 28 62 2d 3e 64 70 | ..if.(!vi).{.XCloseDisplay(b->dp |
| 53a0 | 79 29 3b 20 66 72 65 65 28 62 29 3b 20 72 65 74 75 72 6e 20 30 3b 20 7d 00 00 00 00 00 00 00 2f | y);.free(b);.return.0;.}......./ |
| 53c0 | 20 20 20 20 3a 3a 57 69 6e 64 6f 77 20 72 6f 6f 74 20 3d 20 52 6f 6f 74 57 69 6e 64 6f 77 28 62 | ....::Window.root.=.RootWindow(b |
| 53e0 | 2d 3e 64 70 79 2c 20 73 63 72 65 65 6e 29 3b 00 00 00 49 20 20 20 20 43 6f 6c 6f 72 6d 61 70 20 | ->dpy,.screen);...I....Colormap. |
| 5400 | 63 6d 61 70 20 3d 20 58 43 72 65 61 74 65 43 6f 6c 6f 72 6d 61 70 28 62 2d 3e 64 70 79 2c 20 72 | cmap.=.XCreateColormap(b->dpy,.r |
| 5420 | 6f 6f 74 2c 20 76 69 2d 3e 76 69 73 75 61 6c 2c 20 41 6c 6c 6f 63 4e 6f 6e 65 29 3b 00 00 00 1d | oot,.vi->visual,.AllocNone);.... |
| 5440 | 20 20 20 20 58 53 65 74 57 69 6e 64 6f 77 41 74 74 72 69 62 75 74 65 73 20 73 77 61 3b 00 00 00 | ....XSetWindowAttributes.swa;... |
| 5460 | 18 20 20 20 20 73 77 61 2e 63 6f 6c 6f 72 6d 61 70 20 3d 20 63 6d 61 70 3b 00 00 00 46 20 20 20 | .....swa.colormap.=.cmap;...F... |
| 5480 | 20 73 77 61 2e 65 76 65 6e 74 5f 6d 61 73 6b 20 3d 20 4b 65 79 50 72 65 73 73 4d 61 73 6b 20 7c | .swa.event_mask.=.KeyPressMask.| |
| 54a0 | 20 4b 65 79 52 65 6c 65 61 73 65 4d 61 73 6b 20 7c 20 42 75 74 74 6f 6e 50 72 65 73 73 4d 61 73 | .KeyReleaseMask.|.ButtonPressMas |
| 54c0 | 6b 20 7c 00 00 00 52 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 75 74 | k.|...R......................But |
| 54e0 | 74 6f 6e 52 65 6c 65 61 73 65 4d 61 73 6b 20 7c 20 50 6f 69 6e 74 65 72 4d 6f 74 69 6f 6e 4d 61 | tonReleaseMask.|.PointerMotionMa |
| 5500 | 73 6b 20 7c 20 53 74 72 75 63 74 75 72 65 4e 6f 74 69 66 79 4d 61 73 6b 3b 00 00 00 00 00 00 00 | sk.|.StructureNotifyMask;....... |
| 5520 | 60 20 20 20 20 62 2d 3e 78 77 69 6e 20 3d 20 58 43 72 65 61 74 65 57 69 6e 64 6f 77 28 62 2d 3e | `....b->xwin.=.XCreateWindow(b-> |
| 5540 | 64 70 79 2c 20 72 6f 6f 74 2c 20 30 2c 20 30 2c 20 28 75 6e 73 69 67 6e 65 64 29 77 69 64 74 68 | dpy,.root,.0,.0,.(unsigned)width |
| 5560 | 2c 20 28 75 6e 73 69 67 6e 65 64 29 68 65 69 67 68 74 2c 20 30 2c 20 76 69 2d 3e 64 65 70 74 68 | ,.(unsigned)height,.0,.vi->depth |
| 5580 | 2c 00 00 00 55 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ,...U........................... |
| 55a0 | 20 49 6e 70 75 74 4f 75 74 70 75 74 2c 20 76 69 2d 3e 76 69 73 75 61 6c 2c 20 43 57 43 6f 6c 6f | .InputOutput,.vi->visual,.CWColo |
| 55c0 | 72 6d 61 70 20 7c 20 43 57 45 76 65 6e 74 4d 61 73 6b 2c 20 26 73 77 61 29 3b 00 00 00 27 20 20 | rmap.|.CWEventMask,.&swa);...'.. |
| 55e0 | 20 20 58 53 74 6f 72 65 4e 61 6d 65 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 78 77 69 6e 2c 20 74 69 | ..XStoreName(b->dpy,.b->xwin,.ti |
| 5600 | 74 6c 65 29 3b 00 00 00 42 20 20 20 20 62 2d 3e 77 6d 5f 64 65 6c 65 74 65 20 3d 20 58 49 6e 74 | tle);...B....b->wm_delete.=.XInt |
| 5620 | 65 72 6e 41 74 6f 6d 28 62 2d 3e 64 70 79 2c 20 22 57 4d 5f 44 45 4c 45 54 45 5f 57 49 4e 44 4f | ernAtom(b->dpy,."WM_DELETE_WINDO |
| 5640 | 57 22 2c 20 46 61 6c 73 65 29 3b 00 00 00 37 20 20 20 20 58 53 65 74 57 4d 50 72 6f 74 6f 63 6f | W",.False);...7....XSetWMProtoco |
| 5660 | 6c 73 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 78 77 69 6e 2c 20 26 62 2d 3e 77 6d 5f 64 65 6c 65 74 | ls(b->dpy,.b->xwin,.&b->wm_delet |
| 5680 | 65 2c 20 31 29 3b 00 00 00 20 20 20 20 20 58 4d 61 70 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c | e,.1);........XMapWindow(b->dpy, |
| 56a0 | 20 62 2d 3e 78 77 69 6e 29 3b 00 00 00 00 00 00 00 36 20 20 20 20 62 2d 3e 63 74 78 20 3d 20 67 | .b->xwin);.......6....b->ctx.=.g |
| 56c0 | 6c 58 43 72 65 61 74 65 43 6f 6e 74 65 78 74 28 62 2d 3e 64 70 79 2c 20 76 69 2c 20 4e 55 4c 4c | lXCreateContext(b->dpy,.vi,.NULL |
| 56e0 | 2c 20 54 72 75 65 29 3b 00 00 00 2c 20 20 20 20 67 6c 58 4d 61 6b 65 43 75 72 72 65 6e 74 28 62 | ,.True);...,....glXMakeCurrent(b |
| 5700 | 2d 3e 64 70 79 2c 20 62 2d 3e 78 77 69 6e 2c 20 62 2d 3e 63 74 78 29 3b 00 00 00 0e 20 20 20 20 | ->dpy,.b->xwin,.b->ctx);........ |
| 5720 | 58 46 72 65 65 28 76 69 29 3b 00 00 00 00 00 00 00 17 20 20 20 20 63 68 61 72 20 64 61 74 61 5b | XFree(vi);............char.data[ |
| 5740 | 38 5d 20 3d 20 7b 30 7d 3b 00 00 00 46 20 20 20 20 50 69 78 6d 61 70 20 62 6c 61 6e 6b 20 3d 20 | 8].=.{0};...F....Pixmap.blank.=. |
| 5760 | 58 43 72 65 61 74 65 42 69 74 6d 61 70 46 72 6f 6d 44 61 74 61 28 62 2d 3e 64 70 79 2c 20 62 2d | XCreateBitmapFromData(b->dpy,.b- |
| 5780 | 3e 78 77 69 6e 2c 20 64 61 74 61 2c 20 31 2c 20 31 29 3b 00 00 00 11 20 20 20 20 58 43 6f 6c 6f | >xwin,.data,.1,.1);........XColo |
| 57a0 | 72 20 64 75 6d 6d 79 3b 00 00 00 25 20 20 20 20 6d 65 6d 73 65 74 28 26 64 75 6d 6d 79 2c 20 30 | r.dummy;...%....memset(&dummy,.0 |
| 57c0 | 2c 20 73 69 7a 65 6f 66 28 64 75 6d 6d 79 29 29 3b 00 00 00 54 20 20 20 20 43 75 72 73 6f 72 20 | ,.sizeof(dummy));...T....Cursor. |
| 57e0 | 63 75 72 73 6f 72 20 3d 20 58 43 72 65 61 74 65 50 69 78 6d 61 70 43 75 72 73 6f 72 28 62 2d 3e | cursor.=.XCreatePixmapCursor(b-> |
| 5800 | 64 70 79 2c 20 62 6c 61 6e 6b 2c 20 62 6c 61 6e 6b 2c 20 26 64 75 6d 6d 79 2c 20 26 64 75 6d 6d | dpy,.blank,.blank,.&dummy,.&dumm |
| 5820 | 79 2c 20 30 2c 20 30 29 3b 00 00 00 2b 20 20 20 20 58 44 65 66 69 6e 65 43 75 72 73 6f 72 28 62 | y,.0,.0);...+....XDefineCursor(b |
| 5840 | 2d 3e 64 70 79 2c 20 62 2d 3e 78 77 69 6e 2c 20 63 75 72 73 6f 72 29 3b 00 00 00 1f 20 20 20 20 | ->dpy,.b->xwin,.cursor);........ |
| 5860 | 58 46 72 65 65 50 69 78 6d 61 70 28 62 2d 3e 64 70 79 2c 20 62 6c 61 6e 6b 29 3b 00 00 00 20 20 | XFreePixmap(b->dpy,.blank);..... |
| 5880 | 20 20 20 58 46 72 65 65 43 75 72 73 6f 72 28 62 2d 3e 64 70 79 2c 20 63 75 72 73 6f 72 29 3b 00 | ...XFreeCursor(b->dpy,.cursor);. |
| 58a0 | 00 00 00 00 00 00 19 20 20 20 20 58 53 79 6e 63 28 62 2d 3e 64 70 79 2c 20 46 61 6c 73 65 29 3b | ...........XSync(b->dpy,.False); |
| 58c0 | 00 00 00 48 20 20 20 20 58 47 72 61 62 50 6f 69 6e 74 65 72 28 62 2d 3e 64 70 79 2c 20 62 2d 3e | ...H....XGrabPointer(b->dpy,.b-> |
| 58e0 | 78 77 69 6e 2c 20 54 72 75 65 2c 20 30 2c 20 47 72 61 62 4d 6f 64 65 41 73 79 6e 63 2c 20 47 72 | xwin,.True,.0,.GrabModeAsync,.Gr |
| 5900 | 61 62 4d 6f 64 65 41 73 79 6e 63 2c 00 00 00 2d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | abModeAsync,...-................ |
| 5920 | 20 62 2d 3e 78 77 69 6e 2c 20 4e 6f 6e 65 2c 20 43 75 72 72 65 6e 74 54 69 6d 65 29 3b 00 00 00 | .b->xwin,.None,.CurrentTime);... |
| 5940 | 00 00 00 00 1b 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 77 69 64 74 68 20 3d 20 77 69 64 74 68 3b | .........w->state.width.=.width; |
| 5960 | 00 00 00 1d 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 68 65 69 67 68 74 20 3d 20 68 65 69 67 68 74 | ........w->state.height.=.height |
| 5980 | 3b 00 00 00 1c 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 78 20 3d 20 77 69 64 74 68 20 2f 20 32 | ;........b->center_x.=.width./.2 |
| 59a0 | 3b 00 00 00 1d 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 79 20 3d 20 68 65 69 67 68 74 20 2f 20 | ;........b->center_y.=.height./. |
| 59c0 | 32 3b 00 00 00 4e 20 20 20 20 58 57 61 72 70 50 6f 69 6e 74 65 72 28 62 2d 3e 64 70 79 2c 20 4e | 2;...N....XWarpPointer(b->dpy,.N |
| 59e0 | 6f 6e 65 2c 20 62 2d 3e 78 77 69 6e 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c 20 62 2d 3e 63 65 6e | one,.b->xwin,.0,.0,.0,.0,.b->cen |
| 5a00 | 74 65 72 5f 78 2c 20 62 2d 3e 63 65 6e 74 65 72 5f 79 29 3b 00 00 00 12 20 20 20 20 62 2d 3e 77 | ter_x,.b->center_y);........b->w |
| 5a20 | 61 72 70 65 64 20 3d 20 31 3b 00 00 00 19 20 20 20 20 58 53 79 6e 63 28 62 2d 3e 64 70 79 2c 20 | arped.=.1;........XSync(b->dpy,. |
| 5a40 | 46 61 6c 73 65 29 3b 00 00 00 00 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 00 00 01 | False);............return.1;.... |
| 5a60 | 7d 00 00 00 00 00 00 00 2e 76 6f 69 64 20 77 69 6e 64 6f 77 5f 78 31 31 5f 70 6f 6c 6c 28 73 74 | }........void.window_x11_poll(st |
| 5a80 | 72 75 63 74 20 4e 61 74 69 76 65 57 69 6e 64 6f 77 20 2a 77 29 20 7b 00 00 00 1f 20 20 20 20 58 | ruct.NativeWindow.*w).{........X |
| 5aa0 | 31 31 42 61 63 6b 65 6e 64 20 2a 62 20 3d 20 77 2d 3e 62 61 63 6b 65 6e 64 3b 00 00 00 1a 20 20 | 11Backend.*b.=.w->backend;...... |
| 5ac0 | 20 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 78 20 3d 20 30 3b 00 00 00 1a 20 20 20 20 | ..w->state.mouse_dx.=.0;........ |
| 5ae0 | 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 79 20 3d 20 30 3b 00 00 00 00 00 00 00 1e 20 20 | w->state.mouse_dy.=.0;.......... |
| 5b00 | 20 20 77 68 69 6c 65 20 28 58 50 65 6e 64 69 6e 67 28 62 2d 3e 64 70 79 29 29 20 7b 00 00 00 11 | ..while.(XPending(b->dpy)).{.... |
| 5b20 | 20 20 20 20 20 20 20 20 58 45 76 65 6e 74 20 65 3b 00 00 00 1f 20 20 20 20 20 20 20 20 58 4e 65 | ........XEvent.e;............XNe |
| 5b40 | 78 74 45 76 65 6e 74 28 62 2d 3e 64 70 79 2c 20 26 65 29 3b 00 00 00 19 20 20 20 20 20 20 20 20 | xtEvent(b->dpy,.&e);............ |
| 5b60 | 73 77 69 74 63 68 20 28 65 2e 74 79 70 65 29 20 7b 00 00 00 2d 20 20 20 20 20 20 20 20 20 20 20 | switch.(e.type).{...-........... |
| 5b80 | 20 63 61 73 65 20 4b 65 79 50 72 65 73 73 3a 20 63 61 73 65 20 4b 65 79 52 65 6c 65 61 73 65 3a | .case.KeyPress:.case.KeyRelease: |
| 5ba0 | 20 7b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4b 65 79 53 79 6d 20 6b 73 20 | .{...6................KeySym.ks. |
| 5bc0 | 3d 20 58 4c 6f 6f 6b 75 70 4b 65 79 73 79 6d 28 26 65 2e 78 6b 65 79 2c 20 30 29 3b 00 00 00 2a | =.XLookupKeysym(&e.xkey,.0);...* |
| 5be0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6b 20 3d 20 6b 65 79 73 79 6d 5f 74 | ................int.k.=.keysym_t |
| 5c00 | 6f 5f 6b 65 79 28 6b 73 29 3b 00 00 00 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 | o_key(ks);...D................if |
| 5c20 | 20 28 6b 20 3e 3d 20 30 29 20 77 2d 3e 73 74 61 74 65 2e 6b 65 79 73 5b 6b 5d 20 3d 20 28 65 2e | .(k.>=.0).w->state.keys[k].=.(e. |
| 5c40 | 74 79 70 65 20 3d 3d 20 4b 65 79 50 72 65 73 73 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 | type.==.KeyPress);.............. |
| 5c60 | 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 | ......break;................}... |
| 5c80 | 33 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 42 75 74 74 6f 6e 50 72 65 73 73 3a 20 63 | 3............case.ButtonPress:.c |
| 5ca0 | 61 73 65 20 42 75 74 74 6f 6e 52 65 6c 65 61 73 65 3a 20 7b 00 00 00 36 20 20 20 20 20 20 20 20 | ase.ButtonRelease:.{...6........ |
| 5cc0 | 20 20 20 20 20 20 20 20 69 6e 74 20 70 72 65 73 73 65 64 20 3d 20 28 65 2e 74 79 70 65 20 3d 3d | ........int.pressed.=.(e.type.== |
| 5ce0 | 20 42 75 74 74 6f 6e 50 72 65 73 73 29 3b 00 00 00 4f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .ButtonPress);...O.............. |
| 5d00 | 20 20 69 66 20 28 65 2e 78 62 75 74 74 6f 6e 2e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e | ..if.(e.xbutton.button.==.Button |
| 5d20 | 31 29 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 6c 65 66 74 20 3d 20 70 72 65 73 73 65 64 | 1).w->state.mouse_left.=.pressed |
| 5d40 | 3b 00 00 00 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 2e 78 62 75 74 74 | ;...P................if.(e.xbutt |
| 5d60 | 6f 6e 2e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 33 29 20 77 2d 3e 73 74 61 74 65 2e 6d | on.button.==.Button3).w->state.m |
| 5d80 | 6f 75 73 65 5f 72 69 67 68 74 20 3d 20 70 72 65 73 73 65 64 3b 00 00 00 16 20 20 20 20 20 20 20 | ouse_right.=.pressed;........... |
| 5da0 | 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d | .........break;................} |
| 5dc0 | 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 4d 6f 74 69 6f 6e 4e 6f 74 69 66 | ................case.MotionNotif |
| 5de0 | 79 3a 20 7b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 2d 3e 77 | y:.{....................if.(b->w |
| 5e00 | 61 72 70 65 64 29 20 7b 00 00 00 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | arped).{...".................... |
| 5e20 | 62 2d 3e 77 61 72 70 65 64 20 3d 20 30 3b 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | b->warped.=.0;.................. |
| 5e40 | 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 43 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..}.else.{...C.................. |
| 5e60 | 20 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 78 20 2b 3d 20 65 2e 78 6d 6f 74 69 6f 6e | ..w->state.mouse_dx.+=.e.xmotion |
| 5e80 | 2e 78 20 2d 20 62 2d 3e 63 65 6e 74 65 72 5f 78 3b 00 00 00 43 20 20 20 20 20 20 20 20 20 20 20 | .x.-.b->center_x;...C........... |
| 5ea0 | 20 20 20 20 20 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 79 20 2b 3d 20 65 2e | .........w->state.mouse_dy.+=.e. |
| 5ec0 | 78 6d 6f 74 69 6f 6e 2e 79 20 2d 20 62 2d 3e 63 65 6e 74 65 72 5f 79 3b 00 00 00 11 20 20 20 20 | xmotion.y.-.b->center_y;........ |
| 5ee0 | 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 4f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ............}...O............... |
| 5f00 | 20 69 66 20 28 65 2e 78 6d 6f 74 69 6f 6e 2e 78 20 21 3d 20 62 2d 3e 63 65 6e 74 65 72 5f 78 20 | .if.(e.xmotion.x.!=.b->center_x. |
| 5f20 | 7c 7c 20 65 2e 78 6d 6f 74 69 6f 6e 2e 79 20 21 3d 20 62 2d 3e 63 65 6e 74 65 72 5f 79 29 20 7b | ||.e.xmotion.y.!=.b->center_y).{ |
| 5f40 | 00 00 00 5e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 57 61 72 70 50 6f 69 | ...^....................XWarpPoi |
| 5f60 | 6e 74 65 72 28 62 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c 20 62 2d 3e 78 77 69 6e 2c 20 30 2c 20 30 | nter(b->dpy,.None,.b->xwin,.0,.0 |
| 5f80 | 2c 20 30 2c 20 30 2c 20 62 2d 3e 63 65 6e 74 65 72 5f 78 2c 20 62 2d 3e 63 65 6e 74 65 72 5f 79 | ,.0,.0,.b->center_x,.b->center_y |
| 5fa0 | 29 3b 00 00 00 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 2d 3e 77 61 72 | );..."....................b->war |
| 5fc0 | 70 65 64 20 3d 20 31 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 | ped.=.1;....................}... |
| 5fe0 | 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 | .................break;......... |
| 6000 | 20 20 20 20 20 20 20 7d 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 43 6f 6e | .......}...#............case.Con |
| 6020 | 66 69 67 75 72 65 4e 6f 74 69 66 79 3a 20 7b 00 00 00 34 20 20 20 20 20 20 20 20 20 20 20 20 20 | figureNotify:.{...4............. |
| 6040 | 20 20 20 77 2d 3e 73 74 61 74 65 2e 77 69 64 74 68 20 3d 20 65 2e 78 63 6f 6e 66 69 67 75 72 65 | ...w->state.width.=.e.xconfigure |
| 6060 | 2e 77 69 64 74 68 3b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 2d 3e 73 74 | .width;...6................w->st |
| 6080 | 61 74 65 2e 68 65 69 67 68 74 20 3d 20 65 2e 78 63 6f 6e 66 69 67 75 72 65 2e 68 65 69 67 68 74 | ate.height.=.e.xconfigure.height |
| 60a0 | 3b 00 00 00 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 78 | ;...1................b->center_x |
| 60c0 | 20 3d 20 77 2d 3e 73 74 61 74 65 2e 77 69 64 74 68 20 2f 20 32 3b 00 00 00 32 20 20 20 20 20 20 | .=.w->state.width./.2;...2...... |
| 60e0 | 20 20 20 20 20 20 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 79 20 3d 20 77 2d 3e 73 74 61 74 65 | ..........b->center_y.=.w->state |
| 6100 | 2e 68 65 69 67 68 74 20 2f 20 32 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .height./.2;.................... |
| 6120 | 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 21 20 20 20 20 20 | break;................}...!..... |
| 6140 | 20 20 20 20 20 20 20 63 61 73 65 20 43 6c 69 65 6e 74 4d 65 73 73 61 67 65 3a 20 7b 00 00 00 3e | .......case.ClientMessage:.{...> |
| 6160 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 41 74 6f 6d 29 65 2e 78 63 6c 69 | ................if.((Atom)e.xcli |
| 6180 | 65 6e 74 2e 64 61 74 61 2e 6c 5b 30 5d 20 3d 3d 20 62 2d 3e 77 6d 5f 64 65 6c 65 74 65 29 00 00 | ent.data.l[0].==.b->wm_delete).. |
| 61a0 | 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 73 | ......................w->state.s |
| 61c0 | 68 6f 75 6c 64 5f 63 6c 6f 73 65 20 3d 20 31 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 | hould_close.=.1;................ |
| 61e0 | 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 1b 20 | ....break;................}..... |
| 6200 | 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 20 62 72 65 61 6b 3b 00 00 00 09 20 20 | ...........default:.break;...... |
| 6220 | 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 2e 76 6f 69 | ......}........}....}........voi |
| 6240 | 64 20 77 69 6e 64 6f 77 5f 78 31 31 5f 73 77 61 70 28 73 74 72 75 63 74 20 4e 61 74 69 76 65 57 | d.window_x11_swap(struct.NativeW |
| 6260 | 69 6e 64 6f 77 20 2a 77 29 20 7b 00 00 00 1f 20 20 20 20 58 31 31 42 61 63 6b 65 6e 64 20 2a 62 | indow.*w).{........X11Backend.*b |
| 6280 | 20 3d 20 77 2d 3e 62 61 63 6b 65 6e 64 3b 00 00 00 24 20 20 20 20 67 6c 58 53 77 61 70 42 75 66 | .=.w->backend;...$....glXSwapBuf |
| 62a0 | 66 65 72 73 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 78 77 69 6e 29 3b 00 00 00 01 7d 00 00 00 00 00 | fers(b->dpy,.b->xwin);....}..... |
| 62c0 | 00 00 31 76 6f 69 64 20 77 69 6e 64 6f 77 5f 78 31 31 5f 64 65 73 74 72 6f 79 28 73 74 72 75 63 | ..1void.window_x11_destroy(struc |
| 62e0 | 74 20 4e 61 74 69 76 65 57 69 6e 64 6f 77 20 2a 77 29 20 7b 00 00 00 1f 20 20 20 20 58 31 31 42 | t.NativeWindow.*w).{........X11B |
| 6300 | 61 63 6b 65 6e 64 20 2a 62 20 3d 20 77 2d 3e 62 61 63 6b 65 6e 64 3b 00 00 00 27 20 20 20 20 67 | ackend.*b.=.w->backend;...'....g |
| 6320 | 6c 58 4d 61 6b 65 43 75 72 72 65 6e 74 28 62 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c 20 4e 55 4c 4c | lXMakeCurrent(b->dpy,.None,.NULL |
| 6340 | 29 3b 00 00 00 26 20 20 20 20 67 6c 58 44 65 73 74 72 6f 79 43 6f 6e 74 65 78 74 28 62 2d 3e 64 | );...&....glXDestroyContext(b->d |
| 6360 | 70 79 2c 20 62 2d 3e 63 74 78 29 3b 00 00 00 24 20 20 20 20 58 44 65 73 74 72 6f 79 57 69 6e 64 | py,.b->ctx);...$....XDestroyWind |
| 6380 | 6f 77 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 78 77 69 6e 29 3b 00 00 00 1a 20 20 20 20 58 43 6c 6f | ow(b->dpy,.b->xwin);........XClo |
| 63a0 | 73 65 44 69 73 70 6c 61 79 28 62 2d 3e 64 70 79 29 3b 00 00 00 0c 20 20 20 20 66 72 65 65 28 62 | seDisplay(b->dpy);........free(b |
| 63c0 | 29 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 96 00 00 00 00 00 00 00 01 | );....}5........................ |
| 63e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ee 13 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 | ...............................5 |
| 6400 | 81 5f d0 00 00 00 07 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 01 00 00 00 00 00 | ._.............................. |
| 6420 | 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 64a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 64c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 64e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6580 | 00 00 00 00 00 6a 63 47 56 04 01 00 00 00 04 00 f5 18 00 00 00 73 00 00 00 00 00 00 00 00 00 00 | .....jcGV............s.......... |
| 65a0 | 00 01 00 00 00 0e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 f5 18 00 00 00 74 00 00 00 00 00 00 | .........................t...... |
| 65c0 | 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 | ................................ |
| 65e0 | 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ..............5................. |
| 6600 | 00 00 00 00 00 00 73 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f9 0f | ......s......................... |
| 6620 | 00 00 00 00 00 00 f5 18 00 00 00 00 73 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 22 00 00 00 | ............s..............."... |
| 6640 | 01 00 00 00 f9 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 24 04 00 00 00 00 00 00 35 81 5f d0 | ....................$.......5._. |
| 6660 | 00 00 00 08 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 01 00 00 00 12 00 00 00 00 | ................................ |
| 6680 | ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 66a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 66c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 66e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 67a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 67c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 67e0 | 00 00 6a 63 47 7d 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 96 00 | ..jcG}.......................... |
| 6800 | 00 00 13 23 69 6e 63 6c 75 64 65 20 22 77 69 6e 64 6f 77 2e 68 22 00 00 00 15 23 69 6e 63 6c 75 | ...#include."window.h"....#inclu |
| 6820 | 64 65 20 3c 58 31 31 2f 58 6c 69 62 2e 68 3e 00 00 00 17 23 69 6e 63 6c 75 64 65 20 3c 58 31 31 | de.<X11/Xlib.h>....#include.<X11 |
| 6840 | 2f 6b 65 79 73 79 6d 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 47 4c 2f 67 6c 78 2e 68 | /keysym.h>....#include.<GL/glx.h |
| 6860 | 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 47 4c 2f 67 6c 2e 68 3e 00 00 00 13 23 69 6e 63 6c | >....#include.<GL/gl.h>....#incl |
| 6880 | 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 | ude.<stdlib.h>....#include.<stri |
| 68a0 | 6e 67 2e 68 3e 00 00 00 00 00 00 00 10 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 00 00 00 | ng.h>........typedef.struct.{... |
| 68c0 | 11 20 20 20 20 44 69 73 70 6c 61 79 20 2a 64 70 79 3b 00 00 00 1e 20 20 20 20 75 6e 73 69 67 6e | .....Display.*dpy;........unsign |
| 68e0 | 65 64 20 6c 6f 6e 67 20 78 5f 77 69 6e 64 6f 77 5f 69 64 3b 00 00 00 13 20 20 20 20 47 4c 58 43 | ed.long.x_window_id;........GLXC |
| 6900 | 6f 6e 74 65 78 74 20 63 74 78 3b 00 00 00 13 20 20 20 20 41 74 6f 6d 20 77 6d 5f 64 65 6c 65 74 | ontext.ctx;........Atom.wm_delet |
| 6920 | 65 3b 00 00 00 1b 20 20 20 20 69 6e 74 20 63 65 6e 74 65 72 5f 78 2c 20 63 65 6e 74 65 72 5f 79 | e;........int.center_x,.center_y |
| 6940 | 3b 00 00 00 0f 20 20 20 20 69 6e 74 20 77 61 72 70 65 64 3b 00 00 00 0d 7d 20 58 31 31 42 61 63 | ;........int.warped;....}.X11Bac |
| 6960 | 6b 65 6e 64 3b 00 00 00 00 00 00 00 25 73 74 61 74 69 63 20 69 6e 74 20 6b 65 79 73 79 6d 5f 74 | kend;.......%static.int.keysym_t |
| 6980 | 6f 5f 6b 65 79 28 4b 65 79 53 79 6d 20 6b 73 29 20 7b 00 00 00 11 20 20 20 20 73 77 69 74 63 68 | o_key(KeySym.ks).{........switch |
| 69a0 | 20 28 6b 73 29 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 77 3a 20 63 61 | .(ks).{...+........case.XK_w:.ca |
| 69c0 | 73 65 20 58 4b 5f 57 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 57 3b 00 00 00 2b 20 20 20 20 20 20 | se.XK_W:.return.KEY_W;...+...... |
| 69e0 | 20 20 63 61 73 65 20 58 4b 5f 61 3a 20 63 61 73 65 20 58 4b 5f 41 3a 20 72 65 74 75 72 6e 20 4b | ..case.XK_a:.case.XK_A:.return.K |
| 6a00 | 45 59 5f 41 3b 00 00 00 2b 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 73 3a 20 63 61 73 65 | EY_A;...+........case.XK_s:.case |
| 6a20 | 20 58 4b 5f 53 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 53 3b 00 00 00 2b 20 20 20 20 20 20 20 20 | .XK_S:.return.KEY_S;...+........ |
| 6a40 | 63 61 73 65 20 58 4b 5f 64 3a 20 63 61 73 65 20 58 4b 5f 44 3a 20 72 65 74 75 72 6e 20 4b 45 59 | case.XK_d:.case.XK_D:.return.KEY |
| 6a60 | 5f 44 3b 00 00 00 28 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 73 70 61 63 65 3a 20 72 65 | _D;...(........case.XK_space:.re |
| 6a80 | 74 75 72 6e 20 4b 45 59 5f 53 50 41 43 45 3b 00 00 00 27 20 20 20 20 20 20 20 20 63 61 73 65 20 | turn.KEY_SPACE;...'........case. |
| 6aa0 | 58 4b 5f 45 73 63 61 70 65 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 45 53 43 3b 00 00 00 20 20 20 | XK_Escape:.return.KEY_ESC;...... |
| 6ac0 | 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 31 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f 31 3b 00 00 | ......case.XK_1:.return.KEY_1;.. |
| 6ae0 | 00 20 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 32 3a 20 72 65 74 75 72 6e 20 4b 45 59 5f | ..........case.XK_2:.return.KEY_ |
| 6b00 | 32 3b 00 00 00 20 20 20 20 20 20 20 20 20 63 61 73 65 20 58 4b 5f 33 3a 20 72 65 74 75 72 6e 20 | 2;............case.XK_3:.return. |
| 6b20 | 4b 45 59 5f 33 3b 00 00 00 1b 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 20 72 65 74 75 72 | KEY_3;............default:.retur |
| 6b40 | 6e 20 2d 31 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 57 69 6e 74 20 77 | n.-1;........}....}.......Wint.w |
| 6b60 | 69 6e 64 6f 77 5f 78 31 31 5f 69 6e 69 74 28 73 74 72 75 63 74 20 4e 61 74 69 76 65 57 69 6e 64 | indow_x11_init(struct.NativeWind |
| 6b80 | 6f 77 20 2a 77 2c 20 69 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 2c 20 63 6f | ow.*w,.int.width,.int.height,.co |
| 6ba0 | 6e 73 74 20 63 68 61 72 20 2a 74 69 74 6c 65 29 20 7b 00 00 00 32 20 20 20 20 58 31 31 42 61 63 | nst.char.*title).{...2....X11Bac |
| 6bc0 | 6b 65 6e 64 20 2a 62 20 3d 20 63 61 6c 6c 6f 63 28 31 2c 20 73 69 7a 65 6f 66 28 58 31 31 42 61 | kend.*b.=.calloc(1,.sizeof(X11Ba |
| 6be0 | 63 6b 65 6e 64 29 29 3b 00 00 00 13 20 20 20 20 77 2d 3e 62 61 63 6b 65 6e 64 20 3d 20 62 3b 00 | ckend));........w->backend.=.b;. |
| 6c00 | 00 00 00 00 00 00 20 20 20 20 20 62 2d 3e 64 70 79 20 3d 20 58 4f 70 65 6e 44 69 73 70 6c 61 79 | ...........b->dpy.=.XOpenDisplay |
| 6c20 | 28 4e 55 4c 4c 29 3b 00 00 00 27 20 20 20 20 69 66 20 28 21 62 2d 3e 64 70 79 29 20 7b 20 66 72 | (NULL);...'....if.(!b->dpy).{.fr |
| 6c40 | 65 65 28 62 29 3b 20 72 65 74 75 72 6e 20 30 3b 20 7d 00 00 00 00 00 00 00 27 20 20 20 20 69 6e | ee(b);.return.0;.}.......'....in |
| 6c60 | 74 20 73 63 72 65 65 6e 20 3d 20 44 65 66 61 75 6c 74 53 63 72 65 65 6e 28 62 2d 3e 64 70 79 29 | t.screen.=.DefaultScreen(b->dpy) |
| 6c80 | 3b 00 00 00 4d 20 20 20 20 69 6e 74 20 61 74 74 72 69 62 73 5b 5d 20 3d 20 7b 20 47 4c 58 5f 52 | ;...M....int.attribs[].=.{.GLX_R |
| 6ca0 | 47 42 41 2c 20 47 4c 58 5f 44 45 50 54 48 5f 53 49 5a 45 2c 20 32 34 2c 20 47 4c 58 5f 44 4f 55 | GBA,.GLX_DEPTH_SIZE,.24,.GLX_DOU |
| 6cc0 | 42 4c 45 42 55 46 46 45 52 2c 20 4e 6f 6e 65 20 7d 3b 00 00 00 3f 20 20 20 20 58 56 69 73 75 61 | BLEBUFFER,.None.};...?....XVisua |
| 6ce0 | 6c 49 6e 66 6f 20 2a 76 69 20 3d 20 67 6c 58 43 68 6f 6f 73 65 56 69 73 75 61 6c 28 62 2d 3e 64 | lInfo.*vi.=.glXChooseVisual(b->d |
| 6d00 | 70 79 2c 20 73 63 72 65 65 6e 2c 20 61 74 74 72 69 62 73 29 3b 00 00 00 3a 20 20 20 20 69 66 20 | py,.screen,.attribs);...:....if. |
| 6d20 | 28 21 76 69 29 20 7b 20 58 43 6c 6f 73 65 44 69 73 70 6c 61 79 28 62 2d 3e 64 70 79 29 3b 20 66 | (!vi).{.XCloseDisplay(b->dpy);.f |
| 6d40 | 72 65 65 28 62 29 3b 20 72 65 74 75 72 6e 20 30 3b 20 7d 00 00 00 00 00 00 00 3b 20 20 20 20 75 | ree(b);.return.0;.}.......;....u |
| 6d60 | 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 72 6f 6f 74 5f 77 69 6e 64 6f 77 20 3d 20 52 6f 6f 74 57 | nsigned.long.root_window.=.RootW |
| 6d80 | 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c 20 73 63 72 65 65 6e 29 3b 00 00 00 50 20 20 20 20 43 6f | indow(b->dpy,.screen);...P....Co |
| 6da0 | 6c 6f 72 6d 61 70 20 63 6d 61 70 20 3d 20 58 43 72 65 61 74 65 43 6f 6c 6f 72 6d 61 70 28 62 2d | lormap.cmap.=.XCreateColormap(b- |
| 6dc0 | 3e 64 70 79 2c 20 72 6f 6f 74 5f 77 69 6e 64 6f 77 2c 20 76 69 2d 3e 76 69 73 75 61 6c 2c 20 41 | >dpy,.root_window,.vi->visual,.A |
| 6de0 | 6c 6c 6f 63 4e 6f 6e 65 29 3b 00 00 00 1d 20 20 20 20 58 53 65 74 57 69 6e 64 6f 77 41 74 74 72 | llocNone);........XSetWindowAttr |
| 6e00 | 69 62 75 74 65 73 20 73 77 61 3b 00 00 00 18 20 20 20 20 73 77 61 2e 63 6f 6c 6f 72 6d 61 70 20 | ibutes.swa;........swa.colormap. |
| 6e20 | 3d 20 63 6d 61 70 3b 00 00 00 46 20 20 20 20 73 77 61 2e 65 76 65 6e 74 5f 6d 61 73 6b 20 3d 20 | =.cmap;...F....swa.event_mask.=. |
| 6e40 | 4b 65 79 50 72 65 73 73 4d 61 73 6b 20 7c 20 4b 65 79 52 65 6c 65 61 73 65 4d 61 73 6b 20 7c 20 | KeyPressMask.|.KeyReleaseMask.|. |
| 6e60 | 42 75 74 74 6f 6e 50 72 65 73 73 4d 61 73 6b 20 7c 00 00 00 52 20 20 20 20 20 20 20 20 20 20 20 | ButtonPressMask.|...R........... |
| 6e80 | 20 20 20 20 20 20 20 20 20 20 20 42 75 74 74 6f 6e 52 65 6c 65 61 73 65 4d 61 73 6b 20 7c 20 50 | ...........ButtonReleaseMask.|.P |
| 6ea0 | 6f 69 6e 74 65 72 4d 6f 74 69 6f 6e 4d 61 73 6b 20 7c 20 53 74 72 75 63 74 75 72 65 4e 6f 74 69 | ointerMotionMask.|.StructureNoti |
| 6ec0 | 66 79 4d 61 73 6b 3b 00 00 00 00 00 00 00 6e 20 20 20 20 62 2d 3e 78 5f 77 69 6e 64 6f 77 5f 69 | fyMask;.......n....b->x_window_i |
| 6ee0 | 64 20 3d 20 58 43 72 65 61 74 65 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c 20 72 6f 6f 74 5f 77 | d.=.XCreateWindow(b->dpy,.root_w |
| 6f00 | 69 6e 64 6f 77 2c 20 30 2c 20 30 2c 20 28 75 6e 73 69 67 6e 65 64 29 77 69 64 74 68 2c 20 28 75 | indow,.0,.0,.(unsigned)width,.(u |
| 6f20 | 6e 73 69 67 6e 65 64 29 68 65 69 67 68 74 2c 20 30 2c 20 76 69 2d 3e 64 65 70 74 68 2c 00 00 00 | nsigned)height,.0,.vi->depth,... |
| 6f40 | 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ]............................... |
| 6f60 | 20 20 20 20 20 49 6e 70 75 74 4f 75 74 70 75 74 2c 20 76 69 2d 3e 76 69 73 75 61 6c 2c 20 43 57 | .....InputOutput,.vi->visual,.CW |
| 6f80 | 43 6f 6c 6f 72 6d 61 70 20 7c 20 43 57 45 76 65 6e 74 4d 61 73 6b 2c 20 26 73 77 61 29 3b 00 00 | Colormap.|.CWEventMask,.&swa);.. |
| 6fa0 | 00 2e 20 20 20 20 58 53 74 6f 72 65 4e 61 6d 65 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 78 5f 77 69 | ......XStoreName(b->dpy,.b->x_wi |
| 6fc0 | 6e 64 6f 77 5f 69 64 2c 20 74 69 74 6c 65 29 3b 00 00 00 42 20 20 20 20 62 2d 3e 77 6d 5f 64 65 | ndow_id,.title);...B....b->wm_de |
| 6fe0 | 6c 65 74 65 20 3d 20 58 49 6e 74 65 72 6e 41 74 6f 6d 28 62 2d 3e 64 70 79 2c 20 22 57 4d 5f 44 | lete.=.XInternAtom(b->dpy,."WM_D |
| 7000 | 45 4c 45 54 45 5f 57 49 4e 44 4f 57 22 2c 20 46 61 6c 73 65 29 3b 00 00 00 3e 20 20 20 20 58 53 | ELETE_WINDOW",.False);...>....XS |
| 7020 | 65 74 57 4d 50 72 6f 74 6f 63 6f 6c 73 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 78 5f 77 69 6e 64 6f | etWMProtocols(b->dpy,.b->x_windo |
| 7040 | 77 5f 69 64 2c 20 26 62 2d 3e 77 6d 5f 64 65 6c 65 74 65 2c 20 31 29 3b 00 00 00 27 20 20 20 20 | w_id,.&b->wm_delete,.1);...'.... |
| 7060 | 58 4d 61 70 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 78 5f 77 69 6e 64 6f 77 5f 69 | XMapWindow(b->dpy,.b->x_window_i |
| 7080 | 64 29 3b 00 00 00 00 00 00 00 36 20 20 20 20 62 2d 3e 63 74 78 20 3d 20 67 6c 58 43 72 65 61 74 | d);.......6....b->ctx.=.glXCreat |
| 70a0 | 65 43 6f 6e 74 65 78 74 28 62 2d 3e 64 70 79 2c 20 76 69 2c 20 4e 55 4c 4c 2c 20 54 72 75 65 29 | eContext(b->dpy,.vi,.NULL,.True) |
| 70c0 | 3b 00 00 00 33 20 20 20 20 67 6c 58 4d 61 6b 65 43 75 72 72 65 6e 74 28 62 2d 3e 64 70 79 2c 20 | ;...3....glXMakeCurrent(b->dpy,. |
| 70e0 | 62 2d 3e 78 5f 77 69 6e 64 6f 77 5f 69 64 2c 20 62 2d 3e 63 74 78 29 3b 00 00 00 0e 20 20 20 20 | b->x_window_id,.b->ctx);........ |
| 7100 | 58 46 72 65 65 28 76 69 29 3b 00 00 00 00 00 00 00 17 20 20 20 20 63 68 61 72 20 64 61 74 61 5b | XFree(vi);............char.data[ |
| 7120 | 38 5d 20 3d 20 7b 30 7d 3b 00 00 00 4d 20 20 20 20 50 69 78 6d 61 70 20 62 6c 61 6e 6b 20 3d 20 | 8].=.{0};...M....Pixmap.blank.=. |
| 7140 | 58 43 72 65 61 74 65 42 69 74 6d 61 70 46 72 6f 6d 44 61 74 61 28 62 2d 3e 64 70 79 2c 20 62 2d | XCreateBitmapFromData(b->dpy,.b- |
| 7160 | 3e 78 5f 77 69 6e 64 6f 77 5f 69 64 2c 20 64 61 74 61 2c 20 31 2c 20 31 29 3b 00 00 00 11 20 20 | >x_window_id,.data,.1,.1);...... |
| 7180 | 20 20 58 43 6f 6c 6f 72 20 64 75 6d 6d 79 3b 00 00 00 25 20 20 20 20 6d 65 6d 73 65 74 28 26 64 | ..XColor.dummy;...%....memset(&d |
| 71a0 | 75 6d 6d 79 2c 20 30 2c 20 73 69 7a 65 6f 66 28 64 75 6d 6d 79 29 29 3b 00 00 00 54 20 20 20 20 | ummy,.0,.sizeof(dummy));...T.... |
| 71c0 | 43 75 72 73 6f 72 20 63 75 72 73 6f 72 20 3d 20 58 43 72 65 61 74 65 50 69 78 6d 61 70 43 75 72 | Cursor.cursor.=.XCreatePixmapCur |
| 71e0 | 73 6f 72 28 62 2d 3e 64 70 79 2c 20 62 6c 61 6e 6b 2c 20 62 6c 61 6e 6b 2c 20 26 64 75 6d 6d 79 | sor(b->dpy,.blank,.blank,.&dummy |
| 7200 | 2c 20 26 64 75 6d 6d 79 2c 20 30 2c 20 30 29 3b 00 00 00 32 20 20 20 20 58 44 65 66 69 6e 65 43 | ,.&dummy,.0,.0);...2....XDefineC |
| 7220 | 75 72 73 6f 72 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 78 5f 77 69 6e 64 6f 77 5f 69 64 2c 20 63 75 | ursor(b->dpy,.b->x_window_id,.cu |
| 7240 | 72 73 6f 72 29 3b 00 00 00 1f 20 20 20 20 58 46 72 65 65 50 69 78 6d 61 70 28 62 2d 3e 64 70 79 | rsor);........XFreePixmap(b->dpy |
| 7260 | 2c 20 62 6c 61 6e 6b 29 3b 00 00 00 20 20 20 20 20 58 46 72 65 65 43 75 72 73 6f 72 28 62 2d 3e | ,.blank);........XFreeCursor(b-> |
| 7280 | 64 70 79 2c 20 63 75 72 73 6f 72 29 3b 00 00 00 00 00 00 00 19 20 20 20 20 58 53 79 6e 63 28 62 | dpy,.cursor);............XSync(b |
| 72a0 | 2d 3e 64 70 79 2c 20 46 61 6c 73 65 29 3b 00 00 00 4f 20 20 20 20 58 47 72 61 62 50 6f 69 6e 74 | ->dpy,.False);...O....XGrabPoint |
| 72c0 | 65 72 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 78 5f 77 69 6e 64 6f 77 5f 69 64 2c 20 54 72 75 65 2c | er(b->dpy,.b->x_window_id,.True, |
| 72e0 | 20 30 2c 20 47 72 61 62 4d 6f 64 65 41 73 79 6e 63 2c 20 47 72 61 62 4d 6f 64 65 41 73 79 6e 63 | .0,.GrabModeAsync,.GrabModeAsync |
| 7300 | 2c 00 00 00 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 2d 3e 78 5f 77 69 6e 64 6f | ,...4.................b->x_windo |
| 7320 | 77 5f 69 64 2c 20 4e 6f 6e 65 2c 20 43 75 72 72 65 6e 74 54 69 6d 65 29 3b 00 00 00 00 00 00 00 | w_id,.None,.CurrentTime);....... |
| 7340 | 1b 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 77 69 64 74 68 20 3d 20 77 69 64 74 68 3b 00 00 00 1d | .....w->state.width.=.width;.... |
| 7360 | 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 68 65 69 67 68 74 20 3d 20 68 65 69 67 68 74 3b 00 00 00 | ....w->state.height.=.height;... |
| 7380 | 1c 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 78 20 3d 20 77 69 64 74 68 20 2f 20 32 3b 00 00 00 | .....b->center_x.=.width./.2;... |
| 73a0 | 1d 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 79 20 3d 20 68 65 69 67 68 74 20 2f 20 32 3b 00 00 | .....b->center_y.=.height./.2;.. |
| 73c0 | 00 55 20 20 20 20 58 57 61 72 70 50 6f 69 6e 74 65 72 28 62 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c | .U....XWarpPointer(b->dpy,.None, |
| 73e0 | 20 62 2d 3e 78 5f 77 69 6e 64 6f 77 5f 69 64 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c 20 62 2d 3e | .b->x_window_id,.0,.0,.0,.0,.b-> |
| 7400 | 63 65 6e 74 65 72 5f 78 2c 20 62 2d 3e 63 65 6e 74 65 72 5f 79 29 3b 00 00 00 12 20 20 20 20 62 | center_x,.b->center_y);........b |
| 7420 | 2d 3e 77 61 72 70 65 64 20 3d 20 31 3b 00 00 00 19 20 20 20 20 58 53 79 6e 63 28 62 2d 3e 64 70 | ->warped.=.1;........XSync(b->dp |
| 7440 | 79 2c 20 46 61 6c 73 65 29 3b 00 00 00 00 00 00 00 0d 20 20 20 20 72 65 74 75 72 6e 20 31 3b 00 | y,.False);............return.1;. |
| 7460 | 00 00 01 7d 00 00 00 00 00 00 00 2e 76 6f 69 64 20 77 69 6e 64 6f 77 5f 78 31 31 5f 70 6f 6c 6c | ...}........void.window_x11_poll |
| 7480 | 28 73 74 72 75 63 74 20 4e 61 74 69 76 65 57 69 6e 64 6f 77 20 2a 77 29 20 7b 00 00 00 1f 20 20 | (struct.NativeWindow.*w).{...... |
| 74a0 | 20 20 58 31 31 42 61 63 6b 65 6e 64 20 2a 62 20 3d 20 77 2d 3e 62 61 63 6b 65 6e 64 3b 00 00 00 | ..X11Backend.*b.=.w->backend;... |
| 74c0 | 1a 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 78 20 3d 20 30 3b 00 00 00 1a 20 | .....w->state.mouse_dx.=.0;..... |
| 74e0 | 20 20 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 79 20 3d 20 30 3b 00 00 00 00 00 00 00 | ...w->state.mouse_dy.=.0;....... |
| 7500 | 1e 20 20 20 20 77 68 69 6c 65 20 28 58 50 65 6e 64 69 6e 67 28 62 2d 3e 64 70 79 29 29 20 7b 00 | .....while.(XPending(b->dpy)).{. |
| 7520 | 00 00 11 20 20 20 20 20 20 20 20 58 45 76 65 6e 74 20 65 3b 00 00 00 1f 20 20 20 20 20 20 20 20 | ...........XEvent.e;............ |
| 7540 | 58 4e 65 78 74 45 76 65 6e 74 28 62 2d 3e 64 70 79 2c 20 26 65 29 3b 00 00 00 19 20 20 20 20 20 | XNextEvent(b->dpy,.&e);......... |
| 7560 | 20 20 20 73 77 69 74 63 68 20 28 65 2e 74 79 70 65 29 20 7b 00 00 00 2d 20 20 20 20 20 20 20 20 | ...switch.(e.type).{...-........ |
| 7580 | 20 20 20 20 63 61 73 65 20 4b 65 79 50 72 65 73 73 3a 20 63 61 73 65 20 4b 65 79 52 65 6c 65 61 | ....case.KeyPress:.case.KeyRelea |
| 75a0 | 73 65 3a 20 7b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4b 65 79 53 79 6d 20 | se:.{...6................KeySym. |
| 75c0 | 6b 73 20 3d 20 58 4c 6f 6f 6b 75 70 4b 65 79 73 79 6d 28 26 65 2e 78 6b 65 79 2c 20 30 29 3b 00 | ks.=.XLookupKeysym(&e.xkey,.0);. |
| 75e0 | 00 00 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6b 20 3d 20 6b 65 79 73 79 | ..*................int.k.=.keysy |
| 7600 | 6d 5f 74 6f 5f 6b 65 79 28 6b 73 29 3b 00 00 00 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | m_to_key(ks);...D............... |
| 7620 | 20 69 66 20 28 6b 20 3e 3d 20 30 29 20 77 2d 3e 73 74 61 74 65 2e 6b 65 79 73 5b 6b 5d 20 3d 20 | .if.(k.>=.0).w->state.keys[k].=. |
| 7640 | 28 65 2e 74 79 70 65 20 3d 3d 20 4b 65 79 50 72 65 73 73 29 3b 00 00 00 16 20 20 20 20 20 20 20 | (e.type.==.KeyPress);........... |
| 7660 | 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d | .........break;................} |
| 7680 | 00 00 00 33 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 42 75 74 74 6f 6e 50 72 65 73 73 | ...3............case.ButtonPress |
| 76a0 | 3a 20 63 61 73 65 20 42 75 74 74 6f 6e 52 65 6c 65 61 73 65 3a 20 7b 00 00 00 36 20 20 20 20 20 | :.case.ButtonRelease:.{...6..... |
| 76c0 | 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 70 72 65 73 73 65 64 20 3d 20 28 65 2e 74 79 70 65 | ...........int.pressed.=.(e.type |
| 76e0 | 20 3d 3d 20 42 75 74 74 6f 6e 50 72 65 73 73 29 3b 00 00 00 4f 20 20 20 20 20 20 20 20 20 20 20 | .==.ButtonPress);...O........... |
| 7700 | 20 20 20 20 20 69 66 20 28 65 2e 78 62 75 74 74 6f 6e 2e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 | .....if.(e.xbutton.button.==.But |
| 7720 | 74 6f 6e 31 29 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 6c 65 66 74 20 3d 20 70 72 65 73 | ton1).w->state.mouse_left.=.pres |
| 7740 | 73 65 64 3b 00 00 00 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 2e 78 62 | sed;...P................if.(e.xb |
| 7760 | 75 74 74 6f 6e 2e 62 75 74 74 6f 6e 20 3d 3d 20 42 75 74 74 6f 6e 33 29 20 77 2d 3e 73 74 61 74 | utton.button.==.Button3).w->stat |
| 7780 | 65 2e 6d 6f 75 73 65 5f 72 69 67 68 74 20 3d 20 70 72 65 73 73 65 64 3b 00 00 00 16 20 20 20 20 | e.mouse_right.=.pressed;........ |
| 77a0 | 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 | ............break;.............. |
| 77c0 | 20 20 7d 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 4d 6f 74 69 6f 6e 4e 6f | ..}................case.MotionNo |
| 77e0 | 74 69 66 79 3a 20 7b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 | tify:.{....................if.(b |
| 7800 | 2d 3e 77 61 72 70 65 64 29 20 7b 00 00 00 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ->warped).{..."................. |
| 7820 | 20 20 20 62 2d 3e 77 61 72 70 65 64 20 3d 20 30 3b 00 00 00 18 20 20 20 20 20 20 20 20 20 20 20 | ...b->warped.=.0;............... |
| 7840 | 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 43 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .....}.else.{...C............... |
| 7860 | 20 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 78 20 2b 3d 20 65 2e 78 6d 6f 74 | .....w->state.mouse_dx.+=.e.xmot |
| 7880 | 69 6f 6e 2e 78 20 2d 20 62 2d 3e 63 65 6e 74 65 72 5f 78 3b 00 00 00 43 20 20 20 20 20 20 20 20 | ion.x.-.b->center_x;...C........ |
| 78a0 | 20 20 20 20 20 20 20 20 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 6d 6f 75 73 65 5f 64 79 20 2b 3d | ............w->state.mouse_dy.+= |
| 78c0 | 20 65 2e 78 6d 6f 74 69 6f 6e 2e 79 20 2d 20 62 2d 3e 63 65 6e 74 65 72 5f 79 3b 00 00 00 11 20 | .e.xmotion.y.-.b->center_y;..... |
| 78e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 4f 20 20 20 20 20 20 20 20 20 20 20 20 | ...............}...O............ |
| 7900 | 20 20 20 20 69 66 20 28 65 2e 78 6d 6f 74 69 6f 6e 2e 78 20 21 3d 20 62 2d 3e 63 65 6e 74 65 72 | ....if.(e.xmotion.x.!=.b->center |
| 7920 | 5f 78 20 7c 7c 20 65 2e 78 6d 6f 74 69 6f 6e 2e 79 20 21 3d 20 62 2d 3e 63 65 6e 74 65 72 5f 79 | _x.||.e.xmotion.y.!=.b->center_y |
| 7940 | 29 20 7b 00 00 00 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 57 61 72 70 | ).{...e....................XWarp |
| 7960 | 50 6f 69 6e 74 65 72 28 62 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c 20 62 2d 3e 78 5f 77 69 6e 64 6f | Pointer(b->dpy,.None,.b->x_windo |
| 7980 | 77 5f 69 64 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c 20 62 2d 3e 63 65 6e 74 65 72 5f 78 2c 20 62 | w_id,.0,.0,.0,.0,.b->center_x,.b |
| 79a0 | 2d 3e 63 65 6e 74 65 72 5f 79 29 3b 00 00 00 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ->center_y);..."................ |
| 79c0 | 20 20 20 20 62 2d 3e 77 61 72 70 65 64 20 3d 20 31 3b 00 00 00 11 20 20 20 20 20 20 20 20 20 20 | ....b->warped.=.1;.............. |
| 79e0 | 20 20 20 20 20 20 7d 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b | ......}....................break |
| 7a00 | 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 23 20 20 20 20 20 20 20 20 20 20 | ;................}...#.......... |
| 7a20 | 20 20 63 61 73 65 20 43 6f 6e 66 69 67 75 72 65 4e 6f 74 69 66 79 3a 20 7b 00 00 00 34 20 20 20 | ..case.ConfigureNotify:.{...4... |
| 7a40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 77 69 64 74 68 20 3d 20 65 2e | .............w->state.width.=.e. |
| 7a60 | 78 63 6f 6e 66 69 67 75 72 65 2e 77 69 64 74 68 3b 00 00 00 36 20 20 20 20 20 20 20 20 20 20 20 | xconfigure.width;...6........... |
| 7a80 | 20 20 20 20 20 77 2d 3e 73 74 61 74 65 2e 68 65 69 67 68 74 20 3d 20 65 2e 78 63 6f 6e 66 69 67 | .....w->state.height.=.e.xconfig |
| 7aa0 | 75 72 65 2e 68 65 69 67 68 74 3b 00 00 00 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 | ure.height;...1................b |
| 7ac0 | 2d 3e 63 65 6e 74 65 72 5f 78 20 3d 20 77 2d 3e 73 74 61 74 65 2e 77 69 64 74 68 20 2f 20 32 3b | ->center_x.=.w->state.width./.2; |
| 7ae0 | 00 00 00 32 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 2d 3e 63 65 6e 74 65 72 5f 79 20 | ...2................b->center_y. |
| 7b00 | 3d 20 77 2d 3e 73 74 61 74 65 2e 68 65 69 67 68 74 20 2f 20 32 3b 00 00 00 16 20 20 20 20 20 20 | =.w->state.height./.2;.......... |
| 7b20 | 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 | ..........break;................ |
| 7b40 | 7d 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 43 6c 69 65 6e 74 4d 65 73 73 | }...!............case.ClientMess |
| 7b60 | 61 67 65 3a 20 7b 00 00 00 3e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 41 | age:.{...>................if.((A |
| 7b80 | 74 6f 6d 29 65 2e 78 63 6c 69 65 6e 74 2e 64 61 74 61 2e 6c 5b 30 5d 20 3d 3d 20 62 2d 3e 77 6d | tom)e.xclient.data.l[0].==.b->wm |
| 7ba0 | 5f 64 65 6c 65 74 65 29 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | _delete)........................ |
| 7bc0 | 77 2d 3e 73 74 61 74 65 2e 73 68 6f 75 6c 64 5f 63 6c 6f 73 65 20 3d 20 31 3b 00 00 00 16 20 20 | w->state.should_close.=.1;...... |
| 7be0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 00 00 00 0d 20 20 20 20 20 20 20 20 | ..............break;............ |
| 7c00 | 20 20 20 20 7d 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 20 62 72 | ....}................default:.br |
| 7c20 | 65 61 6b 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 | eak;............}........}....}. |
| 7c40 | 00 00 00 00 00 00 2e 76 6f 69 64 20 77 69 6e 64 6f 77 5f 78 31 31 5f 73 77 61 70 28 73 74 72 75 | .......void.window_x11_swap(stru |
| 7c60 | 63 74 20 4e 61 74 69 76 65 57 69 6e 64 6f 77 20 2a 77 29 20 7b 00 00 00 1f 20 20 20 20 58 31 31 | ct.NativeWindow.*w).{........X11 |
| 7c80 | 42 61 63 6b 65 6e 64 20 2a 62 20 3d 20 77 2d 3e 62 61 63 6b 65 6e 64 3b 00 00 00 2b 20 20 20 20 | Backend.*b.=.w->backend;...+.... |
| 7ca0 | 67 6c 58 53 77 61 70 42 75 66 66 65 72 73 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 78 5f 77 69 6e 64 | glXSwapBuffers(b->dpy,.b->x_wind |
| 7cc0 | 6f 77 5f 69 64 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 31 76 6f 69 64 20 77 69 6e 64 6f 77 5f | ow_id);....}.......1void.window_ |
| 7ce0 | 78 31 31 5f 64 65 73 74 72 6f 79 28 73 74 72 75 63 74 20 4e 61 74 69 76 65 57 69 6e 64 6f 77 20 | x11_destroy(struct.NativeWindow. |
| 7d00 | 2a 77 29 20 7b 00 00 00 1f 20 20 20 20 58 31 31 42 61 63 6b 65 6e 64 20 2a 62 20 3d 20 77 2d 3e | *w).{........X11Backend.*b.=.w-> |
| 7d20 | 62 61 63 6b 65 6e 64 3b 00 00 00 27 20 20 20 20 67 6c 58 4d 61 6b 65 43 75 72 72 65 6e 74 28 62 | backend;...'....glXMakeCurrent(b |
| 7d40 | 2d 3e 64 70 79 2c 20 4e 6f 6e 65 2c 20 4e 55 4c 4c 29 3b 00 00 00 26 20 20 20 20 67 6c 58 44 65 | ->dpy,.None,.NULL);...&....glXDe |
| 7d60 | 73 74 72 6f 79 43 6f 6e 74 65 78 74 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 63 74 78 29 3b 00 00 00 | stroyContext(b->dpy,.b->ctx);... |
| 7d80 | 2b 20 20 20 20 58 44 65 73 74 72 6f 79 57 69 6e 64 6f 77 28 62 2d 3e 64 70 79 2c 20 62 2d 3e 78 | +....XDestroyWindow(b->dpy,.b->x |
| 7da0 | 5f 77 69 6e 64 6f 77 5f 69 64 29 3b 00 00 00 1a 20 20 20 20 58 43 6c 6f 73 65 44 69 73 70 6c 61 | _window_id);........XCloseDispla |
| 7dc0 | 79 28 62 2d 3e 64 70 79 29 3b 00 00 00 0c 20 20 20 20 66 72 65 65 28 62 29 3b 00 00 00 01 7d 35 | y(b->dpy);........free(b);....}5 |
| 7de0 | 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 96 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 | ................................ |
| 7e00 | 00 00 00 00 00 00 00 1e 14 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 09 00 | .......................5._...... |
| 7e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 | ................................ |
| 7e40 | 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 63 47 | .............................jcG |
| 7fa0 | 7e 04 01 00 00 00 05 00 f5 18 00 00 00 73 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 1c 20 20 | ~............s.................. |
| 7fc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 57 61 72 70 50 6f 69 f5 18 00 00 00 74 | ..................XWarpPoi.....t |
| 7fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 | ................................ |
| 8000 | 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 | ....................5........... |
| 8020 | 00 00 00 00 00 00 00 00 00 00 00 00 73 00 00 00 1c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ............s................... |
| 8040 | 00 00 00 00 f9 0f 00 00 00 00 00 00 f5 18 00 00 00 00 73 00 00 00 1c 00 00 00 00 00 00 00 00 00 | ..................s............. |
| 8060 | 00 00 22 00 00 00 01 00 00 00 f9 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 04 00 00 00 00 | .."............................. |
| 8080 | 00 00 35 81 e7 aa | ..5... |