Services/APT: Properly clear the apt parameter after a successful ReceiveParameter call.

master
Subv 2017-07-21 13:03:28 +07:00
parent 2dc720c355
commit e403638d9b
1 changed files with 8 additions and 2 deletions

@ -257,7 +257,9 @@ void ReceiveParameter(Service::Interface* self) {
Memory::WriteBlock(buffer, next_parameter->buffer.data(), next_parameter->buffer.size()); Memory::WriteBlock(buffer, next_parameter->buffer.data(), next_parameter->buffer.size());
LOG_WARNING(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size); // Clear the parameter
next_parameter = boost::none;
LOG_DEBUG(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size);
} }
void GlanceParameter(Service::Interface* self) { void GlanceParameter(Service::Interface* self) {
@ -302,7 +304,11 @@ void GlanceParameter(Service::Interface* self) {
Memory::WriteBlock(buffer, next_parameter->buffer.data(), next_parameter->buffer.size()); Memory::WriteBlock(buffer, next_parameter->buffer.data(), next_parameter->buffer.size());
LOG_WARNING(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size); // Note: The NS module always clears the DSPSleep and DSPWakeup signals even in GlanceParameter.
if (next_parameter->signal == static_cast<u32>(SignalType::DspSleep) ||
next_parameter->signal == static_cast<u32>(SignalType::DspWakeup))
next_parameter = boost::none;
LOG_DEBUG(Service_APT, "called app_id=0x%08X, buffer_size=0x%08zX", app_id, buffer_size);
} }
void CancelParameter(Service::Interface* self) { void CancelParameter(Service::Interface* self) {