mirror of
https://github.com/love2d/love.git
synced 2026-08-21 21:15:09 +02:00
Trigger a Lua error if love.graphics.draw(canvas) is called while that canvas is the active one.
This only catches a subset of the possible accidental read-while-writing situations that can happen when using Canvases, unfortunately.
This commit is contained in:
@@ -323,9 +323,6 @@ std::string getExecutablePath()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static dispatch_queue_t queue = nil;
|
|
||||||
static dispatch_source_t timer = nil;
|
|
||||||
|
|
||||||
void vibrate()
|
void vibrate()
|
||||||
{
|
{
|
||||||
@autoreleasepool
|
@autoreleasepool
|
||||||
|
|||||||
@@ -300,6 +300,12 @@ void Canvas::unloadVolatile()
|
|||||||
|
|
||||||
void Canvas::drawv(const Matrix4 &t, const Vertex *v)
|
void Canvas::drawv(const Matrix4 &t, const Vertex *v)
|
||||||
{
|
{
|
||||||
|
// FIXME: This doesn't handle cases where the Canvas is used as a texture
|
||||||
|
// in a SpriteBatch, Mesh, or ParticleSystem, or when the Canvas is used in
|
||||||
|
// a shader as a non-default texture.
|
||||||
|
if (Canvas::current == this)
|
||||||
|
throw love::Exception("Cannot draw a Canvas to itself.");
|
||||||
|
|
||||||
OpenGL::TempDebugGroup debuggroup("Canvas draw");
|
OpenGL::TempDebugGroup debuggroup("Canvas draw");
|
||||||
|
|
||||||
OpenGL::TempTransform transform(gl);
|
OpenGL::TempTransform transform(gl);
|
||||||
@@ -327,8 +333,7 @@ void Canvas::drawq(Quad *quad, float x, float y, float angle, float sx, float sy
|
|||||||
{
|
{
|
||||||
Matrix4 t(x, y, angle, sx, sy, ox, oy, kx, ky);
|
Matrix4 t(x, y, angle, sx, sy, ox, oy, kx, ky);
|
||||||
|
|
||||||
const Vertex *v = quad->getVertices();
|
drawv(t, quad->getVertices());
|
||||||
drawv(t, v);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Canvas::setFilter(const Texture::Filter &f)
|
void Canvas::setFilter(const Texture::Filter &f)
|
||||||
|
|||||||
Reference in New Issue
Block a user