From c2c548087862b455362e29278a2f3dd5cdc932f2 Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Fri, 6 Sep 2024 14:29:37 +0900 Subject: [PATCH] Revert "internal/atlas: move some functions in internal/restorable to internal/atlas" This reverts commit 3651d73e0b2379da2a5dc5d1d32bd75fdb560c52. Updates #3083 --- internal/atlas/image.go | 12 ++---------- internal/restorable/image.go | 4 ++++ internal/restorable/images.go | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 internal/restorable/images.go diff --git a/internal/atlas/image.go b/internal/atlas/image.go index f014b528d..dbdb00a7e 100644 --- a/internal/atlas/image.go +++ b/internal/atlas/image.go @@ -141,8 +141,6 @@ var ( imagesUsedAsDestination smallImageSet - graphicsDriverInitialized bool - deferred []func() // deferredM is a mutex for the slice operations. This must not be used for other usages. @@ -655,10 +653,6 @@ func (i *Image) finalize() { } func (i *Image) allocate(forbiddenBackends []*backend, asSource bool) { - if !graphicsDriverInitialized { - panic("atlas: graphics driver must be ready at allocate but not") - } - if i.backend != nil { panic("atlas: the image is already allocated") } @@ -821,7 +815,7 @@ func BeginFrame(graphicsDriver graphicsdriver.Graphics) error { var err error initOnce.Do(func() { - err = graphicscommand.InitializeGraphicsDriverState(graphicsDriver) + err = restorable.InitializeGraphicsDriverState(graphicsDriver) if err != nil { return } @@ -837,10 +831,8 @@ func BeginFrame(graphicsDriver graphicsdriver.Graphics) error { minDestinationSize = 16 } if maxSize == 0 { - maxSize = floorPowerOf2(graphicscommand.MaxImageSize(graphicsDriver)) + maxSize = floorPowerOf2(restorable.MaxImageSize(graphicsDriver)) } - - graphicsDriverInitialized = true }) if err != nil { return err diff --git a/internal/restorable/image.go b/internal/restorable/image.go index 6298d761c..e69bfab57 100644 --- a/internal/restorable/image.go +++ b/internal/restorable/image.go @@ -52,6 +52,10 @@ type Image struct { // // Note that Dispose is not called automatically. func NewImage(width, height int, imageType ImageType) *Image { + if !graphicsDriverInitialized { + panic("restorable: graphics driver must be ready at NewImage but not") + } + i := &Image{ Image: graphicscommand.NewImage(width, height, imageType == ImageTypeScreen), width: width, diff --git a/internal/restorable/images.go b/internal/restorable/images.go new file mode 100644 index 000000000..03bac0eaa --- /dev/null +++ b/internal/restorable/images.go @@ -0,0 +1,33 @@ +// Copyright 2017 The Ebiten Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package restorable + +import ( + "github.com/hajimehoshi/ebiten/v2/internal/graphicscommand" + "github.com/hajimehoshi/ebiten/v2/internal/graphicsdriver" +) + +var graphicsDriverInitialized bool + +// InitializeGraphicsDriverState initializes the graphics driver state. +func InitializeGraphicsDriverState(graphicsDriver graphicsdriver.Graphics) error { + graphicsDriverInitialized = true + return graphicscommand.InitializeGraphicsDriverState(graphicsDriver) +} + +// MaxImageSize returns the maximum size of an image. +func MaxImageSize(graphicsDriver graphicsdriver.Graphics) int { + return graphicscommand.MaxImageSize(graphicsDriver) +}