1 /* 2 * Copyright (C) 2017-2018 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 "cores/GameSettings.h" 12 #include "cores/RetroPlayer/RetroPlayerTypes.h" 13 #include "threads/CriticalSection.h" 14 15 #include <memory> 16 #include <vector> 17 18 namespace KODI 19 { 20 namespace RETRO 21 { 22 class IRendererFactory; 23 class IRenderBufferPools; 24 25 class CRenderBufferManager 26 { 27 public: 28 CRenderBufferManager() = default; 29 ~CRenderBufferManager(); 30 31 void RegisterPools(IRendererFactory* factory, RenderBufferPoolVector pools); 32 RenderBufferPoolVector GetPools(IRendererFactory* factory); 33 std::vector<IRenderBufferPool*> GetBufferPools(); 34 void FlushPools(); 35 36 std::string GetRenderSystemName(IRenderBufferPool* renderBufferPool) const; 37 38 bool HasScalingMethod(SCALINGMETHOD scalingMethod) const; 39 40 protected: 41 struct RenderBufferPools 42 { 43 IRendererFactory* factory; 44 RenderBufferPoolVector pools; 45 }; 46 47 std::vector<RenderBufferPools> m_pools; 48 mutable CCriticalSection m_critSection; 49 }; 50 } // namespace RETRO 51 } // namespace KODI 52