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.
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>
18 #if defined(TARGET_ANDROID)
19 #include "platform/android/activity/XBMCApp.h"
22 extern "C" int XBMC_Run(bool renderGUI
)
26 if (!g_application
.Create())
28 CMessagePrinter::DisplayError("ERROR: Unable to create application. Exiting");
32 #if defined(TARGET_ANDROID)
33 CXBMCApp::Get().Initialize();
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();
43 if (!g_application
.Initialize())
45 CMessagePrinter::DisplayError("ERROR: Unable to Initialize. Exiting");
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()));
56 pEnumerator
->RegisterEndpointNotificationCallback(&cMMNC
);
57 pEnumerator
= nullptr;
61 status
= g_application
.Run();
63 #ifdef TARGET_WINDOWS_DESKTOP
65 hr
= CoCreateInstance(CLSID_MMDeviceEnumerator
, nullptr, CLSCTX_ALL
, IID_IMMDeviceEnumerator
,
66 reinterpret_cast<void**>(pEnumerator
.GetAddressOf()));
69 pEnumerator
->UnregisterEndpointNotificationCallback(&cMMNC
);
70 pEnumerator
= nullptr;
74 #if defined(TARGET_ANDROID)
75 CXBMCApp::Get().Deinitialize();