diff --git a/graphicscontext.go b/graphicscontext.go index ca694aa9c..c9a503bb1 100644 --- a/graphicscontext.go +++ b/graphicscontext.go @@ -84,6 +84,19 @@ func (c *graphicsContext) Update() error { if err := c.defaultRenderTarget.DrawImage(c.screen, options); err != nil { return err } + if err := c.flush(); err != nil { + return err + } + return nil +} + +func (c *graphicsContext) flush() error { + // TODO: imageM is necessary to call graphics functions. Move this to graphics package. + imageM.Lock() + defer imageM.Unlock() + if err := graphics.FlushCommands(ui.GLContext()); err != nil { + return err + } // Call glFlush to prevent black flicking (especially on Android (#226)). ui.GLContext().Flush() return nil diff --git a/image.go b/image.go index de1dddf02..fe73dc5c6 100644 --- a/image.go +++ b/image.go @@ -261,7 +261,7 @@ func (i *imageImpl) DrawImage(image *Image, options *DrawImageOptions) error { geom := &options.GeoM colorm := &options.ColorM mode := opengl.CompositeMode(options.CompositeMode) - if err := i.framebuffer.DrawTexture(ui.GLContext(), image.impl.texture, vertices[:16*n], geom, colorm, mode); err != nil { + if err := i.framebuffer.DrawTexture(image.impl.texture, vertices[:16*n], geom, colorm, mode); err != nil { return err } return nil diff --git a/internal/graphics/framebuffer.go b/internal/graphics/framebuffer.go index 469a45f44..08b3eb6b3 100644 --- a/internal/graphics/framebuffer.go +++ b/internal/graphics/framebuffer.go @@ -105,7 +105,7 @@ func (f *Framebuffer) Fill(clr color.Color) error { return nil } -func (f *Framebuffer) DrawTexture(context *opengl.Context, t *Texture, vertices []int16, geo, clr Matrix, mode opengl.CompositeMode) error { +func (f *Framebuffer) DrawTexture(t *Texture, vertices []int16, geo, clr Matrix, mode opengl.CompositeMode) error { c := &drawImageCommand{ dst: f, src: t, @@ -115,12 +115,6 @@ func (f *Framebuffer) DrawTexture(context *opengl.Context, t *Texture, vertices mode: mode, } theCommandQueue.Enqueue(c) - // TODO: Can we move this to graphicscontext.go (again)? - if f.native == opengl.ZeroFramebuffer { - if err := FlushCommands(context); err != nil { - return err - } - } return nil }