Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version=1.0.4
version=1.0.4-ip.1
6 changes: 4 additions & 2 deletions webrtc-jni/src/main/cpp/src/api/DataBufferFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,12 @@ namespace jni

JavaLocalRef<jobject> DataBufferFactory::create(JNIEnv * env, const webrtc::DataBuffer * dataBuffer) const
{
jobject directBuffer = env->NewDirectByteBuffer(const_cast<char *>(dataBuffer->data.data<char>()), dataBuffer->data.size());
// Held by a JavaLocalRef so the local reference is deleted once the buffer object
// holds its own reference. Callers on attached native threads never free it otherwise.
JavaLocalRef<jobject> directBuffer(env, env->NewDirectByteBuffer(const_cast<char *>(dataBuffer->data.data<char>()), dataBuffer->data.size()));
const jboolean isBinary = static_cast<jboolean>(dataBuffer->binary);

jobject object = env->NewObject(javaClass, javaCtor, directBuffer, isBinary);
jobject object = env->NewObject(javaClass, javaCtor, directBuffer.get(), isBinary);
ExceptionCheck(env);

return JavaLocalRef<jobject>(env, object);
Expand Down
5 changes: 4 additions & 1 deletion webrtc-jni/src/main/cpp/src/api/RTCDataChannelObserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,12 @@ namespace jni
{
JNIEnv * env = AttachCurrentThread();

// This runs on a native WebRTC thread that stays attached to the JVM, so a local
// reference is never freed by returning to Java. Keep ownership with jBuffer, so the
// reference is deleted when it goes out of scope instead of leaking on every message.
JavaLocalRef<jobject> jBuffer = bufferFactory->create(env, &buffer);

env->CallVoidMethod(observer, javaClass->onMessage, jBuffer.release());
env->CallVoidMethod(observer, javaClass->onMessage, jBuffer.get());

ExceptionCheck(env);
}
Expand Down
Loading