MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / PiuScreenQuit

Function PiuScreenQuit

modules/piu/PC/Screen/win/piuScreen.cpp:389–438  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

387}
388
389void PiuScreenQuit(PiuScreen* self)
390{
391 MSG msg;
392 txScreen* screen = (*self)->screen;
393 if (screen && screen->quit)
394 (*screen->quit)(screen);
395 while (PeekMessage(&msg, (*self)->control, WM_MESSAGE_TO_APPLICATION, WM_MESSAGE_TO_HOST, PM_REMOVE)) {
396 free((void*)msg.lParam);
397 }
398 KillTimer((*self)->control, 0);
399 if ((*self)->screen->archive) {
400 UnmapViewOfFile((*self)->screen->archive);
401 (*self)->screen->archive = NULL;
402 }
403 if ((*self)->ffiLibrary) {
404 wchar_t path[MAX_PATH];
405 HANDLE file;
406 GetModuleFileNameW((*self)->ffiLibrary, path, 1024);
407 FreeLibrary((*self)->ffiLibrary);
408 file = CreateFileW(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
409 while (file == INVALID_HANDLE_VALUE) {
410 Sleep(1);
411 file = CreateFileW(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
412 }
413 CloseHandle(file);
414 (*self)->ffiLibrary = NULL;
415 }
416 if ((*self)->archiveMapping) {
417 CloseHandle((*self)->archiveMapping);
418 (*self)->archiveMapping = INVALID_HANDLE_VALUE;
419 }
420 if ((*self)->archiveFile) {
421 CloseHandle((*self)->archiveFile);
422 (*self)->archiveFile = INVALID_HANDLE_VALUE;
423 }
424 if ((*self)->library) {
425 wchar_t path[MAX_PATH];
426 HANDLE file;
427 GetModuleFileNameW((*self)->library, path, 1024);
428 FreeLibrary((*self)->library);
429 file = CreateFileW(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
430 while (file == INVALID_HANDLE_VALUE) {
431 Sleep(1);
432 file = CreateFileW(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
433 }
434 CloseHandle(file);
435 (*self)->library = NULL;
436 }
437 InvalidateRect((*self)->control, NULL, FALSE);
438}
439
440void PiuScreenUnbind(void* it, PiuApplication* application, PiuView* view)
441{

Callers 3

PiuScreenControlProcFunction · 0.70
PiuScreenUnbindFunction · 0.70
PiuScreen_quitFunction · 0.70

Calls 1

SleepClass · 0.85

Tested by

no test coverage detected