From 0d748a0699760003444efca219eb4bb245996008 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Thu, 27 Sep 2018 15:27:08 +0900 Subject: Kill running preview process after 500ms when focus has changed Close #1383 Close #1384 --- src/util/util_windows.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/util/util_windows.go') diff --git a/src/util/util_windows.go b/src/util/util_windows.go index 41a9a5c7..51715cd8 100644 --- a/src/util/util_windows.go +++ b/src/util/util_windows.go @@ -10,13 +10,15 @@ import ( ) // ExecCommand executes the given command with cmd -func ExecCommand(command string) *exec.Cmd { +func ExecCommand(command string, setpgid bool) *exec.Cmd { return ExecCommandWith("cmd", command) } // ExecCommandWith executes the given command with cmd. _shell parameter is // ignored on Windows. -func ExecCommandWith(_shell string, command string) *exec.Cmd { +// FIXME: setpgid is unused. We set it in the Unix implementation so that we +// can kill preview process with its child processes at once. +func ExecCommandWith(_shell string, command string, setpgid bool) *exec.Cmd { cmd := exec.Command("cmd") cmd.SysProcAttr = &syscall.SysProcAttr{ HideWindow: false, @@ -26,12 +28,17 @@ func ExecCommandWith(_shell string, command string) *exec.Cmd { return cmd } +// KillCommand kills the process for the given command +func KillCommand(cmd *exec.Cmd) error { + return cmd.Process.Kill() +} + // IsWindows returns true on Windows func IsWindows() bool { return true } -// SetNonBlock executes syscall.SetNonblock on file descriptor +// SetNonblock executes syscall.SetNonblock on file descriptor func SetNonblock(file *os.File, nonblock bool) { syscall.SetNonblock(syscall.Handle(file.Fd()), nonblock) } -- cgit v1.2.3