From fb9ccf2ddb7634cbafd7a9dbbbbddc9aa0b6c048 Mon Sep 17 00:00:00 2001 From: rachytski Date: Thu, 28 Jul 2011 01:35:04 +0300 Subject: [PATCH] code styling fixes. --- map/framework.cpp | 2 +- map/framework.hpp | 2 +- map/render_policy.cpp | 4 +- map/render_policy.hpp | 8 +-- map/render_policy_st.cpp | 2 +- map/render_policy_st.hpp | 2 +- map/render_queue.cpp | 36 +++++------- map/render_queue.hpp | 18 ++---- map/render_queue_routine.cpp | 101 ++++++++++++-------------------- map/render_queue_routine.hpp | 42 ++++++------- map/tiling_render_policy_mt.cpp | 6 +- map/tiling_render_policy_mt.hpp | 2 +- map/tiling_render_policy_st.cpp | 4 +- map/tiling_render_policy_st.hpp | 2 +- map/window_handle.hpp | 2 +- qt/draw_widget.cpp | 2 +- 16 files changed, 95 insertions(+), 140 deletions(-) diff --git a/map/framework.cpp b/map/framework.cpp index 393d78a14a..788af6e11a 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -164,7 +164,7 @@ void Framework::EnumLocalMaps(maps_list_t & filesList) } template -void Framework::initializeGL( +void Framework::InitializeGL( shared_ptr const & primaryContext, shared_ptr const & resourceManager) { diff --git a/map/framework.hpp b/map/framework.hpp index b9048bfacc..cbc27d2c96 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -143,7 +143,7 @@ public: void SetRenderPolicy(shared_ptr const & rp); - void initializeGL(shared_ptr const & primaryContext, + void InitializeGL(shared_ptr const & primaryContext, shared_ptr const & resourceManager); model_t & get_model(); diff --git a/map/render_policy.cpp b/map/render_policy.cpp index c6f51196b9..094d607372 100644 --- a/map/render_policy.cpp +++ b/map/render_policy.cpp @@ -2,7 +2,7 @@ #include "render_policy.hpp" -RenderPolicy::RenderPolicy(shared_ptr const & windowHandle, render_fn_t const & renderFn) +RenderPolicy::RenderPolicy(shared_ptr const & windowHandle, TRenderFn const & renderFn) : m_bgColor(0xEE, 0xEE, 0xDD, 0xFF), m_windowHandle(windowHandle), m_renderFn(renderFn) @@ -23,7 +23,7 @@ shared_ptr const & RenderPolicy::windowHandle() const return m_windowHandle; } -RenderPolicy::render_fn_t RenderPolicy::renderFn() const +RenderPolicy::TRenderFn RenderPolicy::renderFn() const { return m_renderFn; } diff --git a/map/render_policy.hpp b/map/render_policy.hpp index 1bef66e7fe..ea0756cc97 100644 --- a/map/render_policy.hpp +++ b/map/render_policy.hpp @@ -26,26 +26,26 @@ class RenderPolicy { public: - typedef function, ScreenBase const &, m2::RectD const &, int)> render_fn_t; + typedef function, ScreenBase const &, m2::RectD const &, int)> TRenderFn; private: yg::Color m_bgColor; shared_ptr m_resourceManager; shared_ptr m_windowHandle; - render_fn_t m_renderFn; + TRenderFn m_renderFn; protected: yg::Color const & bgColor() const; shared_ptr const & resourceManager() const; shared_ptr const & windowHandle() const; - render_fn_t renderFn() const; + TRenderFn renderFn() const; public: /// constructor - RenderPolicy(shared_ptr const & windowHandle, render_fn_t const & renderFn); + RenderPolicy(shared_ptr const & windowHandle, TRenderFn const & renderFn); /// drawing single frame virtual void DrawFrame(shared_ptr const & paintEvent, ScreenBase const & currentScreen) = 0; /// processing resize request diff --git a/map/render_policy_st.cpp b/map/render_policy_st.cpp index 021f97a534..ef2390a947 100644 --- a/map/render_policy_st.cpp +++ b/map/render_policy_st.cpp @@ -11,7 +11,7 @@ #include "../platform/platform.hpp" RenderPolicyST::RenderPolicyST(shared_ptr const & wh, - RenderPolicy::render_fn_t const & renderFn) + RenderPolicy::TRenderFn const & renderFn) : RenderPolicy(wh, renderFn) {} diff --git a/map/render_policy_st.hpp b/map/render_policy_st.hpp index e8d5a9ebab..50b8d00604 100644 --- a/map/render_policy_st.hpp +++ b/map/render_policy_st.hpp @@ -9,7 +9,7 @@ class RenderPolicyST : public RenderPolicy private: public: RenderPolicyST(shared_ptr const & wh, - RenderPolicy::render_fn_t const & renderFn); + RenderPolicy::TRenderFn const & renderFn); void Initialize(shared_ptr const & rc, shared_ptr const & rm); diff --git a/map/render_queue.cpp b/map/render_queue.cpp index 35e603c5fe..4a6433ae34 100644 --- a/map/render_queue.cpp +++ b/map/render_queue.cpp @@ -14,7 +14,7 @@ RenderQueue::RenderQueue( unsigned maxTilesCount, unsigned tasksCount, yg::Color const & bgColor - ) : m_sequence(0), m_tileCache(maxTilesCount - 1) + ) : m_sequenceID(0), m_tileCache(maxTilesCount - 1) { m_tasksCount = tasksCount; //< calculate from the CPU Cores Number LOG(LINFO, ("initializing ", tasksCount, " rendering threads")); @@ -29,16 +29,16 @@ RenderQueue::RenderQueue( this); } -void RenderQueue::InitializeGL(shared_ptr const & primaryContext, - shared_ptr const & resourceManager, - double visualScale) +void RenderQueue::Initialize(shared_ptr const & primaryContext, + shared_ptr const & resourceManager, + double visualScale) { m_resourceManager = resourceManager; for (unsigned i = 0; i < m_tasksCount; ++i) { - m_tasks[i].m_routine->initializeGL(primaryContext->createShared(), - m_resourceManager); - m_tasks[i].m_routine->setVisualScale(visualScale); + m_tasks[i].m_routine->InitializeGL(primaryContext->createShared(), + m_resourceManager, + visualScale); m_tasks[i].m_thread.Create(m_tasks[i].m_routine); } } @@ -51,40 +51,34 @@ RenderQueue::~RenderQueue() delete [] m_tasks; } -void RenderQueue::AddCommand(RenderQueueRoutine::render_fn_t const & fn, yg::Tiler::RectInfo const & rectInfo, size_t seqNum) +void RenderQueue::AddCommand(RenderQueueRoutine::TRenderFn const & fn, yg::Tiler::RectInfo const & rectInfo, size_t sequenceID) { - m_sequence = seqNum; - m_renderCommands.PushBack(make_shared_ptr(new RenderQueueRoutine::Command(rectInfo, fn, seqNum))); + m_sequenceID = sequenceID; + m_renderCommands.PushBack(make_shared_ptr(new RenderQueueRoutine::Command(rectInfo, fn, sequenceID))); } void RenderQueue::AddWindowHandle(shared_ptr const & windowHandle) { for (unsigned i = 0; i < m_tasksCount; ++i) - m_tasks[i].m_routine->addWindowHandle(windowHandle); -} - -void RenderQueue::AddRenderCommandFinishedFn(renderCommandFinishedFn fn) -{ - for (unsigned i = 0; i < m_tasksCount; ++i) - m_tasks[i].m_routine->addRenderCommandFinishedFn(fn); + m_tasks[i].m_routine->AddWindowHandle(windowHandle); } void RenderQueue::MemoryWarning() { for (unsigned i = 0; i < m_tasksCount; ++i) - m_tasks[i].m_routine->memoryWarning(); + m_tasks[i].m_routine->MemoryWarning(); } void RenderQueue::EnterBackground() { for (unsigned i = 0; i < m_tasksCount; ++i) - m_tasks[i].m_routine->enterBackground(); + m_tasks[i].m_routine->EnterBackground(); } void RenderQueue::EnterForeground() { for (unsigned i = 0; i < m_tasksCount; ++i) - m_tasks[i].m_routine->enterForeground(); + m_tasks[i].m_routine->EnterForeground(); } yg::TileCache & RenderQueue::TileCache() @@ -94,7 +88,7 @@ yg::TileCache & RenderQueue::TileCache() size_t RenderQueue::CurrentSequence() const { - return m_sequence; + return m_sequenceID; } ThreadedList > & RenderQueue::RenderCommands() diff --git a/map/render_queue.hpp b/map/render_queue.hpp index fc57381e1e..16f634c991 100644 --- a/map/render_queue.hpp +++ b/map/render_queue.hpp @@ -24,7 +24,7 @@ class RenderQueue { private: - /// single rendering task + /// Single rendering task. Engine allocates tasks by number of cores struct Task { threads::Thread m_thread; @@ -34,7 +34,7 @@ private: Task * m_tasks; size_t m_tasksCount; - size_t m_sequence; + size_t m_sequenceID; friend class RenderQueueRoutine; @@ -46,8 +46,6 @@ private: public: - typedef RenderQueueRoutine::renderCommandFinishedFn renderCommandFinishedFn; - /// constructor. RenderQueue(string const & skinName, bool isBenchmarking, @@ -58,17 +56,13 @@ public: /// destructor. ~RenderQueue(); /// set the primary context. it starts the rendering thread. - void InitializeGL(shared_ptr const & primaryContext, - shared_ptr const & resourceManager, - double ppmScale); + void Initialize(shared_ptr const & primaryContext, + shared_ptr const & resourceManager, + double visualScale); /// add command to the commands queue. - void AddCommand(RenderQueueRoutine::render_fn_t const & fn, yg::Tiler::RectInfo const & rectInfo, size_t seqNum); - /// set visual scale - void SetVisualScale(double visualScale); + void AddCommand(RenderQueueRoutine::TRenderFn const & fn, yg::Tiler::RectInfo const & rectInfo, size_t seqNum); /// add window handle to notify when rendering operation finishes void AddWindowHandle(shared_ptr const & windowHandle); - /// add function, that will be called upon render command completion. - void AddRenderCommandFinishedFn(renderCommandFinishedFn fn); /// free all possible memory caches. void MemoryWarning(); /// free all possible memory caches, opengl resources, diff --git a/map/render_queue_routine.cpp b/map/render_queue_routine.cpp index 6d5bb142d7..525ed280ee 100644 --- a/map/render_queue_routine.cpp +++ b/map/render_queue_routine.cpp @@ -26,11 +26,11 @@ #include "render_queue.hpp" RenderQueueRoutine::Command::Command(yg::Tiler::RectInfo const & rectInfo, - render_fn_t renderFn, - size_t seqNum) + TRenderFn renderFn, + size_t sequenceID) : m_rectInfo(rectInfo), m_renderFn(renderFn), - m_seqNum(seqNum) + m_sequenceID(sequenceID) {} RenderQueueRoutine::RenderQueueRoutine(string const & skinName, @@ -49,19 +49,32 @@ RenderQueueRoutine::RenderQueueRoutine(string const & skinName, m_bgColor = bgColor; } +bool RenderQueueRoutine::HasTile(yg::Tiler::RectInfo const & rectInfo) +{ + m_renderQueue->TileCache().lock(); + bool res = m_renderQueue->TileCache().hasTile(rectInfo); + m_renderQueue->TileCache().unlock(); + return res; +} + +void RenderQueueRoutine::AddTile(yg::Tiler::RectInfo const & rectInfo, yg::Tile const & tile) +{ + m_renderQueue->TileCache().lock(); + m_renderQueue->TileCache().addTile(rectInfo, yg::TileCache::Entry(tile, m_resourceManager)); + m_renderQueue->TileCache().unlock(); +} + void RenderQueueRoutine::Cancel() { IRoutine::Cancel(); + + threads::MutexGuard guard(m_mutex); + /// ...Or cancelling the current rendering command in progress. if (m_currentCommand != 0) m_currentCommand->m_paintEvent->setIsCancelled(true); } -void RenderQueueRoutine::setVisualScale(double visualScale) -{ - m_visualScale = visualScale; -} - void RenderQueueRoutine::Do() { m_renderContext->makeCurrent(); @@ -76,11 +89,8 @@ void RenderQueueRoutine::Do() DrawerYG::params_t params; - shared_ptr infoLayer(new yg::InfoLayer()); - params.m_resourceManager = m_resourceManager; params.m_frameBuffer = m_frameBuffer; - params.m_infoLayer = infoLayer; params.m_glyphCacheID = m_resourceManager->renderThreadGlyphCacheID(m_threadNum); params.m_useOverlay = true; params.m_threadID = m_threadNum; @@ -91,11 +101,10 @@ void RenderQueueRoutine::Do() m_threadDrawer = make_shared_ptr(new DrawerYG(m_skinName, params)); m_threadDrawer->onSize(tileWidth, tileHeight); - - CHECK(m_visualScale != 0, ("VisualScale is not set")); m_threadDrawer->SetVisualScale(m_visualScale); ScreenBase frameScreen; + /// leaving 1px border of fully transparent pixels for sews-free tile blitting. m2::RectI renderRect(1, 1, tileWidth - 1, tileWidth - 1); frameScreen.OnSize(renderRect); @@ -108,25 +117,16 @@ void RenderQueueRoutine::Do() m_currentCommand = m_renderQueue->RenderCommands().Front(true); if (m_renderQueue->RenderCommands().IsCancelled()) - { - LOG(LINFO, (m_threadNum, " cancelled on renderCommands")); break; - } - - m_currentCommand->m_paintEvent = make_shared_ptr(new PaintEvent(m_threadDrawer)); /// commands from the previous sequence are ignored - if (m_currentCommand->m_seqNum < m_renderQueue->CurrentSequence()) + if (m_currentCommand->m_sequenceID < m_renderQueue->CurrentSequence()) continue; - bool hasTile = false; - - m_renderQueue->TileCache().lock(); - hasTile = m_renderQueue->TileCache().hasTile(m_currentCommand->m_rectInfo); - m_renderQueue->TileCache().unlock(); - - if (hasTile) + if (HasTile(m_currentCommand->m_rectInfo)) continue; + + m_currentCommand->m_paintEvent = make_shared_ptr(new PaintEvent(m_threadDrawer)); } if (IsCancelled()) @@ -139,10 +139,7 @@ void RenderQueueRoutine::Do() tileTarget = m_resourceManager->renderTargets().Front(true); if (m_resourceManager->renderTargets().IsCancelled()) - { - LOG(LINFO, (m_threadNum, " cancelled on renderTargets")); break; - } m_threadDrawer->screen()->setRenderTarget(tileTarget); @@ -170,9 +167,6 @@ void RenderQueueRoutine::Do() selectionRect, m_currentCommand->m_rectInfo.m_drawScale); - /// rendering all collected texts -// m_infoLayer->draw(m_threadDrawer->screen().get(), math::Identity()); - m_threadDrawer->endFrame(); m_threadDrawer->screen()->resetInfoLayer(); @@ -180,27 +174,16 @@ void RenderQueueRoutine::Do() if (!IsCancelled()) { - /// We shouldn't update the actual target as it's already happened (through callback function) - /// in the endFrame function - /// updateActualTarget(); - { threads::MutexGuard guard(m_mutex); if (!m_currentCommand->m_paintEvent->isCancelled()) - { - yg::Tile tile(tileTarget, tileInfoLayer, frameScreen, m_currentCommand->m_rectInfo, duration); - m_renderQueue->TileCache().lock(); - m_renderQueue->TileCache().addTile(m_currentCommand->m_rectInfo, yg::TileCache::Entry(tile, m_resourceManager)); - m_renderQueue->TileCache().unlock(); - } + AddTile(m_currentCommand->m_rectInfo, yg::Tile(tileTarget, tileInfoLayer, frameScreen, m_currentCommand->m_rectInfo, duration)); m_currentCommand.reset(); } - invalidate(); - - callRenderCommandFinishedFns(); + Invalidate(); } } @@ -210,48 +193,38 @@ void RenderQueueRoutine::Do() m_renderContext->endThreadDrawing(); } -void RenderQueueRoutine::addWindowHandle(shared_ptr window) +void RenderQueueRoutine::AddWindowHandle(shared_ptr window) { m_windowHandles.push_back(window); } -void RenderQueueRoutine::invalidate() +void RenderQueueRoutine::Invalidate() { for_each(m_windowHandles.begin(), m_windowHandles.end(), bind(&WindowHandle::invalidate, _1)); } -void RenderQueueRoutine::initializeGL(shared_ptr const & renderContext, - shared_ptr const & resourceManager) +void RenderQueueRoutine::InitializeGL(shared_ptr const & renderContext, + shared_ptr const & resourceManager, + double visualScale) { m_renderContext = renderContext; m_resourceManager = resourceManager; + m_visualScale = visualScale; } -void RenderQueueRoutine::memoryWarning() +void RenderQueueRoutine::MemoryWarning() { m_threadDrawer->screen()->memoryWarning(); } -void RenderQueueRoutine::enterBackground() +void RenderQueueRoutine::EnterBackground() { m_threadDrawer->screen()->enterBackground(); } -void RenderQueueRoutine::enterForeground() +void RenderQueueRoutine::EnterForeground() { m_threadDrawer->screen()->enterForeground(); } - -void RenderQueueRoutine::addRenderCommandFinishedFn(renderCommandFinishedFn fn) -{ - m_renderCommandFinishedFns.push_back(fn); -} - -void RenderQueueRoutine::callRenderCommandFinishedFns() -{ - if (!m_renderCommandFinishedFns.empty()) - for (list::const_iterator it = m_renderCommandFinishedFns.begin(); it != m_renderCommandFinishedFns.end(); ++it) - (*it)(); -} diff --git a/map/render_queue_routine.hpp b/map/render_queue_routine.hpp index 42a430a7bc..8fdc697afe 100644 --- a/map/render_queue_routine.hpp +++ b/map/render_queue_routine.hpp @@ -44,19 +44,18 @@ class RenderQueueRoutine : public threads::IRoutine { public: - typedef RenderPolicy::render_fn_t render_fn_t; - typedef function renderCommandFinishedFn; + typedef RenderPolicy::TRenderFn TRenderFn; /// Single tile rendering command struct Command { yg::Tiler::RectInfo m_rectInfo; - shared_ptr m_paintEvent; - render_fn_t m_renderFn; - size_t m_seqNum; + shared_ptr m_paintEvent; //< paintEvent is set later after construction + TRenderFn m_renderFn; + size_t m_sequenceID; Command(yg::Tiler::RectInfo const & rectInfo, - render_fn_t renderFn, - size_t seqNum); //< paintEvent is set later after construction + TRenderFn renderFn, + size_t sequenceID); }; private: @@ -81,13 +80,13 @@ private: size_t m_threadNum; - list m_renderCommandFinishedFns; - RenderQueue * m_renderQueue; - void callRenderCommandFinishedFns(); + bool HasTile(yg::Tiler::RectInfo const & rectInfo); + void AddTile(yg::Tiler::RectInfo const & rectInfo, yg::Tile const & tile); public: + RenderQueueRoutine(string const & skinName, bool isBenchmarking, unsigned scaleEtalonSize, @@ -96,28 +95,23 @@ public: RenderQueue * renderQueue); /// initialize GL rendering /// this function is called just before the thread starts. - void initializeGL(shared_ptr const & renderContext, - shared_ptr const & resourceManager); + void InitializeGL(shared_ptr const & renderContext, + shared_ptr const & resourceManager, + double visualScale); /// This function should always be called from the main thread. void Cancel(); /// Thread procedure void Do(); /// invalidate all connected window handles - void invalidate(); + void Invalidate(); /// add monitoring window - void addWindowHandle(shared_ptr window); + void AddWindowHandle(shared_ptr window); /// add model rendering command to rendering queue - void addCommand(render_fn_t const & fn, yg::Tiler::RectInfo const & rectInfo, size_t seqNumber); - /// add benchmark rendering command -// void addBenchmarkCommand(render_fn_t const & fn, m2::RectD const & globalRect); - /// set the resolution scale factor to the main thread drawer; - void setVisualScale(double visualScale); + void AddCommand(TRenderFn const & fn, yg::Tiler::RectInfo const & rectInfo, size_t seqNumber); /// free all available memory - void memoryWarning(); + void MemoryWarning(); /// free all easily recreatable opengl resources and make sure that no opengl call will be made. - void enterBackground(); + void EnterBackground(); /// recreate all necessary opengl resources and prepare to run in foreground. - void enterForeground(); - /// add render-command-finished callback - void addRenderCommandFinishedFn(renderCommandFinishedFn fn); + void EnterForeground(); }; diff --git a/map/tiling_render_policy_mt.cpp b/map/tiling_render_policy_mt.cpp index 7cbf63a9d4..39e4120e73 100644 --- a/map/tiling_render_policy_mt.cpp +++ b/map/tiling_render_policy_mt.cpp @@ -10,7 +10,7 @@ TilingRenderPolicyMT::TilingRenderPolicyMT(shared_ptr const & windowHandle, - RenderPolicy::render_fn_t const & renderFn) + RenderPolicy::TRenderFn const & renderFn) : RenderPolicy(windowHandle, renderFn), m_renderQueue(GetPlatform().SkinName(), GetPlatform().IsBenchmarking(), @@ -26,10 +26,10 @@ void TilingRenderPolicyMT::Initialize(shared_ptr const & shared_ptr const & resourceManager) { RenderPolicy::Initialize(primaryContext, resourceManager); - m_renderQueue.InitializeGL(primaryContext, resourceManager, GetPlatform().VisualScale()); + m_renderQueue.Initialize(primaryContext, resourceManager, GetPlatform().VisualScale()); } -void TilingRenderPolicyMT::OnSize(int w, int h) +void TilingRenderPolicyMT::OnSize(int /*w*/, int /*h*/) { } diff --git a/map/tiling_render_policy_mt.hpp b/map/tiling_render_policy_mt.hpp index f801e6069a..01efbc0271 100644 --- a/map/tiling_render_policy_mt.hpp +++ b/map/tiling_render_policy_mt.hpp @@ -30,7 +30,7 @@ private: public: TilingRenderPolicyMT(shared_ptr const & windowHandle, - RenderPolicy::render_fn_t const & renderFn); + RenderPolicy::TRenderFn const & renderFn); void Initialize(shared_ptr const & renderContext, shared_ptr const & resourceManager); diff --git a/map/tiling_render_policy_st.cpp b/map/tiling_render_policy_st.cpp index 031bf9a691..a00cb37851 100644 --- a/map/tiling_render_policy_st.cpp +++ b/map/tiling_render_policy_st.cpp @@ -14,7 +14,7 @@ TilingRenderPolicyST::TilingRenderPolicyST(shared_ptr const & windowHandle, - RenderPolicy::render_fn_t const & renderFn) + RenderPolicy::TRenderFn const & renderFn) : RenderPolicy(windowHandle, renderFn), m_tileCache(GetPlatform().MaxTilesCount() - 1) {} @@ -50,7 +50,7 @@ void TilingRenderPolicyST::Initialize(shared_ptr const & m_tileScreen.OnSize(renderRect); } -void TilingRenderPolicyST::OnSize(int w, int h) +void TilingRenderPolicyST::OnSize(int /*w*/, int /*h*/) {} void TilingRenderPolicyST::DrawFrame(shared_ptr const & e, ScreenBase const & currentScreen) diff --git a/map/tiling_render_policy_st.hpp b/map/tiling_render_policy_st.hpp index 825e7104e9..a1fafa239d 100644 --- a/map/tiling_render_policy_st.hpp +++ b/map/tiling_render_policy_st.hpp @@ -28,7 +28,7 @@ private: public: TilingRenderPolicyST(shared_ptr const & windowHandle, - RenderPolicy::render_fn_t const & renderFn); + RenderPolicy::TRenderFn const & renderFn); void Initialize(shared_ptr const & renderContext, shared_ptr const & resourceManager); diff --git a/map/window_handle.hpp b/map/window_handle.hpp index 6fb40edc2e..3bbc6dccc6 100644 --- a/map/window_handle.hpp +++ b/map/window_handle.hpp @@ -15,7 +15,7 @@ namespace yg class WindowHandle { - // iOS realization needs this parameter. + // iOS implementation needs this parameter. // Desktop realization holds DrawerYG in draw_widget.hpp. shared_ptr m_drawer; diff --git a/qt/draw_widget.cpp b/qt/draw_widget.cpp index 7252f1b0d3..e3d65d5c50 100644 --- a/qt/draw_widget.cpp +++ b/qt/draw_widget.cpp @@ -166,7 +166,7 @@ namespace qt widget_type::initializeGL(); m_handle->setRenderContext(renderContext()); //m_handle->setDrawer(GetDrawer()); - m_framework->initializeGL(renderContext(), resourceManager()); + m_framework->InitializeGL(renderContext(), resourceManager()); } void DrawWidget::DoDraw(shared_ptr p)