summaryrefslogtreecommitdiffstats
path: root/xbmc/addons/kodi-dev-kit/include/kodi/gui/renderHelper.h
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2020-10-19 00:52:24 +0200
committermanuel <manuel@mausz.at>2020-10-19 00:52:24 +0200
commitbe933ef2241d79558f91796cc5b3a161f72ebf9c (patch)
treefe3ab2f130e20c99001f2d7a81d610c78c96a3f4 /xbmc/addons/kodi-dev-kit/include/kodi/gui/renderHelper.h
parent5f8335c1e49ce108ef3481863833c98efa00411b (diff)
downloadkodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.tar.gz
kodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.tar.bz2
kodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.zip
sync with upstream
Diffstat (limited to 'xbmc/addons/kodi-dev-kit/include/kodi/gui/renderHelper.h')
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/gui/renderHelper.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/gui/renderHelper.h b/xbmc/addons/kodi-dev-kit/include/kodi/gui/renderHelper.h
new file mode 100644
index 0000000..dabe101
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/gui/renderHelper.h
@@ -0,0 +1,82 @@
1/*
2 * Copyright (C) 2005-2019 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#include "../AddonBase.h"
12
13#ifdef __cplusplus
14
15namespace kodi
16{
17namespace gui
18{
19struct ATTRIBUTE_HIDDEN IRenderHelper
20{
21 virtual ~IRenderHelper() = default;
22 virtual bool Init() = 0;
23 virtual void Begin() = 0;
24 virtual void End() = 0;
25}; /* class IRenderHelper */
26} /* namespace gui */
27} /* namespace kodi */
28
29#if defined(WIN32) && defined(HAS_ANGLE)
30#include "gl/GLonDX.h"
31#else
32/*
33 * Default background GUI render helper class
34 */
35namespace kodi
36{
37namespace gui
38{
39struct ATTRIBUTE_HIDDEN CRenderHelperStub : public IRenderHelper
40{
41 bool Init() override { return true; }
42 void Begin() override {}
43 void End() override {}
44}; /* class CRenderHelperStub */
45
46using CRenderHelper = CRenderHelperStub;
47} /* namespace gui */
48} /* namespace kodi */
49#endif
50
51namespace kodi
52{
53namespace gui
54{
55
56/*
57 * Create render background handler, e.g. becomes on "Windows" Angle used
58 * to emulate GL.
59 *
60 * This only be used internal and not from addon's direct.
61 *
62 * Function defines here and not in CAddonBase because of a hen and egg problem.
63 */
64inline std::shared_ptr<IRenderHelper> ATTRIBUTE_HIDDEN GetRenderHelper()
65{
66 using namespace ::kodi::addon;
67 if (static_cast<CAddonBase*>(CAddonBase::m_interface->addonBase)->m_renderHelper)
68 return static_cast<CAddonBase*>(CAddonBase::m_interface->addonBase)->m_renderHelper;
69
70 const std::shared_ptr<kodi::gui::IRenderHelper> renderHelper(new CRenderHelper());
71 if (!renderHelper->Init())
72 return nullptr;
73
74 static_cast<CAddonBase*>(CAddonBase::m_interface->addonBase)->m_renderHelper =
75 renderHelper; // Hold on base for other types
76 return renderHelper;
77}
78
79} /* namespace gui */
80} /* namespace kodi */
81
82#endif /* __cplusplus */