Merge pull request #30851 from TheDevelo/webrtc-buffer
Allow setting buffer size of WebRTCDataChannel
This commit is contained in:
commit
22df2b79b6
4 changed files with 14 additions and 1 deletions
|
@ -29,6 +29,7 @@
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
#include "register_types.h"
|
#include "register_types.h"
|
||||||
|
#include "core/project_settings.h"
|
||||||
#include "webrtc_data_channel.h"
|
#include "webrtc_data_channel.h"
|
||||||
#include "webrtc_peer_connection.h"
|
#include "webrtc_peer_connection.h"
|
||||||
|
|
||||||
|
@ -43,6 +44,12 @@
|
||||||
#include "webrtc_multiplayer.h"
|
#include "webrtc_multiplayer.h"
|
||||||
|
|
||||||
void register_webrtc_types() {
|
void register_webrtc_types() {
|
||||||
|
#define _SET_HINT(NAME, _VAL_, _MAX_) \
|
||||||
|
GLOBAL_DEF(NAME, _VAL_); \
|
||||||
|
ProjectSettings::get_singleton()->set_custom_property_info(NAME, PropertyInfo(Variant::INT, NAME, PROPERTY_HINT_RANGE, "2," #_MAX_ ",1,or_greater"));
|
||||||
|
|
||||||
|
_SET_HINT(WRTC_IN_BUF, 64, 4096);
|
||||||
|
|
||||||
#ifdef JAVASCRIPT_ENABLED
|
#ifdef JAVASCRIPT_ENABLED
|
||||||
WebRTCPeerConnectionJS::make_default();
|
WebRTCPeerConnectionJS::make_default();
|
||||||
#elif defined(WEBRTC_GDNATIVE_ENABLED)
|
#elif defined(WEBRTC_GDNATIVE_ENABLED)
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
#include "webrtc_data_channel.h"
|
#include "webrtc_data_channel.h"
|
||||||
|
#include "core/project_settings.h"
|
||||||
|
|
||||||
void WebRTCDataChannel::_bind_methods() {
|
void WebRTCDataChannel::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("poll"), &WebRTCDataChannel::poll);
|
ClassDB::bind_method(D_METHOD("poll"), &WebRTCDataChannel::poll);
|
||||||
|
@ -58,6 +59,7 @@ void WebRTCDataChannel::_bind_methods() {
|
||||||
}
|
}
|
||||||
|
|
||||||
WebRTCDataChannel::WebRTCDataChannel() {
|
WebRTCDataChannel::WebRTCDataChannel() {
|
||||||
|
_in_buffer_shift = nearest_shift((int)GLOBAL_GET(WRTC_IN_BUF) - 1) + 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
WebRTCDataChannel::~WebRTCDataChannel() {
|
WebRTCDataChannel::~WebRTCDataChannel() {
|
||||||
|
|
|
@ -33,6 +33,8 @@
|
||||||
|
|
||||||
#include "core/io/packet_peer.h"
|
#include "core/io/packet_peer.h"
|
||||||
|
|
||||||
|
#define WRTC_IN_BUF "network/limits/webrtc/max_channel_in_buffer_kb"
|
||||||
|
|
||||||
class WebRTCDataChannel : public PacketPeer {
|
class WebRTCDataChannel : public PacketPeer {
|
||||||
GDCLASS(WebRTCDataChannel, PacketPeer);
|
GDCLASS(WebRTCDataChannel, PacketPeer);
|
||||||
|
|
||||||
|
@ -50,6 +52,8 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
unsigned int _in_buffer_shift;
|
||||||
|
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -56,7 +56,7 @@ EMSCRIPTEN_KEEPALIVE void _emrtc_on_ch_message(void *obj, uint8_t *p_data, uint3
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebRTCDataChannelJS::_on_open() {
|
void WebRTCDataChannelJS::_on_open() {
|
||||||
in_buffer.resize(16);
|
in_buffer.resize(_in_buffer_shift);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebRTCDataChannelJS::_on_close() {
|
void WebRTCDataChannelJS::_on_close() {
|
||||||
|
|
Loading…
Reference in a new issue