summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go36
1 files changed, 17 insertions, 19 deletions
diff --git a/main.go b/main.go
index bc4e0d4..7d7b037 100644
--- a/main.go
+++ b/main.go
@@ -45,23 +45,8 @@ func main() {
case s := <-signals:
common.Error("%s\n", s)
break mainloop
- case e := <- drw.Events:
- if e.Ev == nil && e.Err == nil {
- common.Error("X connection clossed\n")
- break mainloop
- }
-
- if e.Err != nil {
- common.Perror("X.WaitForEvents", e.Err)
- continue
- }
-
- // switch e.Ev.(type) {
- // case xproto.DestroyNotifyEvent:
- // Err <- fmt.Errorf("Window destroyed")
- // return
- // default:
- // }
+ case <- drw.XClosed:
+ break mainloop
case err := <-bspc.EvErr:
common.Error("Couldn't read event: %s\n", err)
break mainloop
@@ -91,9 +76,22 @@ func main() {
common.Error("Couldn't load bspwm state: %s\n", err)
break mainloop
case blocks = <- status.NewBlocks:
- Redraw(state, blocks)
+ select {
+ case <- drw.XClosed:
+ break mainloop
+ default:
+ // Will hang if X is closed
+ Redraw(state, blocks)
+ }
case state = <- bspc.NewState:
- Redraw(state, blocks)
+ // Would've used a fallthrough,
+ // but go doesn't allow it
+ select {
+ case <- drw.XClosed:
+ break mainloop
+ default:
+ Redraw(state, blocks)
+ }
}
}