winamp/Src/Winamp/main_timer.cpp
2024-09-24 14:54:57 +02:00

133 lines
3.4 KiB
C++

#include "main.h"
#include "stats.h"
// Display update, and menu popping up (vs killing)
LRESULT Main_OnTimer(HWND hwnd, UINT id)
{
#ifdef BENSKI_TEST_WM_PRINTCLIENT
if (id == 9999)
{
PrintWindow(hPLWindow);
}
#endif
if (id == 99)
{
// 250 ms after a fs application has settled on
KillTimer(hMainWindow, 99);
g_dropaot_timer_set = 0;
dropAOT();
return 0;
}
if (id == 100)
{
// 250 ms after a fs application has settled off
KillTimer(hMainWindow, 100);
g_restoreaot_timer_set = 0;
restoreAOT();
return 0;
}
if (id == 101)
{
KillTimer(hMainWindow, 101);
// 250ms after wm_displaychange, enforce config_keeponscreen, but not if the display change was because of a
// fullscreen app, like a game
if (!g_fsapp) set_aot(-1);
}
if (id == 200)
{
KillTimer(hMainWindow, 200);
if (!deferring_show)
return 0;
deferring_show = 0;
if (g_showcode == SW_SHOWMINIMIZED && config_taskbar)
{
ShowWindow(hMainWindow, SW_SHOWNORMAL);
}
ShowWindow(hMainWindow, g_showcode);
return 0;
}
if (id == STATS_TIMER)
{
stats.IncrementStat(Stats::TIME_RUNNING);
if (playing) stats.IncrementStat(Stats::TIME_PLAYING);
if (!config_minimized) stats.IncrementStat(Stats::TIME_VISIBLE);
if (!config_minimized && playing) stats.IncrementStat(Stats::TIME_VISIBLE_PLAYING);
//if (config_mb_open && !config_minimized) stats_timemb++;
//if (config_mb_open && !config_minimized && playing) stats_timembplaying++;
}
// removing the playing only check on this so rating menu updates will appear even when stopped
if ((id == UPDATE_DISPLAY_TIMER) || (id == UPDATE_DISPLAY_TIMER + 2) || (id == UPDATE_DISPLAY_TIMER + 4))
{
if (playing)
{
int a = (in_getouttime()) / 1000;
int l = in_getlength();
if (!config_minimized && (config_mw_open || config_pe_open))
{
static int t = -1;
static int la = -123;
static int ll = -15055;
if (paused)
{
if (t == -1) t = 10;
else t--;
}
else t = -1;
if (a != la || l != ll || (paused && t == 10) || id == UPDATE_DISPLAY_TIMER + 4) ui_drawtime(a, 0);
la = a;
ll = l;
}
if (g_brate != last_brate)
draw_bitmixrate(last_brate = g_brate, g_srate);
}
if (g_need_titleupd || (id == UPDATE_DISPLAY_TIMER + 2))
{
if (id == UPDATE_DISPLAY_TIMER + 2)
KillTimer(hMainWindow, id);
g_need_titleupd = 0;
PlayList_getcurrent_tupdate(FileName, FileTitle);
{
if (!do_volbar_active && !do_posbar_active && !do_panbar_active)
draw_songname(FileTitle, &ui_songposition, playing ? in_getlength() : PlayList_getcurrentlength());
}
set_caption(!playing, L"%s - %S", (config_dotasknum?FileTitleNum:FileTitle), app_name);
plEditSelect(PlayList_getPosition() | (1 << 30));
}
if (playing && g_need_infoupd)
{
int r = g_need_infoupd;
g_need_infoupd = 0;
if (r & 8)
{
last_brate = g_brate;
draw_bitmixrate(g_brate, g_srate);
draw_monostereo(g_nch);
}
if (r & 2)
draw_playicon(4);
else if (r & 1)
draw_playicon(1);
else
draw_playicon(8);
}
}
if (id == UPDATE_DISPLAY_TIMER + 1 && !config_minimized && !config_windowshade && config_mw_open)
if (config_autoscrollname&1)
{
ui_doscrolling();
}
if (id == 666)
{
KillTimer(hwnd, 666);
SendMessageW(hwnd, WM_COMMAND, WINAMP_MAINMENU, 0);
}
if (id == UPDATE_DISPLAY_TIMER + 1)
{
if (config_autoscrollname&2)
do_caption_autoscroll();
}
return 1;
}