[Windows] Remove redundant DirectSound error codes
[xbmc.git] / xbmc / platform / xbmc.cpp
bloba6de8fbc11c3a991c460269a63c49cfd6c1118aa
1 /*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #include "application/Application.h"
10 #include "platform/MessagePrinter.h"
12 #ifdef TARGET_WINDOWS_DESKTOP
13 #include "platform/win32/IMMNotificationClient.h"
14 #include <mmdeviceapi.h>
15 #include <wrl/client.h>
16 #endif
18 #if defined(TARGET_ANDROID)
19 #include "platform/android/activity/XBMCApp.h"
20 #endif
22 extern "C" int XBMC_Run(bool renderGUI)
24 int status = -1;
26 if (!g_application.Create())
28 CMessagePrinter::DisplayError("ERROR: Unable to create application. Exiting");
29 return status;
32 #if defined(TARGET_ANDROID)
33 CXBMCApp::Get().Initialize();
34 #endif
36 if (renderGUI && !g_application.CreateGUI())
38 CMessagePrinter::DisplayError("ERROR: Unable to create GUI. Exiting");
39 if (g_application.Stop(EXITCODE_QUIT))
40 g_application.Cleanup();
41 return status;
43 if (!g_application.Initialize())
45 CMessagePrinter::DisplayError("ERROR: Unable to Initialize. Exiting");
46 return status;
49 #ifdef TARGET_WINDOWS_DESKTOP
50 Microsoft::WRL::ComPtr<IMMDeviceEnumerator> pEnumerator = nullptr;
51 CMMNotificationClient cMMNC;
52 HRESULT hr = CoCreateInstance(CLSID_MMDeviceEnumerator, nullptr, CLSCTX_ALL, IID_IMMDeviceEnumerator,
53 reinterpret_cast<void**>(pEnumerator.GetAddressOf()));
54 if (SUCCEEDED(hr))
56 pEnumerator->RegisterEndpointNotificationCallback(&cMMNC);
57 pEnumerator = nullptr;
59 #endif
61 status = g_application.Run();
63 #ifdef TARGET_WINDOWS_DESKTOP
64 // the end
65 hr = CoCreateInstance(CLSID_MMDeviceEnumerator, nullptr, CLSCTX_ALL, IID_IMMDeviceEnumerator,
66 reinterpret_cast<void**>(pEnumerator.GetAddressOf()));
67 if (SUCCEEDED(hr))
69 pEnumerator->UnregisterEndpointNotificationCallback(&cMMNC);
70 pEnumerator = nullptr;
72 #endif
74 #if defined(TARGET_ANDROID)
75 CXBMCApp::Get().Deinitialize();
76 #endif
78 return status;