Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix leak of gst promise with custom change func #175

Merged
merged 3 commits into from
Apr 15, 2020
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 src/org/freedesktop/gstreamer/Promise.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public Promise(final PROMISE_CHANGE listener) {
public void callback(Promise promise, Pointer userData) {
listener.onChange(promise);
}
}), false, false));
}, null, null)));
}

/**
Expand Down
4 changes: 2 additions & 2 deletions src/org/freedesktop/gstreamer/lowlevel/GstPromiseAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ protected List<String> getFieldOrder() {
@CallerOwnsReturn Promise gst_promise_new();
@CallerOwnsReturn Pointer ptr_gst_promise_new();

@CallerOwnsReturn Promise gst_promise_new_with_change_func(GstCallback callback);
@CallerOwnsReturn Pointer ptr_gst_promise_new_with_change_func(GstCallback callback);
@CallerOwnsReturn Promise gst_promise_new_with_change_func(GstCallback callback, Pointer userData, Pointer destroyNotify);
@CallerOwnsReturn Pointer ptr_gst_promise_new_with_change_func(GstCallback callback, Pointer userData, Pointer destroyNotify);

PromiseResult gst_promise_wait(Promise promise);

Expand Down
24 changes: 24 additions & 0 deletions test/org/freedesktop/gstreamer/PromiseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,28 @@ public void testReplyData() {
Structure result = promise.getReply();
assertTrue("result of promise does not match reply", result.isEqual(data));
}

@Test
public void testDispose() {
if (!Gst.testVersion(1, 14)) {
return;
}
Promise promise = new Promise();
promise.interrupt();
promise.dispose();
}

@Test
public void testDisposeWithChangeFunc() {
if (!Gst.testVersion(1, 14)) {
return;
}
Promise promise = new Promise(new Promise.PROMISE_CHANGE() {
@Override
public void onChange(Promise promise) {
}
});
promise.interrupt();
promise.dispose();
}
}