diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-06-15 10:50:42 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-06-15 10:50:42 +0200 |
commit | fe1aa263ca3b5cc77c3c9f8aec4a29f3b107f087 (patch) | |
tree | 9eeca7fb4752feafb992207c830770b4ff46cb65 | |
parent | 81c386430658ea738c0738ff8a66230f1bdba30e (diff) | |
parent | 1b9364ba968480ddbb1d5a51937c215710f7f5e5 (diff) | |
download | redot-engine-fe1aa263ca3b5cc77c3c9f8aec4a29f3b107f087.tar.gz |
Merge pull request #78237 from dsnopek/webrtc-gdextension-create-data-channel
Directly expose `WebRTCPeerConnection::create_data_channel()` to GDExtension
4 files changed, 6 insertions, 18 deletions
diff --git a/misc/extension_api_validation/4.0-stable.expected b/misc/extension_api_validation/4.0-stable.expected index 444560eb53..963c997aa0 100644 --- a/misc/extension_api_validation/4.0-stable.expected +++ b/misc/extension_api_validation/4.0-stable.expected @@ -6,6 +6,10 @@ should instead be used to justify these changes and describe how users should wo ======================================================================================================================== +GH-78237 +-------- +Validate extension JSON: Error: Field 'classes/WebRTCPeerConnectionExtension/methods/_create_data_channel/return_value': type changed value in new API, from "Object" to "WebRTCDataChannel". + GH-77757 -------- Validate extension JSON: Error: Field 'classes/Viewport/methods/gui_get_focus_owner': is_const changed value in new API, from false to true. diff --git a/modules/webrtc/doc_classes/WebRTCPeerConnectionExtension.xml b/modules/webrtc/doc_classes/WebRTCPeerConnectionExtension.xml index 535a20d67e..dbe6033c4d 100644 --- a/modules/webrtc/doc_classes/WebRTCPeerConnectionExtension.xml +++ b/modules/webrtc/doc_classes/WebRTCPeerConnectionExtension.xml @@ -21,7 +21,7 @@ </description> </method> <method name="_create_data_channel" qualifiers="virtual"> - <return type="Object" /> + <return type="WebRTCDataChannel" /> <param index="0" name="p_label" type="String" /> <param index="1" name="p_config" type="Dictionary" /> <description> diff --git a/modules/webrtc/webrtc_peer_connection_extension.cpp b/modules/webrtc/webrtc_peer_connection_extension.cpp index 15e6bac3b0..248b0cf610 100644 --- a/modules/webrtc/webrtc_peer_connection_extension.cpp +++ b/modules/webrtc/webrtc_peer_connection_extension.cpp @@ -43,14 +43,3 @@ void WebRTCPeerConnectionExtension::_bind_methods() { GDVIRTUAL_BIND(_poll); GDVIRTUAL_BIND(_close); } - -Ref<WebRTCDataChannel> WebRTCPeerConnectionExtension::create_data_channel(String p_label, Dictionary p_options) { - Object *ret = nullptr; - if (GDVIRTUAL_CALL(_create_data_channel, p_label, p_options, ret)) { - WebRTCDataChannel *ch = Object::cast_to<WebRTCDataChannel>(ret); - ERR_FAIL_COND_V_MSG(ret && !ch, nullptr, "Returned object must be an instance of WebRTCDataChannel."); - return ch; - } - WARN_PRINT_ONCE("WebRTCPeerConnectionExtension::_create_data_channel is unimplemented!"); - return nullptr; -} diff --git a/modules/webrtc/webrtc_peer_connection_extension.h b/modules/webrtc/webrtc_peer_connection_extension.h index a2a5c773f0..f3339f1eb4 100644 --- a/modules/webrtc/webrtc_peer_connection_extension.h +++ b/modules/webrtc/webrtc_peer_connection_extension.h @@ -45,17 +45,12 @@ protected: static void _bind_methods(); public: - // FIXME Can't be directly exposed due to issues in exchanging Ref(s) between godot and extensions. - // See godot-cpp GH-652 . - virtual Ref<WebRTCDataChannel> create_data_channel(String p_label, Dictionary p_options = Dictionary()) override; - GDVIRTUAL2R(Object *, _create_data_channel, String, Dictionary); - // EXBIND2R(Ref<WebRTCDataChannel>, create_data_channel, String, Dictionary); - /** GDExtension **/ EXBIND0RC(ConnectionState, get_connection_state); EXBIND0RC(GatheringState, get_gathering_state); EXBIND0RC(SignalingState, get_signaling_state); EXBIND1R(Error, initialize, Dictionary); + EXBIND2R(Ref<WebRTCDataChannel>, create_data_channel, String, Dictionary); EXBIND0R(Error, create_offer); EXBIND2R(Error, set_remote_description, String, String); EXBIND2R(Error, set_local_description, String, String); |