editor/client/odin/daemon_sync.odin
2026-07-09 08:27:13 +02:00

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