Fix leaking FenceCompletionUserdata in the wire
This was being leaked if the completion status was not a success. Bug: chromium:939396 Change-Id: Ia09bcef935697b354e6e3da3c4a3d308545fec53 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/5840 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
parent
24930b382a
commit
041aca1620
|
@ -68,7 +68,8 @@ namespace dawn_wire { namespace server {
|
|||
void* ptr,
|
||||
uint32_t dataLength,
|
||||
MapUserdata* userdata);
|
||||
void OnFenceCompletedValueUpdated(FenceCompletionUserdata* userdata);
|
||||
void OnFenceCompletedValueUpdated(DawnFenceCompletionStatus status,
|
||||
FenceCompletionUserdata* userdata);
|
||||
|
||||
#include "dawn_wire/server/ServerPrototypes_autogen.inl"
|
||||
|
||||
|
|
|
@ -21,14 +21,17 @@ namespace dawn_wire { namespace server {
|
|||
void Server::ForwardFenceCompletedValue(DawnFenceCompletionStatus status,
|
||||
DawnCallbackUserdata userdata) {
|
||||
auto data = reinterpret_cast<FenceCompletionUserdata*>(static_cast<uintptr_t>(userdata));
|
||||
if (status == DAWN_FENCE_COMPLETION_STATUS_SUCCESS) {
|
||||
data->server->OnFenceCompletedValueUpdated(data);
|
||||
}
|
||||
data->server->OnFenceCompletedValueUpdated(status, data);
|
||||
}
|
||||
|
||||
void Server::OnFenceCompletedValueUpdated(FenceCompletionUserdata* userdata) {
|
||||
void Server::OnFenceCompletedValueUpdated(DawnFenceCompletionStatus status,
|
||||
FenceCompletionUserdata* userdata) {
|
||||
std::unique_ptr<FenceCompletionUserdata> data(userdata);
|
||||
|
||||
if (status != DAWN_FENCE_COMPLETION_STATUS_SUCCESS) {
|
||||
return;
|
||||
}
|
||||
|
||||
ReturnFenceUpdateCompletedValueCmd cmd;
|
||||
cmd.fence = data->fence;
|
||||
cmd.value = data->value;
|
||||
|
|
Loading…
Reference in New Issue