hacky solution to race condition

This commit is contained in:
andrzej 2024-11-03 09:34:45 +01:00
parent b317ef0339
commit 52902aa5c8
1 changed files with 13 additions and 10 deletions

View File

@ -1,7 +1,7 @@
package main package main
import ( import (
"bufio" // "bufio"
"fmt" "fmt"
"log" "log"
"os/exec" "os/exec"
@ -14,14 +14,15 @@ func slideshow(ch <-chan string) {
//set a flat background color based on config defaults //set a flat background color based on config defaults
fillCmd := exec.Command("swaybg", "-c", "#232136") fillCmd := exec.Command("swaybg", "-c", "#232136")
stdout, _ := fillCmd.StdoutPipe() // stdout, _ := fillCmd.StdoutPipe()
scanner := bufio.NewScanner(stdout) // scanner := bufio.NewScanner(stdout)
out := make(chan string) // out := make(chan string)
go func() { // go func() {
for scanner.Scan() { // for scanner.Scan() {
out <- scanner.Text() // fmt.Println("scanner: ", scanner.Text())
} // out <- scanner.Text()
}() // }
// }()
ready := make(chan bool) ready := make(chan bool)
go func() { go func() {
@ -29,7 +30,8 @@ func slideshow(ch <-chan string) {
if err != nil { if err != nil {
fmt.Println("could not set background color", err) fmt.Println("could not set background color", err)
} }
<-out //NOTE: this is *very* hacky, but it is difficult to know when swaybg has initiated
time.Sleep(100 * time.Millisecond)
ready <- true ready <- true
fmt.Println("bg color set!") fmt.Println("bg color set!")
fillCmd.Wait() fillCmd.Wait()
@ -38,6 +40,7 @@ func slideshow(ch <-chan string) {
var cmd *exec.Cmd var cmd *exec.Cmd
go func() { go func() {
for { for {
<-ready
newCmd := setRandomWallpaper(dir) newCmd := setRandomWallpaper(dir)
if cmd != nil { if cmd != nil {
err := cmd.Process.Kill() err := cmd.Process.Kill()