mirror of
https://github.com/minetest/minetestmapper.git
synced 2025-04-19 02:50:32 +02:00
Support zlib-ng
this provides a 60% speed improvement on an older map I have
This commit is contained in:
parent
4ba09ec532
commit
8b1a143cda
@ -57,7 +57,16 @@ endif(NOT LIBGD_LIBRARY OR NOT LIBGD_INCLUDE_DIR)
|
|||||||
|
|
||||||
# Libraries: zlib
|
# Libraries: zlib
|
||||||
|
|
||||||
find_package(ZLIB REQUIRED)
|
find_package(zlib-ng QUIET)
|
||||||
|
if(zlib-ng_FOUND)
|
||||||
|
set(ZLIB_INCLUDE_DIR zlib-ng::zlib)
|
||||||
|
set(ZLIB_LIBRARY zlib-ng::zlib)
|
||||||
|
set(USE_ZLIB_NG TRUE)
|
||||||
|
message(STATUS "Found zlib-ng, using it instead of zlib.")
|
||||||
|
else()
|
||||||
|
find_package(ZLIB REQUIRED)
|
||||||
|
set(USE_ZLIB_NG FALSE)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Libraries: zstd
|
# Libraries: zstd
|
||||||
|
|
||||||
|
@ -1,6 +1,16 @@
|
|||||||
#include <zlib.h>
|
#include <cstdint>
|
||||||
#include <stdint.h>
|
|
||||||
#include "ZlibDecompressor.h"
|
#include "ZlibDecompressor.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
// for convenient usage of both
|
||||||
|
#if USE_ZLIB_NG
|
||||||
|
#include <zlib-ng.h>
|
||||||
|
#define z_stream zng_stream
|
||||||
|
#define Z(x) zng_ ## x
|
||||||
|
#else
|
||||||
|
#include <zlib.h>
|
||||||
|
#define Z(x) x
|
||||||
|
#endif
|
||||||
|
|
||||||
ZlibDecompressor::ZlibDecompressor(const u8 *data, size_t size):
|
ZlibDecompressor::ZlibDecompressor(const u8 *data, size_t size):
|
||||||
m_data(data),
|
m_data(data),
|
||||||
@ -38,7 +48,7 @@ ustring ZlibDecompressor::decompress()
|
|||||||
strm.next_in = Z_NULL;
|
strm.next_in = Z_NULL;
|
||||||
strm.avail_in = 0;
|
strm.avail_in = 0;
|
||||||
|
|
||||||
if (inflateInit(&strm) != Z_OK)
|
if (Z(inflateInit)(&strm) != Z_OK)
|
||||||
throw DecompressError();
|
throw DecompressError();
|
||||||
|
|
||||||
strm.next_in = const_cast<unsigned char *>(data);
|
strm.next_in = const_cast<unsigned char *>(data);
|
||||||
@ -49,7 +59,7 @@ ustring ZlibDecompressor::decompress()
|
|||||||
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
do {
|
do {
|
||||||
ret = inflate(&strm, Z_NO_FLUSH);
|
ret = Z(inflate)(&strm, Z_NO_FLUSH);
|
||||||
if (strm.avail_out == 0) {
|
if (strm.avail_out == 0) {
|
||||||
const auto off = buffer.size();
|
const auto off = buffer.size();
|
||||||
buffer.reserve(off + BUFSIZE);
|
buffer.reserve(off + BUFSIZE);
|
||||||
@ -62,7 +72,7 @@ ustring ZlibDecompressor::decompress()
|
|||||||
|
|
||||||
m_seekPos += strm.next_in - data;
|
m_seekPos += strm.next_in - data;
|
||||||
buffer.resize(buffer.size() - strm.avail_out);
|
buffer.resize(buffer.size() - strm.avail_out);
|
||||||
(void) inflateEnd(&strm);
|
(void) Z(inflateEnd)(&strm);
|
||||||
|
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#cmakedefine01 USE_POSTGRESQL
|
#cmakedefine01 USE_POSTGRESQL
|
||||||
#cmakedefine01 USE_LEVELDB
|
#cmakedefine01 USE_LEVELDB
|
||||||
#cmakedefine01 USE_REDIS
|
#cmakedefine01 USE_REDIS
|
||||||
|
#cmakedefine01 USE_ZLIB_NG
|
||||||
|
|
||||||
#define SHAREDIR "@SHAREDIR@"
|
#define SHAREDIR "@SHAREDIR@"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user