From 5f8335c1e49ce108ef3481863833c98efa00411b Mon Sep 17 00:00:00 2001 From: manuel Date: Thu, 2 Jul 2020 23:09:26 +0200 Subject: sync with upstream --- .../include/kodi/gui/renderHelper.h | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h (limited to 'xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h') diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h new file mode 100644 index 0000000..2e96d21 --- /dev/null +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2005-2019 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include "../AddonBase.h" + +namespace kodi +{ +namespace gui +{ +struct ATTRIBUTE_HIDDEN IRenderHelper +{ + virtual ~IRenderHelper() = default; + virtual bool Init() = 0; + virtual void Begin() = 0; + virtual void End() = 0; +}; /* class IRenderHelper */ +} /* namespace gui */ +} /* namespace kodi */ + +#if defined(WIN32) && defined(HAS_ANGLE) +#include "gl/GLonDX.h" +#else +/* + * Default background GUI render helper class + */ +namespace kodi +{ +namespace gui +{ +struct ATTRIBUTE_HIDDEN CRenderHelperStub : public IRenderHelper +{ + bool Init() override { return true; } + void Begin() override { } + void End() override { } +}; /* class CRenderHelperStub */ + +using CRenderHelper = CRenderHelperStub; +} /* namespace gui */ +} /* namespace kodi */ +#endif + +namespace kodi +{ +namespace gui +{ + +/* + * Create render background handler, e.g. becomes on "Windows" Angle used + * to emulate GL. + * + * This only be used internal and not from addon's direct. + * + * Function defines here and not in CAddonBase because of a hen and egg problem. + */ +inline std::shared_ptr ATTRIBUTE_HIDDEN GetRenderHelper() +{ + using namespace ::kodi::addon; + if (static_cast(CAddonBase::m_interface->addonBase)->m_renderHelper) + return static_cast(CAddonBase::m_interface->addonBase)->m_renderHelper; + + const std::shared_ptr renderHelper(new CRenderHelper()); + if (!renderHelper->Init()) + return nullptr; + + static_cast(CAddonBase::m_interface->addonBase)->m_renderHelper = + renderHelper; // Hold on base for other types + return renderHelper; +} + +} /* namespace gui */ +} /* namespace kodi */ -- cgit v1.2.3