forked from organicmaps/organicmaps
WindowHandle shouldn't control the lifetime of VideoTimer.
This commit is contained in:
parent
f79d2a3d58
commit
558f774247
10 changed files with 15 additions and 10 deletions
|
@ -32,6 +32,7 @@ typedef Framework<model::FeaturesFetcher> framework_t;
|
|||
@public
|
||||
|
||||
framework_t * framework;
|
||||
VideoTimer * videoTimer;
|
||||
shared_ptr<iphone::RenderContext> renderContext;
|
||||
shared_ptr<yg::gl::FrameBuffer> frameBuffer;
|
||||
shared_ptr<iphone::RenderBuffer> renderBuffer;
|
||||
|
@ -41,6 +42,7 @@ typedef Framework<model::FeaturesFetcher> framework_t;
|
|||
- (void) initRenderPolicy;
|
||||
|
||||
@property (nonatomic, assign) framework_t * framework;
|
||||
@property (nonatomic, assign) VideoTimer * videoTimer;
|
||||
@property (nonatomic, assign) shared_ptr<iphone::RenderContext> renderContext;
|
||||
@property (nonatomic, assign) shared_ptr<iphone::RenderBuffer> renderBuffer;
|
||||
@property (nonatomic, assign) shared_ptr<yg::gl::FrameBuffer> frameBuffer;
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
@implementation EAGLView
|
||||
|
||||
@synthesize framework;
|
||||
@synthesize videoTimer;
|
||||
@synthesize frameBuffer;
|
||||
@synthesize renderContext;
|
||||
@synthesize renderBuffer;
|
||||
|
@ -95,7 +96,7 @@
|
|||
SEL drawFrameSel = @selector(drawFrame);
|
||||
drawFrameFn drawFrameImpl = (drawFrameFn)[self methodForSelector:drawFrameSel];
|
||||
|
||||
VideoTimer * videoTimer = CreateIOSVideoTimer(bind(drawFrameImpl, self, drawFrameSel));
|
||||
videoTimer = CreateIOSVideoTimer(bind(drawFrameImpl, self, drawFrameSel));
|
||||
|
||||
renderPolicy = CreateRenderPolicy(videoTimer, p, renderContext);
|
||||
|
||||
|
@ -151,6 +152,7 @@
|
|||
|
||||
- (void)dealloc
|
||||
{
|
||||
delete videoTimer;
|
||||
// m_framework->SetRenderPolicy(0);
|
||||
[EAGLContext setCurrentContext:nil];
|
||||
[super dealloc];
|
||||
|
|
|
@ -64,7 +64,7 @@ RenderPolicyMT::RenderPolicyMT(VideoTimer * videoTimer,
|
|||
m_windowHandle.reset(new WindowHandle());
|
||||
|
||||
m_windowHandle->setUpdatesEnabled(false);
|
||||
m_windowHandle->setVideoTimer(make_shared_ptr(videoTimer));
|
||||
m_windowHandle->setVideoTimer(videoTimer);
|
||||
m_windowHandle->setRenderContext(primaryRC);
|
||||
|
||||
m_renderQueue.reset(new RenderQueue(GetPlatform().SkinName(),
|
||||
|
|
|
@ -58,7 +58,7 @@ RenderPolicyST::RenderPolicyST(VideoTimer * videoTimer,
|
|||
m_windowHandle.reset(new WindowHandle());
|
||||
|
||||
m_windowHandle->setUpdatesEnabled(false);
|
||||
m_windowHandle->setVideoTimer(make_shared_ptr(videoTimer));
|
||||
m_windowHandle->setVideoTimer(videoTimer);
|
||||
m_windowHandle->setRenderContext(primaryRC);
|
||||
}
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ TilingRenderPolicyMT::TilingRenderPolicyMT(VideoTimer * videoTimer,
|
|||
m_windowHandle.reset(new WindowHandle());
|
||||
|
||||
m_windowHandle->setUpdatesEnabled(false);
|
||||
m_windowHandle->setVideoTimer(make_shared_ptr(videoTimer));
|
||||
m_windowHandle->setVideoTimer(videoTimer);
|
||||
m_windowHandle->setRenderContext(primaryRC);
|
||||
}
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ TilingRenderPolicyST::TilingRenderPolicyST(VideoTimer * videoTimer,
|
|||
m_windowHandle.reset(new WindowHandle());
|
||||
|
||||
m_windowHandle->setUpdatesEnabled(false);
|
||||
m_windowHandle->setVideoTimer(make_shared_ptr(videoTimer));
|
||||
m_windowHandle->setVideoTimer(videoTimer);
|
||||
m_windowHandle->setRenderContext(primaryRC);
|
||||
|
||||
/// render single tile on the same thread
|
||||
|
|
|
@ -8,7 +8,7 @@ WindowHandle::WindowHandle() :
|
|||
{
|
||||
}
|
||||
|
||||
void WindowHandle::setVideoTimer(shared_ptr<VideoTimer> const & videoTimer)
|
||||
void WindowHandle::setVideoTimer(VideoTimer * videoTimer)
|
||||
{
|
||||
m_videoTimer = videoTimer;
|
||||
m_frameFn = videoTimer->frameFn();
|
||||
|
|
|
@ -24,7 +24,7 @@ class WindowHandle
|
|||
bool m_isUpdatesEnabled;
|
||||
bool m_needRedraw;
|
||||
|
||||
shared_ptr<VideoTimer> m_videoTimer;
|
||||
VideoTimer * m_videoTimer;
|
||||
VideoTimer::TFrameFn m_frameFn;
|
||||
int m_stallsCount;
|
||||
|
||||
|
@ -33,7 +33,7 @@ public:
|
|||
WindowHandle();
|
||||
virtual ~WindowHandle();
|
||||
|
||||
void setVideoTimer(shared_ptr<VideoTimer> const & videoTimer);
|
||||
void setVideoTimer(VideoTimer * videoTimer);
|
||||
|
||||
void checkedFrameFn();
|
||||
|
||||
|
|
|
@ -201,14 +201,14 @@ namespace qt
|
|||
|
||||
if (!m_isInitialized)
|
||||
{
|
||||
VideoTimer * videoTimer = CreateVideoTimer();
|
||||
m_videoTimer.reset(CreateVideoTimer());
|
||||
|
||||
DrawerYG::Params params;
|
||||
params.m_frameBuffer = make_shared_ptr(new yg::gl::FrameBuffer(true));
|
||||
|
||||
shared_ptr<qt::gl::RenderContext> primaryRC(new qt::gl::RenderContext(this));
|
||||
|
||||
m_framework->SetRenderPolicy(CreateRenderPolicy(videoTimer, params, primaryRC));
|
||||
m_framework->SetRenderPolicy(CreateRenderPolicy(m_videoTimer.get(), params, primaryRC));
|
||||
|
||||
m_isInitialized = true;
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@ namespace qt
|
|||
bool m_isTimerStarted;
|
||||
|
||||
scoped_ptr<Framework<model_t> > m_framework;
|
||||
scoped_ptr<VideoTimer> m_videoTimer;
|
||||
|
||||
bool m_isDrag;
|
||||
bool m_isRotate;
|
||||
|
|
Loading…
Add table
Reference in a new issue