mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-09-24 15:54:12 +00:00
111 lines
2.2 KiB
C++
111 lines
2.2 KiB
C++
|
/** (c) Nullsoft, Inc. C O N F I D E N T I A L
|
||
|
** Filename:
|
||
|
** Project:
|
||
|
** Description:
|
||
|
** Author:
|
||
|
** Created:
|
||
|
**/
|
||
|
#include "Main.h"
|
||
|
#include "wa_dlg.h"
|
||
|
#include "./api.h"
|
||
|
|
||
|
// Destroy handler
|
||
|
int Main_OnDestroy(HWND hwnd)
|
||
|
{
|
||
|
if (NULL != WASABI_API_APP) WASABI_API_APP->app_unregisterGlobalWindow(hwnd);
|
||
|
if (g_main_created)
|
||
|
{
|
||
|
SetPriorityClass(GetCurrentProcess(),NORMAL_PRIORITY_CLASS);
|
||
|
Main_OnEndSession(NULL,TRUE);
|
||
|
PostQuitMessage(0);
|
||
|
}
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
int Main_OnClose(HWND hwnd)
|
||
|
{
|
||
|
if (g_exit_disabled)
|
||
|
{
|
||
|
if (NULL != WASABI_API_APP)
|
||
|
WASABI_API_APP->main_cancelShutdown();
|
||
|
return 0;
|
||
|
}
|
||
|
ReleaseCapture();
|
||
|
|
||
|
if (!SendMessageW(hwnd,WM_WA_IPC,0,IPC_HOOK_OKTOQUIT))
|
||
|
{
|
||
|
if (NULL != WASABI_API_APP)
|
||
|
WASABI_API_APP->main_cancelShutdown();
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
if (playing) StopPlaying(1);
|
||
|
sa_setthread(-1);
|
||
|
vis_stop();
|
||
|
dsp_quit();
|
||
|
|
||
|
if (pTaskbar3 != NULL)
|
||
|
pTaskbar3->Release();
|
||
|
pTaskbar3=0;
|
||
|
|
||
|
if (toolbarIcons)
|
||
|
ImageList_Destroy(toolbarIcons);
|
||
|
toolbarIcons = 0;
|
||
|
|
||
|
DestroyWindow(hwnd);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
void Main_OnEndSession(HWND hwnd, BOOL fEnding)
|
||
|
{
|
||
|
// TODO try to make this match normal shutdown...
|
||
|
if (fEnding)
|
||
|
{
|
||
|
EndFullscreenAppMonitor();
|
||
|
if (playing) StopPlaying(1);
|
||
|
sa_setthread(-1);
|
||
|
vis_stop();
|
||
|
dsp_quit();
|
||
|
|
||
|
if (!hwnd && systray_intray) systray_restore();
|
||
|
|
||
|
hEQWindow=hPLWindow=/*hMBWindow=*/hVideoWindow=0;
|
||
|
hVisWindow=0;
|
||
|
hPLVisWindow=0;
|
||
|
|
||
|
draw_kill();
|
||
|
|
||
|
draw_finalquit();
|
||
|
WADlg_close();
|
||
|
Skin_CleanupZip();
|
||
|
|
||
|
// is possible the prefs window was open but has already been destroyed
|
||
|
// so don't use IsWindow(..) here and instead just look if its non-null
|
||
|
if (prefs_hwnd)
|
||
|
{
|
||
|
prefs_hwnd = 0;
|
||
|
config_write(2);
|
||
|
}
|
||
|
else config_write(1);
|
||
|
|
||
|
stats_write();
|
||
|
PlayList_destroy();
|
||
|
PlayList_randpos(-666);
|
||
|
DestroyMenu(top_menu);
|
||
|
|
||
|
if (hwnd) unload_genplugins();
|
||
|
out_deinit();
|
||
|
in_deinit();
|
||
|
|
||
|
Lang_EndLangSupport();
|
||
|
Lang_CleanupZip();
|
||
|
|
||
|
// if we're working on a delayed saving of language pack change then now
|
||
|
if(config_langpack2[0]){
|
||
|
// if < is the buffer contents then we're setting it back to the base support
|
||
|
if(config_langpack2[0] == '<') config_langpack2[0] = 0;
|
||
|
lstrcpynW(config_langpack,config_langpack2,MAX_PATH);
|
||
|
config_save_langpack_var();
|
||
|
}
|
||
|
}
|
||
|
}
|