aboutsummaryrefslogtreecommitdiffstats
path: root/ethereal/main.go
diff options
context:
space:
mode:
authorzelig <viktor.tron@gmail.com>2014-06-26 23:26:14 +0800
committerzelig <viktor.tron@gmail.com>2014-06-26 23:26:14 +0800
commit21d86ca486a88c936a1fe71f78d76c78df36a7eb (patch)
tree03cf271f99fba4e537c4fe8e91fb8ce53b3e2072 /ethereal/main.go
parentc0a05fcf8984f04f198c5c0f8be4f73090f99403 (diff)
downloaddexon-21d86ca486a88c936a1fe71f78d76c78df36a7eb.tar
dexon-21d86ca486a88c936a1fe71f78d76c78df36a7eb.tar.gz
dexon-21d86ca486a88c936a1fe71f78d76c78df36a7eb.tar.bz2
dexon-21d86ca486a88c936a1fe71f78d76c78df36a7eb.tar.lz
dexon-21d86ca486a88c936a1fe71f78d76c78df36a7eb.tar.xz
dexon-21d86ca486a88c936a1fe71f78d76c78df36a7eb.tar.zst
dexon-21d86ca486a88c936a1fe71f78d76c78df36a7eb.zip
gui stop
- introduce gui.Stop() - remember state with open - stopping ethereum stack is not gui concern, moved to main - stopping mining, gui and ethereum handled via interrupt callbacks - ^C triggers exactly the same behaviour as quit via menu
Diffstat (limited to 'ethereal/main.go')
-rw-r--r--ethereal/main.go27
1 files changed, 22 insertions, 5 deletions
diff --git a/ethereal/main.go b/ethereal/main.go
index 5dfab4c45..cfd85afe7 100644
--- a/ethereal/main.go
+++ b/ethereal/main.go
@@ -3,17 +3,24 @@ package main
import (
"github.com/ethereum/go-ethereum/ethereal/ui"
"github.com/ethereum/go-ethereum/utils"
+ "github.com/ethereum/eth-go/ethlog"
"github.com/go-qml/qml"
"runtime"
+ "os"
)
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
- utils.HandleInterrupt()
-
qml.Init(nil)
+ var interrupted = false
+ utils.RegisterInterrupt(func(os.Signal) {
+ interrupted = true
+ })
+
+ utils.HandleInterrupt()
+
// precedence: code-internal flag default < config file < environment variables < command line
Init() // parsing command line
utils.InitConfig(ConfigFile, Datadir, Identifier, "ETH")
@@ -36,9 +43,19 @@ func main() {
}
gui := ethui.New(ethereum, LogLevel)
- gui.Start(AssetPath)
+ utils.RegisterInterrupt(func(os.Signal) {
+ gui.Stop()
+ })
utils.StartEthereum(ethereum, UseSeed)
-
-
+ // gui blocks the main thread
+ gui.Start(AssetPath)
+ // we need to run the interrupt callbacks in case gui is closed
+ // this skips if we got here by actual interrupt stopping the GUI
+ if !interrupted {
+ utils.RunInterruptCallbacks(os.Interrupt)
+ }
+ // this blocks the thread
+ ethereum.WaitForShutdown()
+ ethlog.Flush()
}