more cleanup

This commit is contained in:
2022-07-21 17:39:25 +02:00
parent d5d4521f58
commit 1ab7fd1129
6 changed files with 83 additions and 72 deletions

View File

@@ -28,8 +28,9 @@ class __declspec(uuid("3bc52579-15fd-43bb-9686-6273c238535e")) TrayGUID;
UINT const WMAPP_NOTIFYCALLBACK = WM_APP + 1;
UINT const WMAPP_HIDEFLYOUT = WM_APP + 2;
DrawData* hackyDrawData;
ApplicationData* hackyAppData;
// Globals for use in callbacks
DrawData* gDrawData;
ApplicationData* gAppData;
bool justDocked = false;
bool isHidden = false;
@@ -45,32 +46,11 @@ int main()
startImgui(callbacks, "Audio Thingy", 600, 400);
}
LRESULT CALLBACK trayIconEventHandler(int code, WPARAM wParam, LPARAM lParam)
{
if (code >= 0)
{
CWPSTRUCT* data = (CWPSTRUCT*)lParam;
if (data->message == WMAPP_NOTIFYCALLBACK)
{
switch (data->lParam)
{
case NIN_SELECT:
glfwShowWindow(hackyDrawData->window);
glfwRestoreWindow(hackyDrawData->window);
break;
}
}
}
return CallNextHookEx(NULL, code, wParam, lParam);
}
void init(DrawData& drawData, ApplicationData& appData)
{
// sad :(
hackyDrawData = &drawData;
hackyAppData = &appData;
gDrawData = &drawData;
gAppData = &appData;
// Load text font
ImGuiIO& io = ImGui::GetIO();
@@ -118,7 +98,7 @@ void init(DrawData& drawData, ApplicationData& appData)
// Set window minimize behavior
glfwSetWindowIconifyCallback(drawData.window, [](GLFWwindow* window, int isIconified) {
if (isIconified && hackyAppData->settings.docked)
if (isIconified && gAppData->settings.docked)
{
glfwHideWindow(window);
}
@@ -126,7 +106,7 @@ void init(DrawData& drawData, ApplicationData& appData)
});
glfwSetWindowFocusCallback(drawData.window, [](GLFWwindow* window, int isFocused) {
if (!isFocused && hackyAppData->settings.docked && !justDocked)
if (!isFocused && gAppData->settings.docked && !justDocked)
{
glfwIconifyWindow(window);
}
@@ -136,18 +116,7 @@ void init(DrawData& drawData, ApplicationData& appData)
initSettings(drawData, appData);
// Set up audio device api
HRESULT audioResult;
audioResult = CoInitializeEx(NULL, COINIT_MULTITHREADED);
isError(audioResult, "Failed to initialize COM: ");
audioResult = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&appData.audioData->deviceEnumerator));
isError(audioResult, "Failed to set up audio device enumerator: ");
appData.audioData->audioNotificationListener = new AudioNotificationListener(appData.audioData);
audioResult = appData.audioData->deviceEnumerator->RegisterEndpointNotificationCallback(appData.audioData->audioNotificationListener);
isError(audioResult, "Failed to register audio notification listener: ");
reloadDeviceLists(*appData.audioData);
initAudio(appData);
}
void draw(DrawData& drawData, ApplicationData& appData)
@@ -155,8 +124,8 @@ void draw(DrawData& drawData, ApplicationData& appData)
justDocked = false;
// sad :(
hackyDrawData = &drawData;
hackyAppData = &appData;
gDrawData = &drawData;
gAppData = &appData;
// Actual Drawing
if (isHidden)
@@ -400,3 +369,24 @@ void drawCircle(float radius, ImU32 color)
ImVec2 windowPos = ImGui::GetWindowPos();
drawList->AddCircleFilled(ImVec2(cursorPos.x + windowPos.x, cursorPos.y + windowPos.y + ImGui::GetTextLineHeight() / 2.), radius, color);
}
LRESULT CALLBACK trayIconEventHandler(int code, WPARAM wParam, LPARAM lParam)
{
if (code >= 0)
{
CWPSTRUCT* data = (CWPSTRUCT*)lParam;
if (data->message == WMAPP_NOTIFYCALLBACK)
{
switch (data->lParam)
{
case NIN_SELECT:
glfwShowWindow(gDrawData->window);
glfwRestoreWindow(gDrawData->window);
break;
}
}
}
return CallNextHookEx(NULL, code, wParam, lParam);
}