0
0
mirror of https://github.com/Ishan09811/pine.git synced 2025-04-24 08:55:10 +00:00

IAudioRendererManager: Fix incorrect `transferMemorySize` (#42)

This commit is contained in:
Ishan09811 2024-12-31 18:24:39 +05:30 committed by GitHub
parent 525839eece
commit 8131163261
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6,6 +6,9 @@
#include <audio_core/audio_render_manager.h>
#include <common/utils.h>
#include <audio.h>
#include <fstream>
#include <string>
#include <sstream>
#include "IAudioRenderer.h"
#include "IAudioDevice.h"
#include "IAudioRendererManager.h"
@ -21,18 +24,35 @@ namespace skyline::service::audio {
auto transferMemoryHandle{request.copyHandles.at(0)};
auto processHandle{request.copyHandles.at(1)};
// Log the transferMemorySize
LOGI("TransferMemorySize: {}", transferMemorySize);
constexpr u64 fallbackMaxAllowedMemorySize = 128 * 1024 * 1024; // 128 MB fallback
if (transferMemorySize > fallbackMaxAllowedMemorySize || transferMemorySize == 0) {
LOGW("Invalid TransferMemorySize: {}. Using fallback size: {} bytes.",
transferMemorySize, fallbackMaxAllowedMemorySize);
transferMemorySize = fallbackMaxAllowedMemorySize; // Use fallback size
}
i32 sessionId{state.audio->audioRendererManager->GetSessionId()};
if (sessionId == -1) {
LOGW("Out of audio renderer sessions!");
return Result{Service::Audio::ResultOutOfSessions};
}
manager.RegisterService(std::make_shared<IAudioRenderer>(state, manager,
*state.audio->audioRendererManager,
params,
transferMemorySize, processHandle, appletResourceUserId, sessionId),
session, response);
try {
auto renderer = std::make_shared<IAudioRenderer>(
state, manager,
*state.audio->audioRendererManager,
params, transferMemorySize, processHandle, appletResourceUserId,
state.audio->audioRendererManager->GetSessionId());
manager.RegisterService(renderer, session, response);
} catch (const std::bad_alloc &e) {
LOGE("Memory allocation failed: {}", e.what());
return Result{Service::Audio::ResultOperationFailed};
}
return {};
}
@ -61,5 +81,4 @@ namespace skyline::service::audio {
manager.RegisterService(std::make_shared<IAudioDevice>(state, manager, appletResourceUserId, revision), session, response);
return {};
}
}