• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

A Nix-friendly SQLite-enhanced fork of Flitter, a speedrunning split timer for Unix-style terminals


Commit MetaInfo

修订版d166d2264b343b337c4f21c69d2773e56b03dbeb (tree)
时间2023-05-31 04:03:33
作者Corbin <cds@corb...>
CommiterCorbin

Log Message

Remove two more gettimeofday().

更改概述

差异

--- a/src/event_loop.ml
+++ b/src/event_loop.ml
@@ -1,10 +1,11 @@
11 open Core
22 open Timer_types
33
4-type t = {
5- timer : Timer_types.timer;
4+type 'a t = {
5+ timer : 'a;
66 display : Display.t;
77 last_draw : float;
8+ now : float;
89 hotkeys_stream : Hotkeys.t;
910 }
1011
@@ -13,16 +14,16 @@ type event = Draw_tick | Key of Hotkeys.keypress
1314 let draw_rate = 60.
1415 let period = 1. /. draw_rate
1516
16-let draw_event flitter =
17- let deadline = flitter.last_draw +. period in
18- let delay = deadline -. Core_unix.gettimeofday () in
17+let draw_event l =
18+ let deadline = l.last_draw +. period in
19+ let delay = deadline -. l.now in
1920 let%lwt () =
2021 if Float.(delay > 0.) then Lwt_unix.sleep delay else Lwt.return_unit
2122 in
2223 Lwt.return Draw_tick
2324
24-let keyboard_event flitter =
25- match%lwt Lwt_stream.get flitter.hotkeys_stream with
25+let keyboard_event l =
26+ match%lwt Lwt_stream.get l.hotkeys_stream with
2627 | Some keypress -> Lwt.return (Key keypress)
2728 | None -> failwith "Hotkeys stream exited unexpectedly"
2829
@@ -31,10 +32,10 @@ let array_replace arr i value =
3132 copy.(i) <- value;
3233 copy
3334
34-let handle_key flitter (t, key_str) =
35- let timer = flitter.timer in
35+let handle_key l (t, key_str) =
36+ let timer = l.timer in
3637 let new_timer =
37- match flitter.timer.state with
38+ match timer.state with
3839 | Idle -> (
3940 match key_str with
4041 | "space" | "j" ->
@@ -126,45 +127,44 @@ let handle_key flitter (t, key_str) =
126127 | "q" -> raise Stdlib.Exit
127128 | _ -> timer)
128129 in
129- { flitter with timer = new_timer }
130+ { l with timer = new_timer }
130131
131-let handle_draw flitter =
132- let now = Core_unix.gettimeofday () in
133- let timer =
134- { flitter.timer with state = update_now flitter.timer.state now }
135- in
136- Display.draw flitter.display timer;
137- { flitter with timer; last_draw = now }
132+let handle_draw l =
133+ let timer = { l.timer with state = update_now l.timer.state l.now } in
134+ Display.draw l.display timer;
135+ { l with timer; last_draw = l.now }
138136
139-let rec handle_events flitter events =
137+let rec handle_events l events =
140138 match events with
141139 | evt :: remaining_evts ->
142140 let new_flitter =
143141 match evt with
144- | Draw_tick -> handle_draw flitter
145- | Key keypress -> handle_key flitter keypress
142+ | Draw_tick -> handle_draw l
143+ | Key keypress -> handle_key l keypress
146144 in
147145 handle_events new_flitter remaining_evts
148- | [] -> flitter
146+ | [] -> l
149147
150148 let make timer =
151149 let%lwt hotkeys_stream = Hotkeys.make_stream () in
150+ let now = Core_unix.gettimeofday () in
152151 Lwt.return
153152 {
154153 timer;
155154 display = Display.make ();
156155 (* Make sure we're due for a draw *)
157- last_draw = Core_unix.gettimeofday () -. period;
156+ last_draw = now -. period;
157+ now;
158158 hotkeys_stream;
159159 }
160160
161-let loop flitter =
162- let rec loop' flitter =
163- let%lwt events = Lwt.npick [ draw_event flitter; keyboard_event flitter ] in
164- match handle_events flitter events with
161+let loop l =
162+ let rec loop' l =
163+ let%lwt events = Lwt.npick [ draw_event l; keyboard_event l ] in
164+ match handle_events l events with
165165 | new_flitter -> loop' new_flitter
166166 | exception Stdlib.Exit ->
167- Display.close flitter.display;
167+ Display.close l.display;
168168 Lwt.return ()
169169 in
170- loop' flitter
170+ loop' l
--- a/src/event_loop.mli
+++ b/src/event_loop.mli
@@ -1,4 +1,4 @@
1-type t
1+type 'a t
22
3-val make : Timer_types.timer -> t Lwt.t
4-val loop : t -> unit Lwt.t
3+val make : 'a -> 'a t Lwt.t
4+val loop : Timer_types.timer t -> unit Lwt.t