26 lines
760 B
Odin
26 lines
760 B
Odin
package main
|
|
|
|
import "core:time"
|
|
|
|
Daemon_Sync_State :: struct {
|
|
pending: bool,
|
|
last_edit: time.Time,
|
|
}
|
|
|
|
SDL_DAEMON_SYNC_DEBOUNCE_MS :: 250
|
|
|
|
daemon_sync_schedule :: proc(sync: ^Daemon_Sync_State) {
|
|
sync.pending = true
|
|
sync.last_edit = time.now()
|
|
}
|
|
|
|
daemon_sync_now :: proc(sync: ^Daemon_Sync_State, daemon: ^Daemon_Client, editor: ^Editor, open: bool) {
|
|
daemon_sync_active_buffer(daemon, editor, open)
|
|
sync.pending = false
|
|
}
|
|
|
|
daemon_sync_flush_if_due :: proc(sync: ^Daemon_Sync_State, daemon: ^Daemon_Client, editor: ^Editor) {
|
|
if !sync.pending || !daemon.connected do return
|
|
if time.diff(sync.last_edit, time.now()) < SDL_DAEMON_SYNC_DEBOUNCE_MS * time.Millisecond do return
|
|
daemon_sync_now(sync, daemon, editor, false)
|
|
}
|