Skip to content

Commit 42151b4

Browse files
Bl4d3sCalcProgrammer1
authored andcommitted
Added fading out on program close (based on changes by Bl4d3s, pull
request #91, modified by Adam Honse (CalcProgrammer1) to improve fade-out and clean up coding style)
1 parent a023629 commit 42151b4

File tree

3 files changed

+45
-15
lines changed

3 files changed

+45
-15
lines changed

KeyboardVisualizerCommon/Visualizer.cpp

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,7 @@ void Visualizer::Initialize()
509509

510510
settings_changed = false;
511511
update_ui = false;
512+
shutdown_flag = false;
512513

513514
hanning(win_hanning, 256);
514515
hamming(win_hamming, 256);
@@ -959,6 +960,9 @@ void Visualizer::Update()
959960

960961
void Visualizer::StartThread()
961962
{
963+
//Set application running flag to TRUE before starting threads
964+
running = true;
965+
962966
#ifdef WIN32
963967
_beginthread(thread, 0, this);
964968
_beginthread(netconthread, 0, this);
@@ -987,6 +991,19 @@ void Visualizer::StartThread()
987991
#endif
988992
}
989993

994+
void Visualizer::Shutdown()
995+
{
996+
//Initialize a fade-out by setting shutdown flag to TRUE and resetting timer
997+
shutdown_flag = TRUE;
998+
background_timer = 0;
999+
1000+
//Wait for fade-out to complete before returning
1001+
while (running == true)
1002+
{
1003+
Sleep(50);
1004+
}
1005+
}
1006+
9901007
void DrawSolidColor(int bright, COLORREF color, vis_pixels *pixels)
9911008
{
9921009
bright = (int)(bright * (255.0f / 100.0f));
@@ -1401,7 +1418,7 @@ void Visualizer::NetUpdateThread()
14011418

14021419
void Visualizer::VisThread()
14031420
{
1404-
while (1)
1421+
while (running == true)
14051422
{
14061423
if (!(netmode == NET_MODE_CLIENT && port->connected))
14071424
{
@@ -1420,10 +1437,23 @@ void Visualizer::VisThread()
14201437

14211438
float brightness = fft_fltr[5];
14221439

1423-
if (background_timeout > 0)
1440+
//If music isn't playing, fade in the single color LEDs after 2 seconds
1441+
background_timer++;
1442+
1443+
if (shutdown_flag == true)
1444+
{
1445+
if (background_timer >= background_timeout)
1446+
{
1447+
brightness = 0.0f;
1448+
running = false;
1449+
}
1450+
else
1451+
{
1452+
brightness = ((background_timeout - background_timer) / (1.0f * background_timeout));
1453+
}
1454+
}
1455+
else if (background_timeout > 0)
14241456
{
1425-
//If music isn't playing, fade in the single color LEDs after 2 seconds
1426-
background_timer++;
14271457
for (int i = 0; i < 128; i++)
14281458
{
14291459
if (fft_fltr[2 * i] >= 0.0001f)

KeyboardVisualizerCommon/Visualizer.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ class Visualizer
119119
//Draw Pattern
120120
void DrawPattern(VISUALIZER_PATTERN pattern, int bright, vis_pixels *pixels);
121121

122+
//Shut Down
123+
void Shutdown();
124+
122125
//Add LED strip
123126
void AddLEDStrip(char* ledstring);
124127
void AddLEDStripXmas(char * ledstring);
@@ -224,6 +227,12 @@ class Visualizer
224227
//Settings Changed Flag
225228
bool settings_changed;
226229

230+
//Application Running Flag
231+
bool running;
232+
233+
//Shutting Down Flag
234+
bool shutdown_flag;
235+
227236
//Audio Sample Buffer
228237
unsigned char buffer[256];
229238

KeyboardVisualizerVC/KeyboardVisDlg.cpp

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ IMPLEMENT_DYNAMIC(KeyboardVisDlg, CDialogEx)
2323
Visualizer* vis;
2424
boolean startminimized;
2525
boolean firstrun;
26+
NOTIFYICONDATA Tray;
2627

2728
KeyboardVisDlg::KeyboardVisDlg(CWnd* pParent)
2829
: CDialogEx(IDD_KEYBOARD_VISUALIZER_DLG, pParent)
@@ -46,7 +47,6 @@ void KeyboardVisDlg::DoDataExchange(CDataExchange* pDX)
4647

4748
BOOL KeyboardVisDlg::OnInitDialog()
4849
{
49-
NOTIFYICONDATA Tray;
5050
Tray.cbSize = sizeof(Tray);
5151
Tray.hIcon = (HICON)::LoadImage(GetModuleHandle(0), MAKEINTRESOURCE(IDI_ICON), IMAGE_ICON, 16, 16, LR_SHARED);
5252
Tray.hWnd = GetSafeHwnd();
@@ -135,16 +135,7 @@ void KeyboardVisDlg::StartMinimized(boolean startmin)
135135

136136
void KeyboardVisDlg::OnDestroy()
137137
{
138-
NOTIFYICONDATA Tray;
139-
140-
Tray.cbSize = sizeof(Tray);
141-
Tray.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ICON));
142-
Tray.hWnd = GetSafeHwnd();
143-
strcpy(Tray.szTip, "Keyboard Visualizer");
144-
Tray.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
145-
Tray.uID = ID_SYSTEMTRAY;
146-
Tray.uCallbackMessage = WM_TRAYICON_EVENT;
147-
138+
vis->Shutdown();
148139
Shell_NotifyIcon(NIM_DELETE, &Tray);
149140
}
150141

0 commit comments

Comments
 (0)