replace Init and Quit with Run

This commit is contained in:
faiface 2016-11-25 17:45:24 +01:00
parent 0986e0c35e
commit ee9c6a6b6e
2 changed files with 37 additions and 35 deletions

35
init.go
View File

@ -1,35 +0,0 @@
package pixel
import (
"github.com/faiface/pixel/pixelgl"
"github.com/go-gl/glfw/v3.2/glfw"
"github.com/pkg/errors"
)
// Init initializes Pixel library. Call this function before using any of Pixel's functionality.
//
// If the initialization fails, an error is returned.
func Init() error {
err := pixelgl.DoErr(func() error {
return glfw.Init()
})
if err != nil {
return errors.Wrap(err, "initializing GLFW failed")
}
return nil
}
// MustInit initializes Pixel library and panics when the initialization fails.
func MustInit() {
err := Init()
if err != nil {
panic(err)
}
}
// Quit terminates Pixel library. Call this function when you're done with Pixel.
func Quit() {
pixelgl.Do(func() {
glfw.Terminate()
})
}

37
run.go Normal file
View File

@ -0,0 +1,37 @@
package pixel
import (
"github.com/faiface/pixel/pixelgl"
"github.com/go-gl/glfw/v3.2/glfw"
"github.com/pkg/errors"
)
// Run is essentialy the "main" function of Pixel. It exists mainly due to the technical limitations of OpenGL and operating systems,
// in short, all graphics and window manipulating calls must be done from the main thread. Run makes this possible.
//
// Call this function from the main function of your application. This is necessary, so that Run runs on the main thread.
//
// func run() {
// window := pixel.NewWindow(...)
// for {
// // your game's main loop
// }
// }
//
// func main() {
// pixel.Run(run)
// }
//
// You can spawn any number of goroutines from you run function and interact with Pixel concurrently.
// The only condition is that the Run function must be called from your main function.
func Run(run func()) error {
err := glfw.Init()
if err != nil {
return errors.Wrap(err, "failed to initialize GLFW")
}
defer glfw.Terminate()
pixelgl.Run(run)
return nil
}