mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-01-26 02:42:02 +01:00
Remove 'Pause'
This commit is contained in:
parent
eb8e8b6034
commit
f71dcd3466
@ -89,17 +89,6 @@ func (c *graphicsContext) Update() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *graphicsContext) Pause() error {
|
|
||||||
if err := theImages.evacuatePixels(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := graphics.Finalize(ui.GLContext()); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
ui.GLContext().Pause()
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *graphicsContext) Resume() error {
|
func (c *graphicsContext) Resume() error {
|
||||||
ui.GLContext().Resume()
|
ui.GLContext().Resume()
|
||||||
if !c.imageTasksDone {
|
if !c.imageTasksDone {
|
||||||
|
52
image.go
52
image.go
@ -99,21 +99,6 @@ func (i *images) isEvacuated() bool {
|
|||||||
return i.evacuated
|
return i.evacuated
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *images) evacuatePixels() error {
|
|
||||||
i.m.Lock()
|
|
||||||
defer i.m.Unlock()
|
|
||||||
if i.evacuated {
|
|
||||||
return errors.New("ebiten: images must not be evacuated")
|
|
||||||
}
|
|
||||||
i.evacuated = true
|
|
||||||
for img := range i.images {
|
|
||||||
if err := img.evacuatePixels(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *images) restorePixels() error {
|
func (i *images) restorePixels() error {
|
||||||
i.m.Lock()
|
i.m.Lock()
|
||||||
defer i.m.Unlock()
|
defer i.m.Unlock()
|
||||||
@ -323,43 +308,6 @@ func (i *imageImpl) At(x, y int) color.Color {
|
|||||||
return color.RGBA{r, g, b, a}
|
return color.RGBA{r, g, b, a}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *imageImpl) evacuatePixels() error {
|
|
||||||
imageM.Lock()
|
|
||||||
defer imageM.Unlock()
|
|
||||||
defer func() {
|
|
||||||
i.evacuated = true
|
|
||||||
}()
|
|
||||||
if i.defaultFramebuffer {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if i.disposed {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if i.evacuated {
|
|
||||||
return errors.New("ebiten: image must not be evacuated")
|
|
||||||
}
|
|
||||||
if i.pixels == nil {
|
|
||||||
var err error
|
|
||||||
i.pixels, err = i.framebuffer.Pixels(ui.GLContext())
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if i.framebuffer != nil {
|
|
||||||
if err := i.framebuffer.Dispose(ui.GLContext()); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
i.framebuffer = nil
|
|
||||||
}
|
|
||||||
if i.texture != nil {
|
|
||||||
if err := i.texture.Dispose(ui.GLContext()); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
i.texture = nil
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *imageImpl) restorePixels() error {
|
func (i *imageImpl) restorePixels() error {
|
||||||
imageM.Lock()
|
imageM.Lock()
|
||||||
defer imageM.Unlock()
|
defer imageM.Unlock()
|
||||||
|
@ -96,7 +96,6 @@ func (c *runContext) setRunningSlowly(isRunningSlowly bool) {
|
|||||||
type GraphicsContext interface {
|
type GraphicsContext interface {
|
||||||
SetSize(width, height, scale int) error
|
SetSize(width, height, scale int) error
|
||||||
Update() error
|
Update() error
|
||||||
Pause() error
|
|
||||||
Resume() error
|
Resume() error
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,11 +165,6 @@ func Run(g GraphicsContext, width, height, scale int, title string, fps int) err
|
|||||||
frames = 0
|
frames = 0
|
||||||
}
|
}
|
||||||
e.Done <- struct{}{}
|
e.Done <- struct{}{}
|
||||||
case ui.PauseEvent:
|
|
||||||
if err := g.Pause(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
e.Done <- struct{}{}
|
|
||||||
case ui.ResumeEvent:
|
case ui.ResumeEvent:
|
||||||
if err := g.Resume(); err != nil {
|
if err := g.Resume(); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -37,12 +37,6 @@ func Render(chError <-chan error) error {
|
|||||||
}
|
}
|
||||||
// TODO: Check this is called on the rendering thread
|
// TODO: Check this is called on the rendering thread
|
||||||
select {
|
select {
|
||||||
case <-chPauseStart:
|
|
||||||
if err := doGLWorks(chError, chPauseEnd); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
chPauseEnd2 <- struct{}{}
|
|
||||||
return nil
|
|
||||||
case <-chResumeStart:
|
case <-chResumeStart:
|
||||||
if err := doGLWorks(chError, chResumeEnd); err != nil {
|
if err := doGLWorks(chError, chResumeEnd); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -51,7 +45,7 @@ func Render(chError <-chan error) error {
|
|||||||
case chRender <- struct{}{}:
|
case chRender <- struct{}{}:
|
||||||
return doGLWorks(chError, chRenderEnd)
|
return doGLWorks(chError, chRenderEnd)
|
||||||
case <-time.After(500 * time.Millisecond):
|
case <-time.After(500 * time.Millisecond):
|
||||||
// This function must not be blocked so we need to break after a while.
|
// This function must not be blocked. We need to break for timeout.
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -82,23 +76,16 @@ type userInterface struct {
|
|||||||
height int
|
height int
|
||||||
scale int
|
scale int
|
||||||
sizeChanged bool
|
sizeChanged bool
|
||||||
paused bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// TODO: Rename these channels
|
|
||||||
chRender = make(chan struct{})
|
chRender = make(chan struct{})
|
||||||
chRenderEnd = make(chan struct{})
|
chRenderEnd = make(chan struct{})
|
||||||
chPause = make(chan struct{})
|
|
||||||
chPauseStart = make(chan struct{})
|
|
||||||
chPauseEnd = make(chan struct{})
|
|
||||||
chPauseEnd2 = make(chan struct{})
|
|
||||||
chResume = make(chan struct{})
|
chResume = make(chan struct{})
|
||||||
chResumeStart = make(chan struct{})
|
chResumeStart = make(chan struct{})
|
||||||
chResumeEnd = make(chan struct{})
|
chResumeEnd = make(chan struct{})
|
||||||
currentUI = &userInterface{
|
currentUI = &userInterface{
|
||||||
sizeChanged: true,
|
sizeChanged: true,
|
||||||
paused: false,
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -130,21 +117,12 @@ func (u *userInterface) Update() (interface{}, error) {
|
|||||||
}
|
}
|
||||||
return e, nil
|
return e, nil
|
||||||
}
|
}
|
||||||
if u.paused {
|
|
||||||
select {
|
select {
|
||||||
case <-chResume:
|
|
||||||
u.paused = false
|
|
||||||
chResumeStart <- struct{}{}
|
|
||||||
return ResumeEvent{chResumeEnd}, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
select {
|
|
||||||
case <-chPause:
|
|
||||||
u.paused = true
|
|
||||||
chPauseStart <- struct{}{}
|
|
||||||
return PauseEvent{chPauseEnd}, nil
|
|
||||||
case <-chRender:
|
case <-chRender:
|
||||||
return RenderEvent{chRenderEnd}, nil
|
return RenderEvent{chRenderEnd}, nil
|
||||||
|
case <-chResume:
|
||||||
|
chResumeStart <- struct{}{}
|
||||||
|
return ResumeEvent{chResumeEnd}, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,13 +148,6 @@ func (u *userInterface) actualScreenScale() int {
|
|||||||
return u.scale
|
return u.scale
|
||||||
}
|
}
|
||||||
|
|
||||||
func Pause() error {
|
|
||||||
// Pause must be done in the current GL context.
|
|
||||||
chPause <- struct{}{}
|
|
||||||
<-chPauseEnd2
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func Resume() error {
|
func Resume() error {
|
||||||
chResume <- struct{}{}
|
chResume <- struct{}{}
|
||||||
// Don't have to wait for resumeing done.
|
// Don't have to wait for resumeing done.
|
||||||
|
@ -29,7 +29,6 @@ type EventDispatcher interface {
|
|||||||
SetScreenSize(width, height int)
|
SetScreenSize(width, height int)
|
||||||
SetScreenScale(scale int)
|
SetScreenScale(scale int)
|
||||||
Render() error
|
Render() error
|
||||||
Pause()
|
|
||||||
Resume()
|
Resume()
|
||||||
TouchDown(id int, x, y int)
|
TouchDown(id int, x, y int)
|
||||||
TouchMove(id int, x, y int)
|
TouchMove(id int, x, y int)
|
||||||
@ -70,10 +69,6 @@ func (e *eventDispatcher) Render() error {
|
|||||||
return ui.Render(chError)
|
return ui.Render(chError)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *eventDispatcher) Pause() {
|
|
||||||
ui.Pause()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *eventDispatcher) Resume() {
|
func (e *eventDispatcher) Resume() {
|
||||||
ui.Resume()
|
ui.Resume()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user