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) }