History

Change state from record with mutable fields to module with refs

malc committed 5 years ago

Commit cf35c8c1 parent 76881471 file · +175 −232Browse files

Unified · Split

wsi/x11/wsi.ml+175−232
@@ -26,122 +26,66 @@ external glxcompleteinit : unit -> unit = "ml_glxcompleteinit" · 25 unmodified lines
2626 external swapb : unit -> unit = "ml_swapb"
2727 external setcursor : cursor -> unit = "ml_setcursor"
2828
29−let onot = object
30− method display = ()
31− method map _ = ()
32− method expose = ()
33− method visible _ = ()
34− method reshape _ _ = ()
35− method mouse _ _ _ _ _ = ()
36− method motion _ _ = ()
37− method pmotion _ _ = ()
38− method key _ _ = ()
39− method enter _ _ = ()
40− method leave = ()
41− method winstate _ = ()
42− method quit : 'a. 'a = exit 0
43− method scroll _ _ = ()
44− method zoom _ _ _ = ()
45− method opendoc _ = ()
46− end
47−
48−class type t =
49− object
50− method display : unit
51− method map : bool -> unit
52− method expose : unit
53− method visible : visiblestate -> unit
54− method reshape : int -> int -> unit
55− method mouse : int -> bool -> int -> int -> int -> unit
56− method motion : int -> int -> unit
57− method pmotion : int -> int -> unit
58− method key : int -> int -> unit
59− method enter : int -> int -> unit
60− method leave : unit
61− method winstate : winstate list -> unit
62− method quit : 'a. 'a
63− method scroll : int -> int -> unit
64− method zoom : float -> int -> int -> unit
65− method opendoc : string -> unit
66− end
67−
68−type state =
69− { mutable mink : int
70− ; mutable maxk : int
71− ; mutable keymap : int array array
72− ; fifo : (bytes -> unit) Queue.t
73− ; mutable seq : int
74− ; mutable protoatom : atom
75− ; mutable deleatom : atom
76− ; mutable nwmsatom : atom
77− ; mutable maxvatom : atom
78− ; mutable maxhatom : atom
79− ; mutable fulsatom : atom
80− ; mutable idbase : int
81− ; mutable wid : int
82− ; mutable fid : int
83− ; mutable fullscreen : (int -> unit)
84− ; mutable setwmname : (bytes -> unit)
85− ; mutable actwin : (unit -> unit)
86− ; mutable stringatom : int
87− ; mutable t : t
88− ; mutable sock : Unix.file_descr
89− ; mutable x : int
90− ; mutable y : int
91− ; mutable w : int
92− ; mutable h : int
93− ; mutable fs : fs
94− ; mutable curcurs : cursor
95− ; mutable capslmask : int
96− ; mutable numlmask : int
97− ; mutable levl3mask : int
98− ; mutable levl5mask : int
99− ; mutable xkb : bool
100− ; mutable fscale : float
101− }
102−and fs =
103− | NoFs
104− | Fs of (int * int * int * int)
105−and keycode = int
106−
107−let state =
108− { mink = max_int
109− ; maxk = min_int
110− ; keymap = E.a
111− ; fifo = Queue.create ()
112− ; seq = 0
113− ; protoatom = -1
114− ; deleatom = -1
115− ; nwmsatom = -1
116− ; maxvatom = -1
117− ; maxhatom = -1
118− ; fulsatom = -1
119− ; idbase = -1
120− ; wid = -1
121− ; fid = -1
122− ; fullscreen = (fun _ -> ())
123− ; setwmname = (fun _ -> ())
124− ; actwin = (fun _ -> ())
125− ; sock = Unix.stdin
126− ; t = onot
127− ; x = -1
128− ; y = -1
129− ; w = -1
130− ; h = -1
131− ; fs = NoFs
132− ; stringatom = 31
133− ; curcurs = CURSOR_TEXT
134− ; capslmask = 0
135− ; numlmask = 0
136− ; levl3mask = 0
137− ; levl5mask = 0
138− ; xkb = false
139− ; fscale = 1.0
140− }
141−
142−let settitle s = state.setwmname (~> s)
143−let fullscreen () = state.fullscreen state.wid
144−let fontsizescale n = float n *. state.fscale |> truncate
29+module S = struct
30+ type fs =
31+ | NoFs
32+ | Fs of (int * int * int * int)
33+ and keycode = int
34+
35+ let mink = ref max_int
36+ let maxk = ref min_int
37+ let keymap = ref E.a
38+ let fifo = ref (Queue.create ())
39+ let seq = ref 0
40+ let protoatom = ref ~-1
41+ let deleatom = ref ~-1
42+ let nwmsatom = ref ~-1
43+ let maxvatom = ref ~-1
44+ let maxhatom = ref ~-1
45+ let fulsatom = ref ~-1
46+ let idbase = ref ~-1
47+ let wid = ref ~-1
48+ let fid = ref ~-1
49+ let fullscreen = ref (fun _ -> ())
50+ let setwmname = ref (fun _ -> ())
51+ let actwin = ref (fun _ -> ())
52+ let sock = ref Unix.stdin
53+ let x = ref ~-1
54+ let y = ref ~-1
55+ let w = ref ~-1
56+ let h = ref ~-1
57+ let fs = ref NoFs
58+ let stringatom = ref 31
59+ let curcurs = ref CURSOR_TEXT
60+ let capslmask = ref 0
61+ let numlmask = ref 0
62+ let levl3mask = ref 0
63+ let levl5mask = ref 0
64+ let xkb = ref false
65+ let fscale = ref 1.0
66+ let t = ref (object
67+ method display = ()
68+ method map (_:bool) = ()
69+ method expose = ()
70+ method visible (_:visiblestate) = ()
71+ method reshape (_:int) (_:int) = ()
72+ method mouse (_:int) (_:bool) (_:int) (_:int) (_:int) = ()
73+ method motion (_:int) (_:int) = ()
74+ method pmotion (_:int) (_:int) = ()
75+ method key (_:int) (_:int) = ()
76+ method enter (_:int) (_:int) = ()
77+ method leave = ()
78+ method winstate (_:winstate list) = ()
79+ method quit : 'a. 'a = exit 0
80+ method scroll (_:int) (_:int) = ()
81+ method zoom (_:float) (_:int) (_:int) = ()
82+ method opendoc (_:string) = ()
83+ end)
84+end
85+
86+let settitle s = !S.setwmname (~> s)
87+let fullscreen () = !S.fullscreen !S.wid
88+let fontsizescale n = float n *. !S.fscale |> truncate
14589
14690 let ordermagic = 'l'
14791 let metamask = 0x40
@@ -166,7 +110,7 @@ let readstr sock n = · 18 unmodified lines
166110 let rec loop pos n =
167111 let m = tempfailureretry (Unix.read sock s pos) n in
168112 if m = 0
169− then state.t#quit;
113+ then !S.t#quit;
170114 if n != m
171115 then (
172116 ignore (tempfailureretry (Unix.select [sock] [] []) 0.01);
@@ -178,8 +122,8 @@ let readstr sock n = · 5 unmodified lines
178122
179123 let sendstr1 s pos len sock =
180124 let s = Bytes.unsafe_to_string s in
181− vlog "%d <= %S" state.seq s;
182− state.seq <- state.seq + 1;
125+ vlog "%d <= %S" !S.seq s;
126+ S.seq := !S.seq + 1;
183127 let n = tempfailureretry (Unix.write_substring sock s pos) len in
184128 if n != len
185129 then error "send %d returned %d" len n
@@ -193,7 +137,7 @@ let updkmap sock resp = · 7 unmodified lines
193137 else E.b
194138 in
195139 let m = len / syms in
196− state.keymap <- Array.make_matrix state.maxk syms 0xffffff;
140+ S.keymap := Array.make_matrix !S.maxk syms 0xffffff;
197141 let rec loop i =
198142 if i != m
199143 then
@@ -202,7 +146,7 @@ let updkmap sock resp = · 2 unmodified lines
202146 if l != syms
203147 then
204148 let v = r32 data k in
205− state.keymap.(i).(l) <- v;
149+ !S.keymap.(i).(l) <- v;
206150 loop2 (k+4) (l+1)
207151 in
208152 loop2 k 0;
@@ -233,16 +177,16 @@ let updmodmap sock resp = · 24 unmodified lines
233177 modmap.(l).(m) <- code;
234178 if l = 1
235179 then (
236− let ki = code - state.mink in
180+ let ki = code - !S.mink in
237181 if ki >= 0
238182 then
239− let a = state.keymap.(ki) in
183+ let a = !S.keymap.(ki) in
240184 let rec capsloop i =
241185 if not (i = Array.length a || i > 3)
242186 then
243187 let s = a.(i) in
244188 if s = 0xffe5
245− then state.capslmask <- 2
189+ then S.capslmask := 2
246190 else capsloop (i+1)
247191 in
248192 capsloop 0;
@@ -250,18 +194,18 @@ let updmodmap sock resp = · 1 unmodified line
250194 else (
251195 if l > 3
252196 then
253− let ki = code - state.mink in
197+ let ki = code - !S.mink in
254198 if ki >= 0
255199 then
256− let a = state.keymap.(ki) in
200+ let a = !S.keymap.(ki) in
257201 let rec lloop i =
258202 if not (i = Array.length a || i > 3)
259203 then
260204 let s = a.(i) in
261205 match s with
262− | 0xfe03 -> state.levl3mask <- 1 lsl l
263− | 0xfe11 -> state.levl5mask <- 1 lsl l
264− | 0xff7f -> state.numlmask <- 1 lsl l
206+ | 0xfe03 -> S.levl3mask := 1 lsl l
207+ | 0xfe11 -> S.levl5mask := 1 lsl l
208+ | 0xff7f -> S.numlmask := 1 lsl l
265209 | _ -> lloop (i+1)
266210 in
267211 lloop 0;
@@ -274,7 +218,7 @@ let updmodmap sock resp = · 6 unmodified lines
274218 loop 0
275219
276220 let sendwithrep sock s f =
277− Queue.push f state.fifo;
221+ Queue.push f !S.fifo;
278222 sendstr1 s 0 (Bytes.length s) sock
279223
280224 let padcat b1 b2 =
@@ -416,9 +360,9 @@ let getkeysym pkpk code mask = · 135 unmodified lines
416360 if (pkpk >= 0xff80 && pkpk <= 0xffbd)
417361 || (pkpk >= 0x11000000 && pkpk <= 0x1100ffff)
418362 then (
419− if mask land state.numlmask != 0
363+ if mask land !S.numlmask != 0
420364 then
421− let keysym = state.keymap.(code-state.mink).(1) in
365+ let keysym = !S.keymap.(code - !S.mink).(1) in
422366 if keysym = 0 then pkpk else keysym
423367 else pkpk
424368 )
@@ -426,26 +370,26 @@ let getkeysym pkpk code mask = · 1 unmodified line
426370 let shift =
427371 if pkpk land 0xf000 = 0xf000
428372 then 0
429− else (mask land 1) lxor ((mask land state.capslmask) lsr 1)
373+ else (mask land 1) lxor ((mask land !S.capslmask) lsr 1)
430374 in
431375 let index =
432− if state.xkb && mask land 0x2000 != 0
376+ if !S.xkb && mask land 0x2000 != 0
433377 then shift + 2
434378 else
435− let l3 = (mask land state.levl3mask) != 0 in
436− let l4 = (mask land state.levl5mask) != 0 in
379+ let l3 = (mask land !S.levl3mask) != 0 in
380+ let l4 = (mask land !S.levl5mask) != 0 in
437381 shift +
438382 if l3 then (if l4 then 8 else 4) else (if l4 then 6 else 0)
439383 in
440− let keysym = state.keymap.(code-state.mink).(index) in
384+ let keysym = !S.keymap.(code - !S.mink).(index) in
441385 if index land 1 = 1 && keysym = 0
442− then state.keymap.(code-state.mink).(index - 1)
386+ then !S.keymap.(code - !S.mink).(index - 1)
443387 else keysym
444388 )
445389
446390 let getkeysym code mask =
447− let pkpk = state.keymap.(code-state.mink).(0) in
448− if state.xkb && pkpk lsr 8 = 0xfe (* XKB *)
391+ let pkpk = !S.keymap.(code - !S.mink).(0) in
392+ if !S.xkb && pkpk lsr 8 = 0xfe (* XKB *)
449393 then 0
450394 else getkeysym pkpk code mask
451395
@@ -464,11 +408,11 @@ let readresp sock = · 12 unmodified lines
464408 code serial resid min maj (Bytes.unsafe_to_string resp);
465409
466410 | 1 -> (* response *)
467− let rep = Queue.pop state.fifo in
411+ let rep = Queue.pop !S.fifo in
468412 rep resp;
469413
470414 | 2 -> (* key press *)
471− if Array.length state.keymap > 0
415+ if Array.length !S.keymap > 0
472416 then
473417 let code = r8 resp 1 in
474418 let mask = r16 resp 28 in
@@ -476,10 +420,10 @@ let readresp sock = · 1 unmodified line
476420 vlog "keysym = %x %c mask %#x code %d"
477421 keysym (Char.unsafe_chr keysym) mask code;
478422 if keysym != 0
479− then state.t#key keysym mask;
423+ then !S.t#key keysym mask;
480424
481425 | 3 -> (* key release *)
482− if Array.length state.keymap > 0
426+ if Array.length !S.keymap > 0
483427 then
484428 let code = r8 resp 1 in
485429 let mask = r16 resp 28 in
@@ -492,7 +436,7 @@ let readresp sock = · 6 unmodified lines
492436 and x = r16s resp 24
493437 and y = r16s resp 26
494438 and m = r16 resp 28 in
495− state.t#mouse n true x y m;
439+ !S.t#mouse n true x y m;
496440 vlog "press %d" n;
497441
498442 | 5 -> (* buttonrelease *)
@@ -500,7 +444,7 @@ let readresp sock = · 1 unmodified line
500444 and x = r16s resp 24
501445 and y = r16s resp 26
502446 and m = r16 resp 28 in
503− state.t#mouse n false x y m;
447+ !S.t#mouse n false x y m;
504448 vlog "release %d %d %d" n x y;
505449
506450 | 6 -> (* motion *)
@@ -508,30 +452,30 @@ let readresp sock = · 1 unmodified line
508452 let y = r16s resp 26 in
509453 let m = r16 resp 28 in
510454 if m land 0x1f00 = 0
511− then state.t#pmotion x y
512− else state.t#motion x y;
455+ then !S.t#pmotion x y
456+ else !S.t#motion x y;
513457 vlog "move %dx%d => %d" x y m;
514458
515459 | 7 -> (* enter *)
516460 let x = r16s resp 24
517461 and y = r16s resp 26 in
518− state.t#enter x y;
462+ !S.t#enter x y;
519463 vlog "enter %d %d" x y;
520464
521465 | 8 -> (* leave *)
522− state.t#leave;
466+ !S.t#leave;
523467
524468 | 18 -> (* unmap *)
525− state.t#map false;
469+ !S.t#map false;
526470 vlog "unmap";
527471
528472 | 19 -> (* map *)
529− state.t#map true;
473+ !S.t#map true;
530474 vlog "map";
531475
532476 | 12 -> (* exposure *)
533477 vlog "exposure";
534− state.t#expose;
478+ !S.t#expose;
535479
536480 | 15 -> (* visibility *)
537481 let v = r8 resp 8 in
@@ -544,27 +488,27 @@ let readresp sock = · 6 unmodified lines
544488 dolog "unknown visibility %d" v;
545489 Unobscured
546490 in
547− state.t#visible vis;
491+ !S.t#visible vis;
548492 vlog "visibility %d" v;
549493
550494 | 11 -> (* keymapnotify *)
551− state.keymap <- E.a;
552− let s = getkeymapreq state.mink (state.maxk-state.mink-1) in
495+ S.keymap := E.a;
496+ let s = getkeymapreq !S.mink (!S.maxk - !S.mink-1) in
553497 sendwithrep sock s (updkmap sock);
554− state.capslmask <- 0;
555− state.levl3mask <- 0;
556− state.levl5mask <- 0;
557− state.numlmask <- 0;
498+ S.capslmask := 0;
499+ S.levl3mask := 0;
500+ S.levl5mask := 0;
501+ S.numlmask := 0;
558502 let s = getmodifiermappingreq () in
559503 sendwithrep sock s (updmodmap sock);
560504
561505 | 33 -> (* clientmessage *)
562506 let atom = r32 resp 8 in
563− if atom = state.protoatom
507+ if atom = !S.protoatom
564508 then
565509 let atom = r32 resp 12 in
566− if atom = state.deleatom
567− then state.t#quit;
510+ if atom = !S.deleatom
511+ then !S.t#quit;
568512 vlog "atom %#x" atom;
569513
570514 | 21 -> (* reparent *)
@@ -576,25 +520,25 @@ let readresp sock = · 5 unmodified lines
576520 and w = r16 resp 20
577521 and h = r16 resp 22 in
578522 vlog "configure cur [%d %d %d %d] conf [%d %d %d %d]"
579− state.x state.y state.w state.h
523+ !S.x !S.y !S.w !S.h
580524 x y w h;
581− if w != state.w || h != state.h
582− then state.t#reshape w h;
583− state.w <- w;
584− state.h <- h;
585− state.x <- x;
586− state.y <- y;
525+ if w != !S.w || h != !S.h
526+ then !S.t#reshape w h;
527+ S.w := w;
528+ S.h := h;
529+ S.x := x;
530+ S.y := y;
587531
588532 | 24 -> (* Gravity notify *)
589533 ();
590534
591535 | 28 -> (* Property notify *)
592536 let atom = r32 resp 8 in
593− if atom = state.nwmsatom
537+ if atom = !S.nwmsatom
594538 then
595− let s = getpropreq false state.wid atom 4 in
539+ let s = getpropreq false !S.wid atom 4 in
596540 sendwithrep sock s (fun resp ->
597− state.fs <- NoFs;
541+ S.fs := S.NoFs;
598542 let len = r32 resp 4 in
599543 let nitems = r32 resp 16 in
600544 let wsl =
@@ -608,16 +552,15 @@ let readresp sock = · 7 unmodified lines
608552 else
609553 let atom = r32 s (i*4) in
610554 let wsl =
611− if atom = state.maxhatom
555+ if atom = !S.maxhatom
612556 then MaxHorz::wsl
613557 else (
614− if atom = state.maxvatom
558+ if atom = !S.maxvatom
615559 then MaxVert::wsl
616560 else (
617− if atom = state.fulsatom
561+ if atom = !S.fulsatom
618562 then (
619− state.fs <- Fs (state.x, state.y,
620− state.w, state.h);
563+ S.fs := S.Fs (!S.x, !S.y, !S.w, !S.h);
621564 Fullscreen::wsl
622565 )
623566 else wsl
@@ -627,7 +570,7 @@ let readresp sock = · 3 unmodified lines
627570 in
628571 loop [] 0
629572 in
630− state.t#winstate (List.sort compare wsl)
573+ !S.t#winstate (List.sort compare wsl)
631574 );
632575
633576 | n -> dolog "event %d %S" n (Bytes.unsafe_to_string resp)
@@ -644,17 +587,17 @@ let sendstr s ?(pos=0) ?(len=Bytes.length s) sock = · 10 unmodified lines
644587 if hasdata sock then readresp sock
645588
646589 let reshape w h =
647− if state.fs = NoFs
590+ if !S.fs = S.NoFs
648591 then
649592 let s = Bytes.create 8 in
650593 w32 s 0 w;
651594 w32 s 4 h;
652− let s = configurewindowreq state.wid 0x000c s in
653− sendstr s state.sock;
654− else state.fullscreen state.wid
595+ let s = configurewindowreq !S.wid 0x000c s in
596+ sendstr s !S.sock;
597+ else !S.fullscreen !S.wid
655598
656599 let activatewin () =
657− state.actwin ()
600+ !S.actwin ()
658601
659602 let syncsendwithrep sock secstowait s f =
660603 let completed = ref false in
@@ -679,8 +622,8 @@ let syncsendwithrep sock secstowait s f = · 18 unmodified lines
679622 readtillcompletion ()
680623
681624 let mapwin () =
682− let s = mapreq state.wid in
683− sendstr s state.sock
625+ let s = mapreq !S.wid in
626+ sendstr s !S.sock
684627
685628 let syncsendintern sock secstowait s onlyifexists f =
686629 let s = internreq s onlyifexists in
@@ -753,10 +696,10 @@ let setup disp sock rootwid screennum w h = · 66 unmodified lines
753696 and rooth = r16 data (pos+22)
754697 and rootdepth = r8 data (pos+38)in
755698
756− state.fscale <- float rooth /. 1440.0;
757− state.mink <- minkk;
758− state.maxk <- maxkk;
759− state.idbase <- idbase;
699+ S.fscale := float rooth /. 1440.0;
700+ S.mink := minkk;
701+ S.maxk := maxkk;
702+ S.idbase := idbase;
760703 vlog "vendor = %S, maj=%d min=%d" (Bytes.unsafe_to_string vendor) maj min;
761704 vlog "screens = %d formats = %d" screens formats;
762705 vlog "minkk = %d maxkk = %d" minkk maxkk;
@@ -766,12 +709,12 @@ let setup disp sock rootwid screennum w h = · 3 unmodified lines
766709 vlog "visualid = %#x" (r32 data (pos+32));
767710 vlog "root depth = %d" rootdepth;
768711
769− let wid = state.idbase in
712+ let wid = !S.idbase in
770713 let mid = wid+1 in
771714 let fid = mid+1 in
772715
773− state.wid <- wid;
774− state.fid <- fid;
716+ S.wid := wid;
717+ S.fid := fid;
775718
776719 let vid = glxinit disp wid screennum in
777720 let ndepths = r8 data (pos+39) in
@@ -829,12 +772,12 @@ let setup disp sock rootwid screennum w h = · 51 unmodified lines
829772
830773 sendintern
831774 sock (~> "WM_PROTOCOLS") false (fun resp ->
832− state.protoatom <- r32 resp 8;
775+ S.protoatom := r32 resp 8;
833776 sendintern
834777 sock (~> "WM_DELETE_WINDOW") false (fun resp ->
835− state.deleatom <- r32 resp 8;
836− let s = s32 state.deleatom in
837− let s = changepropreq wid state.protoatom 4 32 s in
778+ S.deleatom := r32 resp 8;
779+ let s = s32 !S.deleatom in
780+ let s = changepropreq wid !S.protoatom 4 32 s in
838781 sendstr s sock;
839782 );
840783 );
@@ -851,7 +794,7 @@ let setup disp sock rootwid screennum w h = · 10 unmodified lines
851794 in
852795 if hostname != empty
853796 then
854− let s = changepropreq wid atom state.stringatom 8
797+ let s = changepropreq wid atom !S.stringatom 8
855798 (~> hostname) in
856799 sendstr s sock;
857800 sendintern
@@ -864,22 +807,22 @@ let setup disp sock rootwid screennum w h = · 6 unmodified lines
864807 )
865808 );
866809
867− state.actwin <- (fun () ->
810+ S.actwin := (fun () ->
868811 let s = Bytes.create 4 in
869812 let s = configurewindowreq wid 0x40 s in
870− sendstr s state.sock;
813+ sendstr s !S.sock;
871814 let s = mapreq wid in
872− sendstr s state.sock;
815+ sendstr s !S.sock;
873816 );
874817
875818 sendintern
876819 sock (~> "_NET_ACTIVE_WINDOW") true (fun resp ->
877820 let atom = r32 resp 8 in
878− state.actwin <- (fun () ->
821+ S.actwin := (fun () ->
879822 let data = Bytes.make 20 '\000' in
880823 let cm = clientmessage 32 0 wid atom data in
881824 let s = sendeventreq 0 root 0x180000 cm in
882− sendstr s state.sock;
825+ sendstr s !S.sock;
883826 );
884827 );
885828
@@ -891,7 +834,7 @@ let setup disp sock rootwid screennum w h = · 5 unmodified lines
891834 sendstr s sock;
892835 );
893836
894− let s = getkeymapreq state.mink (state.maxk-state.mink) in
837+ let s = getkeymapreq !S.mink (!S.maxk - !S.mink) in
895838 sendwithrep sock s (updkmap sock);
896839
897840 let s = getmodifiermappingreq () in
@@ -901,56 +844,56 @@ let setup disp sock rootwid screennum w h = · 3 unmodified lines
901844 sock (~> "UTF8_STRING") true (fun resp ->
902845 let atom = r32 resp 8 in
903846 if atom != 0
904− then state.stringatom <- atom;
847+ then S.stringatom := atom;
905848 );
906849
907850 let setwmname s =
908− let s = changepropreq wid 39 state.stringatom 8 s in
909− sendstr s state.sock;
851+ let s = changepropreq wid 39 !S.stringatom 8 s in
852+ sendstr s !S.sock;
910853 in
911− state.setwmname <- setwmname;
854+ S.setwmname := setwmname;
912855 sendintern
913856 sock (~> "_NET_WM_NAME") true (fun resp ->
914857 let atom = r32 resp 8 in
915858 if atom != 0
916− then state.setwmname <- (fun s ->
859+ then S.setwmname := (fun s ->
917860 setwmname s;
918− let s = changepropreq wid atom state.stringatom 8 s in
919− sendstr s state.sock;
861+ let s = changepropreq wid atom !S.stringatom 8 s in
862+ sendstr s !S.sock;
920863 );
921864 );
922865
923866 sendintern
924867 sock (~> "_NET_WM_STATE") true (fun resp ->
925− state.nwmsatom <- r32 resp 8;
926− if state.nwmsatom != 0
868+ S.nwmsatom := r32 resp 8;
869+ if !S.nwmsatom != 0
927870 then (
928871 sendintern sock (~> "_NET_WM_STATE_MAXIMIZED_VERT") true (fun resp ->
929− state.maxvatom <- r32 resp 8;
872+ S.maxvatom := r32 resp 8;
930873 );
931874 sendintern sock (~> "_NET_WM_STATE_MAXIMIZED_HORZ") true (fun resp ->
932− state.maxhatom <- r32 resp 8;
875+ S.maxhatom := r32 resp 8;
933876 );
934877 sendintern
935878 sock (~> "_NET_WM_STATE_FULLSCREEN") false (fun resp ->
936− state.fulsatom <- r32 resp 8;
937− if state.fulsatom != 0
879+ S.fulsatom := r32 resp 8;
880+ if !S.fulsatom != 0
938881 then
939− state.fullscreen <-
882+ S.fullscreen :=
940883 (fun wid ->
941884 let data = Bytes.make 20 '\000' in
942885 let fs, f =
943− match state.fs with
944− | NoFs -> Fs (-1, -1, -1, -1), 1
945− | Fs _ -> NoFs, 0
886+ match !S.fs with
887+ | S.NoFs -> S.Fs (-1, -1, -1, -1), 1
888+ | S.Fs _ -> S.NoFs, 0
946889 in
947890 w32 data 0 f;
948− w32 data 4 state.fulsatom;
891+ w32 data 4 !S.fulsatom;
949892
950− let cm = clientmessage 32 0 wid state.nwmsatom data in
893+ let cm = clientmessage 32 0 wid !S.nwmsatom data in
951894 let s = sendeventreq 0 root 0x180000 cm in
952895 sendstr s sock;
953− state.fs <- fs;
896+ S.fs := fs;
954897 );
955898 );
956899 );
@@ -972,7 +915,7 @@ let setup disp sock rootwid screennum w h = · 15 unmodified lines
972915 sock s
973916 (fun resp ->
974917 let supported = r8 resp 1 in
975− state.xkb <- supported != 0
918+ S.xkb := supported != 0
976919 )
977920 );
978921 );
@@ -981,8 +924,8 @@ let setup disp sock rootwid screennum w h = · 2 unmodified lines
981924 glxcompleteinit ();
982925 let w = r16 resp 16
983926 and h = r16 resp 18 in
984− state.w <- w;
985− state.h <- h;
927+ S.w := w;
928+ S.h := h;
986929 );
987930
988931 | c -> error "unknown connection setup response %d" (Char.code c)
@@ -1138,16 +1081,16 @@ let init t w h = · 149 unmodified lines
11381081 w16 s 6 (String.length aname);
11391082 w16 s 8 (String.length adata);
11401083 sendstr1 s 0 (Bytes.length s) fd;
1141− state.sock <- fd;
1084+ S.sock := fd;
11421085 setup d fd 0 screennum w h;
1143− state.t <- t;
1144− fd, state.w, state.h
1086+ S.t := t;
1087+ fd, !S.w, !S.h
11451088
11461089 let setcursor cursor =
1147− if cursor != state.curcurs
1090+ if cursor != !S.curcurs
11481091 then (
11491092 setcursor cursor;
1150− state.curcurs <- cursor;
1093+ S.curcurs := cursor;
11511094 )
11521095
11531096 let xlatt, xlatf =

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t