pass _EsApplicationStartupInformation in x11 backend

This commit is contained in:
nakst 2022-01-16 11:57:28 +00:00
parent 5409c01518
commit 48aa9b261d
2 changed files with 14 additions and 3 deletions

View File

@ -502,6 +502,7 @@ uint8_t *ApplicationStartupInformationToBuffer(const _EsApplicationStartupInform
_EsApplicationStartupInformation *ApplicationStartupInformationParse(const void *data, size_t dataBytes) {
EsBuffer buffer = { .in = (const uint8_t *) data, .bytes = dataBytes };
_EsApplicationStartupInformation *startupInformation = (_EsApplicationStartupInformation *) EsBufferRead(&buffer, sizeof(_EsApplicationStartupInformation));
if (!startupInformation) return nullptr;
startupInformation->filePath = (char *) EsHeapAllocate(startupInformation->filePathBytes, false);
EsBufferReadInto(&buffer, (char *) startupInformation->filePath, startupInformation->filePathBytes);
startupInformation->containingFolder = (char *) EsHeapAllocate(startupInformation->containingFolderBytes, false);

View File

@ -929,10 +929,20 @@ void *UIThread(void *) {
XNFocusWindow, window->window, NULL);
windows.Add(window);
_EsApplicationStartupInformation applicationStartupInformation = {};
SharedMemoryRegion *createInstanceData = (SharedMemoryRegion *) EsHeapAllocate(sizeof(SharedMemoryRegion), true);
createInstanceData->type = OBJECT_SHMEM;
createInstanceData->referenceCount = 1;
createInstanceData->pointer = EsHeapAllocate(sizeof(applicationStartupInformation) + 1, true);
createInstanceData->bytes = sizeof(applicationStartupInformation) + 1;
EsMemoryCopy((uint8_t *) createInstanceData->pointer + 1, &applicationStartupInformation, sizeof(applicationStartupInformation));
_EsMessageWithObject m = {};
m.message.type = ES_MSG_INSTANCE_CREATE;
m.message.createInstance.window = HandleOpen(window);
// TODO _EsApplicationStartupInformation.
m.message.createInstance.data = HandleOpen(createInstanceData);
m.message.createInstance.dataBytes = createInstanceData->bytes;
MessagePost(&m);
while (true) {
@ -1079,7 +1089,7 @@ int main() {
SharedMemoryRegion *globalDataRegion = (SharedMemoryRegion *) EsHeapAllocate(sizeof(SharedMemoryRegion), true);
globalDataRegion->type = OBJECT_SHMEM;
globalDataRegion->referenceCount = 1;
globalDataRegion->referenceCount = 2;
globalDataRegion->pointer = &globalData;
globalDataRegion->bytes = sizeof(globalData);
@ -1094,7 +1104,7 @@ int main() {
SharedMemoryRegion *startupData = (SharedMemoryRegion *) EsHeapAllocate(sizeof(SharedMemoryRegion), true);
startupData->type = OBJECT_SHMEM;
startupData->referenceCount = 1;
startupData->referenceCount = 2;
startupData->bytes = sizeof(SystemStartupDataHeader) + sizeof(EsMountPoint) * 2;
startupData->pointer = EsHeapAllocate(startupData->bytes, true);
SystemStartupDataHeader *startupHeader = (SystemStartupDataHeader *) startupData->pointer;