blob: 0103dacbebd3459d5e4d01684a633e429bac517c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
- think about the statusbar/multithreading.
Three shared TVars:
windowTitle :: TVar String
workspace :: TVar Int
statusText :: TVar String
Three threads:
Main thread, handles all of the events that it handles now. When
necessary, it writes to workspace or windowTitle
Status IO thread, the algorithm is something like this:
forever $ do
s <- getLine
atomic (writeTVar statusText s)
Statusbar drawing thread, waits for changes in all three TVars, and
redraws whenever it finds a change.
|