Handle generated LOD updates outside the render thread

This commit is contained in:
s809
2025-12-20 15:22:26 +05:00
parent ff3145336d
commit 2dd675b8da
@@ -15,6 +15,7 @@ import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.util.WorldGenUtil; import com.seibel.distanthorizons.core.util.WorldGenUtil;
import com.seibel.distanthorizons.core.util.objects.RollingAverage; import com.seibel.distanthorizons.core.util.objects.RollingAverage;
import com.seibel.distanthorizons.core.logging.DhLogger; import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.concurrent.*; import java.util.concurrent.*;
@@ -60,6 +61,12 @@ public class RemoteWorldRetrievalQueue extends AbstractFullDataNetworkRequestQue
CompletableFuture<DataSourceRetrievalResult> returnFuture = new CompletableFuture<>(); CompletableFuture<DataSourceRetrievalResult> returnFuture = new CompletableFuture<>();
Executor worldGenExecutor = ThreadPoolUtil.getWorldGenExecutor();
if (worldGenExecutor == null)
{
return CompletableFuture.completedFuture(DataSourceRetrievalResult.CreateFail());
}
CompletableFuture<NetRequestResult> netFuture = super.submitRequest(sectionPos, /* client timestamp */null); CompletableFuture<NetRequestResult> netFuture = super.submitRequest(sectionPos, /* client timestamp */null);
netFuture.handle((NetRequestResult netResult, Throwable throwable) -> netFuture.handle((NetRequestResult netResult, Throwable throwable) ->
{ {
@@ -121,7 +128,7 @@ public class RemoteWorldRetrievalQueue extends AbstractFullDataNetworkRequestQue
} }
}) })
// convert the net result // convert the net result
.handle((DataSourceRetrievalResult retrievalResult, Throwable throwable) -> .handleAsync((DataSourceRetrievalResult retrievalResult, Throwable throwable) ->
{ {
if (throwable != null) if (throwable != null)
{ {
@@ -133,7 +140,7 @@ public class RemoteWorldRetrievalQueue extends AbstractFullDataNetworkRequestQue
} }
return null; return null;
}); }, worldGenExecutor);
return returnFuture; return returnFuture;
} }