diff options
author | zelig <viktor.tron@gmail.com> | 2014-06-26 23:26:14 +0800 |
---|---|---|
committer | zelig <viktor.tron@gmail.com> | 2014-06-26 23:26:14 +0800 |
commit | 21d86ca486a88c936a1fe71f78d76c78df36a7eb (patch) | |
tree | 03cf271f99fba4e537c4fe8e91fb8ce53b3e2072 /ethereal/main.go | |
parent | c0a05fcf8984f04f198c5c0f8be4f73090f99403 (diff) | |
download | dexon-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.go | 27 |
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() } |