[idd] helper: defer no GPU notification when needed

No GPU notifications are not possible before the notification icon is
created. Since the helper could start before explorer.exe (and often does
on reboot), the notification would fail.

This commit adds logic to refer the notification and we send it immediately
when successfully creating the notification icon.
This commit is contained in:
Quantum
2026-06-03 20:59:10 -04:00
committed by Geoffrey McRae
parent c8f4898815
commit 140de3199b
2 changed files with 15 additions and 3 deletions

View File

@@ -48,8 +48,8 @@ bool CNotifyWindow::registerClass()
return s_atom;
}
CNotifyWindow::CNotifyWindow() : m_iconData({ 0 }), m_menu(CreatePopupMenu()),
closeRequested(false)
CNotifyWindow::CNotifyWindow() : m_iconData({ 0 }), m_iconRegistered(false),
m_noGPUQueued(false), m_menu(CreatePopupMenu()), closeRequested(false)
{
CreateWindowEx(0, MAKEINTATOM(s_atom), NULL,
0, 0, 0, 0, 0, NULL, NULL, hInstance, this);
@@ -164,13 +164,23 @@ void CNotifyWindow::registerIcon()
return;
}
m_iconRegistered = true;
if (!Shell_NotifyIcon(NIM_SETVERSION, &m_iconData))
DEBUG_ERROR_HR(GetLastError(), "Shell_NotifyIcon(NIM_SETVERSION)");
if (m_noGPUQueued)
{
m_noGPUQueued = false;
handleNoGPUNotification();
}
}
void CNotifyWindow::noGPUNotification()
{
PostMessage(m_hwnd, WM_NO_GPU, 0, 0);
if (m_iconRegistered)
PostMessage(m_hwnd, WM_NO_GPU, 0, 0);
else
m_noGPUQueued = true;
}
void CNotifyWindow::handleNoGPUNotification()