Ensure the slideshow is stopped on plugin detach
authorAndre Heinecke <aheinecke@intevation.de>
Mon, 11 Jul 2016 16:09:42 +0000 (18:09 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Mon, 11 Jul 2016 16:09:42 +0000 (18:09 +0200)
* src/g4wihelp.c (DllMain): Stop slideshow on detach.
* src/inst-final.nsi (SEC_final): Do not stop slideshow.

--
If the g4wihelp is detached but the timer / windowmessages are
not stopped our timer would trigger an access violation.
This fixes crashes during installation if the g4wihelp is detached
before the slide_stop was called from SEC_final.

src/g4wihelp.c
src/inst-final.nsi

index dd2bc83..3fc742e 100644 (file)
@@ -40,6 +40,8 @@ static HWND g_hwndParent;     /* Handle of parent window or NULL. */
 static HBITMAP g_hbm;         /* Handle of the splash image. */
 static int sleepint;          /* Milliseconds to show the spals image. */
 
+void
+slide_stop(HWND hwndParent, int string_size, TCHAR *variables, stack_t **stacktop);
 
 /* Standard entry point for DLLs. */
 int WINAPI
@@ -47,6 +49,8 @@ DllMain (HANDLE hinst, DWORD reason, LPVOID reserved)
 {
    if (reason == DLL_PROCESS_ATTACH)
      g_hInstance = hinst;
+   else if (reason == DLL_PROCESS_DETACH)
+     slide_stop(NULL, 0, NULL, NULL);
    return TRUE;
 }
 
index 191bc95..5758cfc 100644 (file)
@@ -23,8 +23,4 @@ Section "-final" SEC_final
 
   # Set outpath back so that the Finish page gets what it expects.
   SetOutPath "$INSTDIR"
-
-  # Stop the slideshow
-  g4wihelp::slide_stop
-
 SectionEnd