aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/io/compression.cpp19
-rw-r--r--core/io/compression.h2
-rw-r--r--core/io/packet_peer_udp.cpp7
-rw-r--r--core/io/packet_peer_udp.h4
-rw-r--r--core/message_queue.cpp10
-rw-r--r--core/os/input_event.h6
6 files changed, 34 insertions, 14 deletions
diff --git a/core/io/compression.cpp b/core/io/compression.cpp
index e04d1d162..652f60966 100644
--- a/core/io/compression.cpp
+++ b/core/io/compression.cpp
@@ -104,19 +104,21 @@ int Compression::get_max_compressed_buffer_size(int p_src_size, Mode p_mode) {
ERR_FAIL_V(-1);
}
-void Compression::decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p_src, int p_src_size, Mode p_mode) {
+int Compression::decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p_src, int p_src_size, Mode p_mode) {
switch (p_mode) {
case MODE_FASTLZ: {
+ int ret_size=0;
+
if (p_dst_max_size < 16) {
uint8_t dst[16];
- fastlz_decompress(p_src, p_src_size, dst, 16);
+ ret_size = fastlz_decompress(p_src, p_src_size, dst, 16);
copymem(p_dst, dst, p_dst_max_size);
} else {
- fastlz_decompress(p_src, p_src_size, p_dst, p_dst_max_size);
+ ret_size = fastlz_decompress(p_src, p_src_size, p_dst, p_dst_max_size);
}
- return;
+ return ret_size;
} break;
case MODE_DEFLATE: {
@@ -127,7 +129,7 @@ void Compression::decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *
strm.avail_in = 0;
strm.next_in = Z_NULL;
int err = inflateInit(&strm);
- ERR_FAIL_COND(err != Z_OK);
+ ERR_FAIL_COND_V(err != Z_OK, -1);
strm.avail_in = p_src_size;
strm.avail_out = p_dst_max_size;
@@ -135,11 +137,12 @@ void Compression::decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *
strm.next_out = p_dst;
err = inflate(&strm, Z_FINISH);
+ int total = strm.total_out;
inflateEnd(&strm);
- ERR_FAIL_COND(err != Z_STREAM_END);
- return;
+ ERR_FAIL_COND_V(err != Z_STREAM_END, -1);
+ return total;
} break;
}
- ERR_FAIL();
+ ERR_FAIL_V(-1);
}
diff --git a/core/io/compression.h b/core/io/compression.h
index b5f0db9e9..a982a074b 100644
--- a/core/io/compression.h
+++ b/core/io/compression.h
@@ -41,7 +41,7 @@ public:
static int compress(uint8_t *p_dst, const uint8_t *p_src, int p_src_size, Mode p_mode = MODE_FASTLZ);
static int get_max_compressed_buffer_size(int p_src_size, Mode p_mode = MODE_FASTLZ);
- static void decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p_src, int p_src_size, Mode p_mode = MODE_FASTLZ);
+ static int decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p_src, int p_src_size, Mode p_mode = MODE_FASTLZ);
Compression();
};
diff --git a/core/io/packet_peer_udp.cpp b/core/io/packet_peer_udp.cpp
index 0ef6722f9..a1b7e6b5e 100644
--- a/core/io/packet_peer_udp.cpp
+++ b/core/io/packet_peer_udp.cpp
@@ -32,6 +32,11 @@
PacketPeerUDP *(*PacketPeerUDP::_create)() = NULL;
+void PacketPeerUDP::set_blocking_mode(bool p_enable) {
+
+ blocking = p_enable;
+}
+
String PacketPeerUDP::_get_packet_ip() const {
return get_packet_address();
@@ -79,4 +84,6 @@ PacketPeerUDP *PacketPeerUDP::create() {
}
PacketPeerUDP::PacketPeerUDP() {
+
+ blocking = true;
}
diff --git a/core/io/packet_peer_udp.h b/core/io/packet_peer_udp.h
index 5a8edab01..9b2901e4d 100644
--- a/core/io/packet_peer_udp.h
+++ b/core/io/packet_peer_udp.h
@@ -37,6 +37,8 @@ class PacketPeerUDP : public PacketPeer {
OBJ_TYPE(PacketPeerUDP, PacketPeer);
protected:
+ bool blocking;
+
static PacketPeerUDP *(*_create)();
static void _bind_methods();
@@ -45,6 +47,8 @@ protected:
Error _set_send_address(const String &p_address, int p_port);
public:
+ void set_blocking_mode(bool p_enable);
+
virtual Error listen(int p_port, IP_Address p_bind_address = IP_Address("*"), int p_recv_buffer_size = 65536) = 0;
virtual void close() = 0;
virtual Error wait() = 0;
diff --git a/core/message_queue.cpp b/core/message_queue.cpp
index 171f9fbfc..821414be0 100644
--- a/core/message_queue.cpp
+++ b/core/message_queue.cpp
@@ -49,9 +49,10 @@ Error MessageQueue::push_call(ObjectID p_id, const StringName &p_method, const V
type = ObjectDB::get_instance(p_id)->get_type();
print_line("failed method: " + type + ":" + p_method + " target ID: " + itos(p_id));
statistics();
+ ERR_EXPLAIN("Message queue out of memory. Try increasing 'message_queue_size_kb' in project settings");
+ ERR_FAIL_V(ERR_OUT_OF_MEMORY);
}
- ERR_FAIL_COND_V((buffer_end + room_needed) >= buffer_size, ERR_OUT_OF_MEMORY);
Message *msg = memnew_placement(&buffer[buffer_end], Message);
msg->args = p_argcount;
msg->instance_ID = p_id;
@@ -99,10 +100,10 @@ Error MessageQueue::push_set(ObjectID p_id, const StringName &p_prop, const Vari
type = ObjectDB::get_instance(p_id)->get_type();
print_line("failed set: " + type + ":" + p_prop + " target ID: " + itos(p_id));
statistics();
+ ERR_EXPLAIN("Message queue out of memory. Try increasing 'message_queue_size_kb' in project settings");
+ ERR_FAIL_V(ERR_OUT_OF_MEMORY);
}
- ERR_FAIL_COND_V((buffer_end + room_needed) >= buffer_size, ERR_OUT_OF_MEMORY);
-
Message *msg = memnew_placement(&buffer[buffer_end], Message);
msg->args = 1;
msg->instance_ID = p_id;
@@ -132,9 +133,10 @@ Error MessageQueue::push_notification(ObjectID p_id, int p_notification) {
type = ObjectDB::get_instance(p_id)->get_type();
print_line("failed notification: " + itos(p_notification) + " target ID: " + itos(p_id));
statistics();
+ ERR_EXPLAIN("Message queue out of memory. Try increasing 'message_queue_size_kb' in project settings");
+ ERR_FAIL_V(ERR_OUT_OF_MEMORY);
}
- ERR_FAIL_COND_V((buffer_end + room_needed) >= buffer_size, ERR_OUT_OF_MEMORY);
Message *msg = memnew_placement(&buffer[buffer_end], Message);
msg->type = TYPE_NOTIFICATION;
diff --git a/core/os/input_event.h b/core/os/input_event.h
index 5b89d0d69..8d8623f41 100644
--- a/core/os/input_event.h
+++ b/core/os/input_event.h
@@ -203,6 +203,7 @@ struct InputEventMouse {
struct InputEventMouseButton : public InputEventMouse {
+ double factor;
int button_index;
bool pressed; //otherwise released
bool doubleclick; //last even less than doubleclick time
@@ -287,7 +288,10 @@ struct InputEvent {
InputEvent xform_by(const Matrix32 &p_xform) const;
bool operator==(const InputEvent &p_event) const;
operator String() const;
- InputEvent() { zeromem(this, sizeof(InputEvent)); }
+ InputEvent() {
+ zeromem(this, sizeof(InputEvent));
+ mouse_button.factor = 1;
+ }
};
#endif