diff options
| author | Liam <byteslice@airmail.cc> | 2024-01-17 22:03:40 -0500 |
|---|---|---|
| committer | Liam <byteslice@airmail.cc> | 2024-01-17 22:03:40 -0500 |
| commit | c6dc206cd649796ff9fe27f4018ee8a0ec2c652b (patch) | |
| tree | ef5c985bcc765c02da9e443140de55228ed4134d /src/core/hle/service/vi/vi.cpp | |
| parent | 5f9a3c23dbb383dcba611848cbbb8f6b56386142 (diff) | |
vi: check layer state before opening or closing
Diffstat (limited to 'src/core/hle/service/vi/vi.cpp')
| -rw-r--r-- | src/core/hle/service/vi/vi.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp index 39d5be90d0..bfcc27ddc3 100644 --- a/src/core/hle/service/vi/vi.cpp +++ b/src/core/hle/service/vi/vi.cpp @@ -719,7 +719,12 @@ private: return; } - nvnflinger.OpenLayer(layer_id); + if (!nvnflinger.OpenLayer(layer_id)) { + LOG_WARNING(Service_VI, "Tried to open layer which was already open"); + IPC::ResponseBuilder rb{ctx, 2}; + rb.Push(ResultOperationFailed); + return; + } android::OutputParcel parcel; parcel.WriteInterface(NativeWindow{*buffer_queue_id}); @@ -737,7 +742,12 @@ private: LOG_DEBUG(Service_VI, "called. layer_id=0x{:016X}", layer_id); - nvnflinger.CloseLayer(layer_id); + if (!nvnflinger.CloseLayer(layer_id)) { + LOG_WARNING(Service_VI, "Tried to close layer which was not open"); + IPC::ResponseBuilder rb{ctx, 2}; + rb.Push(ResultOperationFailed); + return; + } IPC::ResponseBuilder rb{ctx, 2}; rb.Push(ResultSuccess); |
