Browse Source

[nvnflinger] Partially revert #152

pull/3226/head
Maufeat 1 month ago
parent
commit
90ac0d28da
  1. 22
      src/core/hle/service/nvnflinger/buffer_queue_producer.cpp

22
src/core/hle/service/nvnflinger/buffer_queue_producer.cpp

@ -724,26 +724,22 @@ Status BufferQueueProducer::Connect(const std::shared_ptr<IProducerListener>& li
return status;
}
// https://android.googlesource.com/platform/frameworks/native/%2B/master/libs/gui/BufferQueueProducer.cpp#1457
Status BufferQueueProducer::Disconnect(NativeWindowApi api) {
LOG_DEBUG(Service_Nvnflinger, "disconnect api = {}", api);
LOG_DEBUG(Service_Nvnflinger, "api = {}", api);
std::shared_ptr<IConsumerListener> listener;
Status status = Status::NoError;
std::shared_ptr<IConsumerListener> listener;
{
std::scoped_lock lock{core->mutex};
core->WaitWhileAllocatingLocked();
if (core->is_abandoned) {
// Disconnecting after the surface has been abandoned is a no-op.
return Status::NoError;
}
if (core->connected_api == NativeWindowApi::NoConnectedApi) {
LOG_DEBUG(Service_Nvnflinger, "disconnect: not connected (req = {})", api);
return Status::NoInit;
}
switch (api) {
case NativeWindowApi::Egl:
case NativeWindowApi::Cpu:
@ -758,20 +754,20 @@ Status BufferQueueProducer::Disconnect(NativeWindowApi api) {
buffer_wait_event->Signal();
listener = core->consumer_listener;
} else {
LOG_ERROR(Service_Nvnflinger,
"disconnect: still connected to another api (cur = {} req = {})",
LOG_ERROR(Service_Nvnflinger, "still connected to another api (cur = {} req = {})",
core->connected_api, api);
status = Status::BadValue;
}
break;
default:
LOG_ERROR(Service_Nvnflinger, "disconnect: unknown api = {}", api);
LOG_ERROR(Service_Nvnflinger, "unknown api = {}", api);
status = Status::BadValue;
break;
}
}
if (listener) {
// Call back without lock held
if (listener != nullptr) {
listener->OnBuffersReleased();
}
@ -930,7 +926,7 @@ void BufferQueueProducer::Transact(u32 code, std::span<const u8> parcel_data,
break;
}
case TransactionId::GetBufferHistory:
LOG_WARNING(Service_Nvnflinger, "(STUBBED) called, transaction=GetBufferHistory");
LOG_DEBUG(Service_Nvnflinger, "(STUBBED) called, transaction=GetBufferHistory");
break;
default:
ASSERT_MSG(false, "Unimplemented TransactionId {}", code);

Loading…
Cancel
Save