Browse Source

opengl: fix love's internal quad index buffer failing to populate

Alex Szpakowski 3 years ago
parent
commit
c28731ea80
2 changed files with 6 additions and 4 deletions
  1. 4 2
      src/modules/graphics/Graphics.cpp
  2. 2 2
      src/modules/graphics/metal/Buffer.mm

+ 4 - 2
src/modules/graphics/Graphics.cpp

@@ -248,8 +248,10 @@ void Graphics::createQuadIndexBuffer()
 	Buffer::Settings settings(BUFFERUSAGEFLAG_INDEX, BUFFERDATAUSAGE_STATIC);
 	Buffer::Settings settings(BUFFERUSAGEFLAG_INDEX, BUFFERDATAUSAGE_STATIC);
 	quadIndexBuffer = newBuffer(settings, DATAFORMAT_UINT16, nullptr, size, 0);
 	quadIndexBuffer = newBuffer(settings, DATAFORMAT_UINT16, nullptr, size, 0);
 
 
-	Buffer::Mapper map(*quadIndexBuffer);
-	fillIndices(TRIANGLEINDEX_QUADS, 0, LOVE_UINT16_MAX, (uint16 *) map.data);
+	{
+		Buffer::Mapper map(*quadIndexBuffer);
+		fillIndices(TRIANGLEINDEX_QUADS, 0, LOVE_UINT16_MAX, (uint16 *) map.data);
+	}
 
 
 	quadIndexBuffer->setImmutable(true);
 	quadIndexBuffer->setImmutable(true);
 }
 }

+ 2 - 2
src/modules/graphics/metal/Buffer.mm

@@ -111,7 +111,7 @@ Buffer::~Buffer()
 
 
 void *Buffer::map(MapType /*map*/, size_t offset, size_t size)
 void *Buffer::map(MapType /*map*/, size_t offset, size_t size)
 { @autoreleasepool {
 { @autoreleasepool {
-	if (size == 0)
+	if (size == 0 || isImmutable())
 		return nullptr;
 		return nullptr;
 
 
 	Range r(offset, size);
 	Range r(offset, size);
@@ -160,7 +160,7 @@ void Buffer::unmap(size_t usedoffset, size_t usedsize)
 
 
 void Buffer::fill(size_t offset, size_t size, const void *data)
 void Buffer::fill(size_t offset, size_t size, const void *data)
 { @autoreleasepool {
 { @autoreleasepool {
-	if (size == 0)
+	if (size == 0 || isImmutable())
 		return;
 		return;
 
 
 	size_t buffersize = getSize();
 	size_t buffersize = getSize();