summaryrefslogtreecommitdiffstats
path: root/thirdparty/enet/callbacks.c
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2016-10-10 19:50:51 +0200
committerRémi Verschelde <rverschelde@gmail.com>2016-10-15 11:50:39 +0200
commitc31ad71f10f68705a456b4257c084d4008c34370 (patch)
tree661ac3c986d69876eda544a8292949e924e819ad /thirdparty/enet/callbacks.c
parent16ba665db6bbd7f15aadc35fda87d69d0b220bf7 (diff)
downloadredot-engine-c31ad71f10f68705a456b4257c084d4008c34370.tar.gz
enet: Split enet thirdparty files and allow unbundling
Building against shared libraries only implemented for Linux X11 so far. TODO: Document Godot's modifications of upstream enet.
Diffstat (limited to 'thirdparty/enet/callbacks.c')
-rw-r--r--thirdparty/enet/callbacks.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/thirdparty/enet/callbacks.c b/thirdparty/enet/callbacks.c
new file mode 100644
index 0000000000..b3990af1fb
--- /dev/null
+++ b/thirdparty/enet/callbacks.c
@@ -0,0 +1,53 @@
+/**
+ @file callbacks.c
+ @brief ENet callback functions
+*/
+#define ENET_BUILDING_LIB 1
+#include "enet/enet.h"
+
+static ENetCallbacks callbacks = { malloc, free, abort };
+
+int
+enet_initialize_with_callbacks (ENetVersion version, const ENetCallbacks * inits)
+{
+ if (version < ENET_VERSION_CREATE (1, 3, 0))
+ return -1;
+
+ if (inits -> malloc != NULL || inits -> free != NULL)
+ {
+ if (inits -> malloc == NULL || inits -> free == NULL)
+ return -1;
+
+ callbacks.malloc = inits -> malloc;
+ callbacks.free = inits -> free;
+ }
+
+ if (inits -> no_memory != NULL)
+ callbacks.no_memory = inits -> no_memory;
+
+ return enet_initialize ();
+}
+
+ENetVersion
+enet_linked_version (void)
+{
+ return ENET_VERSION;
+}
+
+void *
+enet_malloc (size_t size)
+{
+ void * memory = callbacks.malloc (size);
+
+ if (memory == NULL)
+ callbacks.no_memory ();
+
+ return memory;
+}
+
+void
+enet_free (void * memory)
+{
+ callbacks.free (memory);
+}
+