From 0135699829752c3ff2e8ceef2a0d62f0fea1fc1a Mon Sep 17 00:00:00 2001 From: Vincent Wei Date: Mon, 17 Feb 2020 19:26:23 +0800 Subject: [PATCH] standalone version of mg_TerminateDesktop --- src/kernel/desktop-sa.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/kernel/desktop-sa.c b/src/kernel/desktop-sa.c index b5b9773c..aa3352e1 100644 --- a/src/kernel/desktop-sa.c +++ b/src/kernel/desktop-sa.c @@ -80,8 +80,7 @@ #endif /******************************* global data *********************************/ -MSGQUEUE __mg_desktop_msg_queue; -PMSGQUEUE __mg_dsk_msg_queue = &__mg_desktop_msg_queue; +PMSGQUEUE __mg_dsk_msg_queue; #include "desktop-comm.c" /********************* Window management support *****************************/ @@ -103,6 +102,12 @@ BOOL mg_InitDesktop (void) int ret; RECT rcScr = GetScreenRect(); + /* Since 4.2.0: allocate message queue for desktop thread */ + if (!(__mg_dsk_msg_queue = mg_AllocMsgQueueForThisThread ()) ) { + _WRN_PRINTF ("failed to allocate message queue\n"); + return FALSE; + } + /* * Init ZOrderInfo here. */ @@ -142,4 +147,21 @@ BOOL mg_InitDesktop (void) return TRUE; } +void mg_TerminateDesktop (void) +{ + if (__mg_dsk_msg_queue) { + mg_FreeMsgQueueForThisThread (); + __mg_dsk_msg_queue = NULL; + } + + __kernel_free_z_order_info (__mg_zorder_info); + __mg_zorder_info = NULL; + DestroyFreeClipRectList (&sg_FreeClipRectList); + DestroyFreeClipRectList (&sg_FreeInvRectList); + + mg_TerminateSystemRes (); + //dongjunjie avoid double free + __mg_dsk_win = 0; +} + #endif /* _MGRM_STANDALONE */