Added buffer param to appletCreateTransferMemoryStorage and appletCreateHandleStorageTmem, tmemCreateFromMemory will now be used with this when buffer is not NULL.

This commit is contained in:
yellows8 2018-12-20 12:59:59 -05:00
parent 2d5000ba57
commit d821185e3d
2 changed files with 10 additions and 6 deletions

View File

@ -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.

View File

@ -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);