WindowHandle shouldn't control the lifetime of VideoTimer.

This commit is contained in:
rachytski 2011-11-11 16:57:07 +04:00 committed by Alex Zolotarev
parent f79d2a3d58
commit 558f774247
10 changed files with 15 additions and 10 deletions

View file

@ -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;

View file

@ -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];

View file

@ -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(),

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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

View file

@ -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();

View file

@ -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();

View file

@ -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;
}

View file

@ -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;