about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2023-09-24 15:25:39 +0200
committerbptato <nincsnevem662@gmail.com>2023-09-24 15:25:39 +0200
commit088202c92f86b94262c173d210885c0ae579f148 (patch)
treec11a7fdf640e7320f29e14df1ed77132f2fd6920 /src
parente0745a3e88d737833c520ae363eaad9d43f1786d (diff)
downloadchawan-088202c92f86b94262c173d210885c0ae579f148.tar.gz
client, timeout: simplify
We don't use the generic feature of selectors, so just unify the
client & buffer timeout types.
Diffstat (limited to 'src')
-rw-r--r--src/html/dom.nim2
-rw-r--r--src/js/timeout.nim18
-rw-r--r--src/local/client.nim16
3 files changed, 18 insertions, 18 deletions
diff --git a/src/html/dom.nim b/src/html/dom.nim
index b7b23356..0fac35e7 100644
--- a/src/html/dom.nim
+++ b/src/html/dom.nim
@@ -99,7 +99,7 @@ type
     jsrt*: JSRuntime
     jsctx*: JSContext
     document* {.jsufget.}: Document
-    timeouts*: TimeoutState[int]
+    timeouts*: TimeoutState
     navigate*: proc(url: URL)
 
   # Navigator stuff
diff --git a/src/js/timeout.nim b/src/js/timeout.nim
index 0e31d8a3..4657ac35 100644
--- a/src/js/timeout.nim
+++ b/src/js/timeout.nim
@@ -4,20 +4,20 @@ import tables
 
 import js/javascript
 
-type TimeoutState*[T] = object
+type TimeoutState* = object
   timeoutid: int32
   timeouts: Table[int32, tuple[handler: (proc()), fdi: int]]
   intervals: Table[int32, tuple[handler: (proc()), fdi: int, tofree: JSValue]]
   timeout_fdis: Table[int, int32]
   interval_fdis: Table[int, int32]
-  selector: Selector[T] #TODO would be better with void...
+  selector: Selector[int] #TODO would be better with void...
   jsctx: JSContext
   err: Stream #TODO shouldn't be needed
   evalJSFree: proc(src, file: string) #TODO ew
 
-func newTimeoutState*[T](selector: Selector[T], jsctx: JSContext,
-    err: Stream, evalJSFree: proc(src, file: string)): TimeoutState[T] =
-  return TimeoutState[T](
+func newTimeoutState*(selector: Selector[int], jsctx: JSContext, err: Stream,
+    evalJSFree: proc(src, file: string)): TimeoutState =
+  return TimeoutState(
     selector: selector,
     jsctx: jsctx,
     err: err,
@@ -28,11 +28,11 @@ func empty*(state: TimeoutState): bool =
   return state.timeouts.len == 0 and state.intervals.len == 0
 
 #TODO varargs
-proc setTimeout*[T: JSValue|string, S](state: var TimeoutState[S], handler: T,
+proc setTimeout*[T: JSValue|string](state: var TimeoutState, handler: T,
     timeout = 0i32): int32 =
   let id = state.timeoutid
   inc state.timeoutid
-  let fdi = state.selector.registerTimer(max(timeout, 1), true, default(S))
+  let fdi = state.selector.registerTimer(max(timeout, 1), true, 0)
   state.timeout_fdis[fdi] = id
   when T is string:
     let evalJSFree = state.evalJSFree
@@ -68,11 +68,11 @@ proc clearInterval*(state: var TimeoutState, id: int32) =
     state.intervals.del(id)
 
 #TODO varargs
-proc setInterval*[T: JSValue|string, S](state: var TimeoutState[S], handler: T,
+proc setInterval*[T: JSValue|string](state: var TimeoutState, handler: T,
     interval = 0i32): int32 =
   let id = state.timeoutid
   inc state.timeoutid
-  let fdi = state.selector.registerTimer(max(interval, 1), false, default(S))
+  let fdi = state.selector.registerTimer(max(interval, 1), false, 0)
   state.interval_fdis[fdi] = id
   when T is string:
     let evalJSFree = state.evalJSFree
diff --git a/src/local/client.nim b/src/local/client.nim
index 591e07c7..b7e8d329 100644
--- a/src/local/client.nim
+++ b/src/local/client.nim
@@ -71,9 +71,9 @@ type
     pager {.jsget.}: Pager
     precnum: int32 # current number prefix (when vi-numeric-prefix is true)
     s: string # current input buffer
-    selector: Selector[Container]
+    selector: Selector[int]
     store {.jsget, jsset.}: Document
-    timeouts: TimeoutState[Container]
+    timeouts: TimeoutState
     userstyle: CSSStylesheet
 
   Console = ref object
@@ -317,7 +317,7 @@ proc acceptBuffers(client: Client) =
     container.setStream(stream)
     let fd = stream.source.getFd()
     client.fdmap[int(fd)] = container
-    client.selector.registerHandle(fd, {Read}, nil)
+    client.selector.registerHandle(fd, {Read}, 0)
     client.pager.handleEvents(container)
   client.pager.procmap.clear()
 
@@ -393,8 +393,8 @@ proc handleError(client: Client, fd: int) =
 proc inputLoop(client: Client) =
   let selector = client.selector
   discard c_setvbuf(client.console.tty, nil, IONBF, 0)
-  selector.registerHandle(int(client.console.tty.getFileHandle()), {Read}, nil)
-  let sigwinch = selector.registerSignal(int(SIGWINCH), nil)
+  selector.registerHandle(int(client.console.tty.getFileHandle()), {Read}, 0)
+  let sigwinch = selector.registerSignal(int(SIGWINCH), 0)
   while true:
     let events = client.selector.select(-1)
     for event in events:
@@ -532,11 +532,11 @@ proc launchClient*(client: Client, pages: seq[string],
         dump = not open(tty, "/dev/tty", fmRead)
     else:
       dump = true
-  let selector = newSelector[Container]()
+  let selector = newSelector[int]()
   let efd = int(client.forkserver.estream.fd)
-  selector.registerHandle(efd, {Read}, nil)
+  selector.registerHandle(efd, {Read}, 0)
   client.loader.registerFun = proc(fd: int) =
-    selector.registerHandle(fd, {Read}, nil)
+    selector.registerHandle(fd, {Read}, 0)
   client.loader.unregisterFun = proc(fd: int) =
     selector.unregister(fd)
   client.selector = selector