Update GLFW: suppress joystick issue (again)

Updates #1229
This commit is contained in:
Hajime Hoshi 2021-07-15 01:02:54 +09:00
parent 66dbca7fdd
commit ec5b034cbf
4 changed files with 21 additions and 13 deletions

2
go.mod
View File

@ -3,7 +3,7 @@ module github.com/hajimehoshi/ebiten/v2
go 1.15
require (
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20210714145042-ef648d7b4198
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20210714155130-550f9471722b
github.com/gofrs/flock v0.8.0
github.com/hajimehoshi/bitmapfont/v2 v2.1.3
github.com/hajimehoshi/file2byteslice v0.0.0-20200812174855-0e5e8a80490e

4
go.sum
View File

@ -1,6 +1,6 @@
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20210714145042-ef648d7b4198 h1:ucTpB2JPNdBbIedBwFGl3p8j94ecAIYfkoYV7r3nV+E=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20210714145042-ef648d7b4198/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20210714155130-550f9471722b h1:WrW6EbWsK1YaFiljN7kZ91bSHcyDgLz34jZvu71yVwE=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20210714155130-550f9471722b/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/gofrs/flock v0.8.0 h1:MSdYClljsF3PbENUUEx85nkWfJSGfzYI9yEBZOJz6CY=
github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
github.com/hajimehoshi/bitmapfont/v2 v2.1.3 h1:JefUkL0M4nrdVwVq7MMZxSTh6mSxOylm+C4Anoucbb0=

View File

@ -420,10 +420,14 @@ func GetPrimaryMonitor() *Monitor {
func Init() error {
glfwDLL.call("glfwInit")
// InvalidValue can happen when specific joysticks are used. This issue
// will be fixed in GLFW 3.3.5. As a temporary fix, accept this error.
// will be fixed in GLFW 3.3.5. As a temporary fix, ignore this error.
// See go-gl/glfw#292, go-gl/glfw#324, and glfw/glfw#1763
// (#1229).
return acceptError(APIUnavailable, InvalidValue)
err := acceptError(APIUnavailable, InvalidValue)
if e, ok := err.(*glfwError); ok && e.code == InvalidValue {
return nil
}
return err
}
func (j Joystick) Present() bool {

View File

@ -129,7 +129,7 @@ func (e *glfwError) Error() string {
var lastErr = make(chan *glfwError, 1)
func fetchError() error {
func fetchError() *glfwError {
select {
case err := <-lastErr:
return err
@ -146,7 +146,7 @@ func panicError() {
func flushErrors() {
if err := fetchError(); err != nil {
panic(fmt.Sprintf("glfw: uncaught error: %s", err))
panic(fmt.Sprintf("glfw: uncaught error: %s", err.Error()))
}
}
@ -156,14 +156,18 @@ func acceptError(codes ...ErrorCode) error {
return nil
}
for _, c := range codes {
if err.(*glfwError).code == c {
return nil
if err.code == c {
return err
}
}
if err.(*glfwError).code == PlatformError {
// PlatformError is not handled here (See github.com/go-gl/glfw's implementation).
// TODO: Should we log this error?
switch err.code {
case PlatformError:
// TODO: Should we log this?
return nil
case NotInitialized, NoCurrentContext, InvalidEnum, InvalidValue, OutOfMemory:
panic(err)
default:
panic(fmt.Sprintf("glfw: uncaught error: %s", err.Error()))
}
return err
}
@ -177,7 +181,7 @@ func goGLFWErrorCallback(code uintptr, desc *byte) uintptr {
select {
case lastErr <- err:
default:
panic(fmt.Sprintf("glfw: uncaught error: %s", err))
panic(fmt.Sprintf("glfw: uncaught error: %s", err.Error()))
}
return 0
}