mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-24 13:52:53 +02:00
Added buffer param to appletCreateTransferMemoryStorage and appletCreateHandleStorageTmem, tmemCreateFromMemory will now be used with this when buffer is not NULL.
This commit is contained in:
parent
2d5000ba57
commit
d821185e3d
@ -309,10 +309,11 @@ Result appletCreateStorage(AppletStorage *s, s64 size);
|
||||
/**
|
||||
* @brief Creates a TransferMemory storage.
|
||||
* @param s Storage object.
|
||||
* @param buffer TransferMemory buffer, will be automatically allocated if NULL.
|
||||
* @param size Size of storage.
|
||||
* @param writable Controls whether writing to the storage is allowed with \ref appletStorageWrite.
|
||||
*/
|
||||
Result appletCreateTransferMemoryStorage(AppletStorage *s, s64 size, bool writable);
|
||||
Result appletCreateTransferMemoryStorage(AppletStorage *s, void* buffer, s64 size, bool writable);
|
||||
|
||||
/**
|
||||
* @brief Creates a HandleStorage. Only available on 2.0.0+.
|
||||
@ -325,9 +326,10 @@ Result appletCreateHandleStorage(AppletStorage *s, s64 inval, Handle handle);
|
||||
/**
|
||||
* @brief Creates a HandleStorage using TransferMemory. Wrapper for \ref appletCreateHandleStorage.
|
||||
* @param s Storage object.
|
||||
* @param buffer TransferMemory buffer, will be automatically allocated if NULL.
|
||||
* @param size Size of storage.
|
||||
*/
|
||||
Result appletCreateHandleStorageTmem(AppletStorage *s, s64 size);
|
||||
Result appletCreateHandleStorageTmem(AppletStorage *s, void* buffer, s64 size);
|
||||
|
||||
/// Closes the storage object. TransferMemory closing is seperate, see \ref appletStorageCloseTmem.
|
||||
/// Other applet functions which push an input storage will automatically call this.
|
||||
|
@ -1737,12 +1737,13 @@ static Result _appletCreateTransferMemoryStorage(Service* srv_out, TransferMemor
|
||||
return rc;
|
||||
}
|
||||
|
||||
Result appletCreateTransferMemoryStorage(AppletStorage *s, s64 size, bool writable) {
|
||||
Result appletCreateTransferMemoryStorage(AppletStorage *s, void* buffer, s64 size, bool writable) {
|
||||
Result rc=0;
|
||||
|
||||
memset(s, 0, sizeof(AppletStorage));
|
||||
|
||||
rc = tmemCreate(&s->tmem, size, Perm_None);
|
||||
if (buffer==NULL) rc = tmemCreate(&s->tmem, size, Perm_None);
|
||||
else rc = tmemCreateFromMemory(&s->tmem, buffer, size, Perm_None);
|
||||
if (R_FAILED(rc)) return rc;
|
||||
|
||||
rc = _appletCreateTransferMemoryStorage(&s->s, &s->tmem, writable);
|
||||
@ -1758,12 +1759,13 @@ Result appletCreateHandleStorage(AppletStorage *s, s64 inval, Handle handle) {
|
||||
return _appletCmdInHandle64(&g_appletILibraryAppletCreator, &s->s, 12, handle, inval);
|
||||
}
|
||||
|
||||
Result appletCreateHandleStorageTmem(AppletStorage *s, s64 size) {
|
||||
Result appletCreateHandleStorageTmem(AppletStorage *s, void* buffer, s64 size) {
|
||||
Result rc=0;
|
||||
|
||||
memset(s, 0, sizeof(AppletStorage));
|
||||
|
||||
rc = tmemCreate(&s->tmem, size, Perm_None);
|
||||
if (buffer==NULL) rc = tmemCreate(&s->tmem, size, Perm_None);
|
||||
else rc = tmemCreateFromMemory(&s->tmem, buffer, size, Perm_None);
|
||||
if (R_FAILED(rc)) return rc;
|
||||
|
||||
rc = appletCreateHandleStorage(s, s->tmem.size, s->tmem.handle);
|
||||
|
Loading…
Reference in New Issue
Block a user