Remove MemUtil references due to native crashing

This commit is contained in:
James Seibel
2026-06-06 18:10:59 -05:00
parent b46f10755e
commit 679f871788
3 changed files with 4 additions and 38 deletions
@@ -1,7 +1,5 @@
package com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding; package com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding;
import org.lwjgl.system.MemoryUtil;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.ByteOrder; import java.nio.ByteOrder;
@@ -14,11 +12,10 @@ public class IndexBufferBuilder
//==========// //==========//
//region //region
/** Buffer should be freed by {@link MemoryUtil#memFree} */
public static ByteBuffer createBuffer(int quadCount) public static ByteBuffer createBuffer(int quadCount)
{ {
int indexCount = quadCount * 6; // 2 triangles per quad int indexCount = quadCount * 6; // 2 triangles per quad
ByteBuffer buffer = MemoryUtil.memAlloc(indexCount * Integer.BYTES); ByteBuffer buffer = ByteBuffer.allocateDirect(indexCount * Integer.BYTES);
buffer.order(ByteOrder.nativeOrder()); buffer.order(ByteOrder.nativeOrder());
buildBufferInt(quadCount, buffer); buildBufferInt(quadCount, buffer);
@@ -32,7 +32,6 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.render.AbstractDhRender
import com.seibel.distanthorizons.core.wrapperInterfaces.render.objects.ILodContainerUniformBufferWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.render.objects.ILodContainerUniformBufferWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.render.objects.IVertexBufferWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.render.objects.IVertexBufferWrapper;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.lwjgl.system.MemoryUtil;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.ArrayList; import java.util.ArrayList;
@@ -208,39 +207,8 @@ public class LodBufferContainer implements AutoCloseable
//====================//
// CPU Buffer cleanup //
//====================//
//region
future.whenComplete((LodBufferContainer lodBufferContainer, Throwable throwable) ->
{
// all the buffers must be manually freed to prevent memory leaks
tryFreeByteBufferList(opaqueBuffers);
tryFreeByteBufferList(transparentBuffers);
tryFreeByteBufferList(opaqueIndexBuffers);
tryFreeByteBufferList(transparentIndexBuffers);
});
//endregion
return future; return future;
} }
private static void tryFreeByteBufferList(@Nullable ArrayList<ByteBuffer> list)
{
if (list != null)
{
for (ByteBuffer buffer : list)
{
MemoryUtil.memFree(buffer);
}
}
}
private ArrayList<ByteBuffer> createIndexBuffers(ArrayList<ByteBuffer> vertexBuffers) private ArrayList<ByteBuffer> createIndexBuffers(ArrayList<ByteBuffer> vertexBuffers)
@@ -20,6 +20,7 @@
package com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding; package com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.*; import java.util.*;
import com.seibel.distanthorizons.api.enums.config.EDhApiGrassSideRendering; import com.seibel.distanthorizons.api.enums.config.EDhApiGrassSideRendering;
@@ -33,7 +34,6 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.coreapi.util.ColorUtil; import com.seibel.distanthorizons.coreapi.util.ColorUtil;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import org.lwjgl.system.MemoryUtil;
/** /**
* Used to create the quads before they are converted to render-able buffers. <br><br> * Used to create the quads before they are converted to render-able buffers. <br><br>
@@ -337,7 +337,8 @@ public class LodQuadBuilder implements AutoCloseable
if (buffer == null if (buffer == null
|| buffer.remaining() < BYTES_PER_QUAD) || buffer.remaining() < BYTES_PER_QUAD)
{ {
buffer = MemoryUtil.memAlloc(getMaxBufferByteSize()); buffer = ByteBuffer.allocateDirect(getMaxBufferByteSize());
buffer.order(ByteOrder.nativeOrder());
byteBufferList.add(buffer); byteBufferList.add(buffer);
} }