[vlmc-devel] [PATCH 5/7] GenericRenderer Implement setRenderTarget

yikei lu luyikei.qmltu at gmail.com
Sun Apr 17 10:42:40 CEST 2016


oh well we might want to use unique_ptr internally in GenericRenderer


2016-04-17 17:35 GMT+09:00 yikei lu <luyikei.qmltu at gmail.com>:
> well then the ownership of the pointer will change. And if
> GenericRenderer should have the ownership, I think we don't have to
> use unique_ptr.
>
> Or we can use std::unique_ptr outside GenericRenderer, and pass it as
> a raw pointer, which won't change the ownership
>
>
> 2016-04-17 17:29 GMT+09:00 Hugo Beauzée-Luyssen <hugo at beauzee.fr>:
>> On 04/17/2016 10:27 AM, yikei lu wrote:
>>>
>>> I think it would be better to use shared_ptr rather than unique_ptr
>>> because we we could call setRenderTarget outside the
>>> GenericRenderer-based classes,
>>>
>>>
>>>
>>> 2016-04-17 17:00 GMT+09:00 Hugo Beauzée-Luyssen <hugo at beauzee.fr>:
>>>>
>>>> On 04/17/2016 09:45 AM, yikei lu wrote:
>>>>>
>>>>>
>>>>> Yeah, I also once thought that it would be great to use unique_ptr,
>>>>> but still I don't really know when we should use it since I don't use
>>>>> it so much. :)
>>>>>
>>>>> I think this is simple enough to manage it, but it might be better to
>>>>> use unique_pt because when we setRenderTarget, the pointer should be
>>>>> used only in GenericRenderer. But the parent renderer has the
>>>>> ownership of the pointer.
>>>>>
>>>>> Yes I think it's safe to use unique_pt :)
>>>>> Regards
>>>>>
>>>>> 2016-04-17 16:34 GMT+09:00 Hugo Beauzée-Luyssen <hugo at beauzee.fr>:
>>>>>>
>>>>>>
>>>>>> On 04/16/2016 08:22 AM, Yikai Lu wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ---
>>>>>>>     src/Renderer/GenericRenderer.cpp | 8 ++++++++
>>>>>>>     src/Renderer/GenericRenderer.h   | 5 +++++
>>>>>>>     2 files changed, 13 insertions(+)
>>>>>>>
>>>>>>> diff --git a/src/Renderer/GenericRenderer.cpp
>>>>>>> b/src/Renderer/GenericRenderer.cpp
>>>>>>> index 598b59e..49ea01b 100644
>>>>>>> --- a/src/Renderer/GenericRenderer.cpp
>>>>>>> +++ b/src/Renderer/GenericRenderer.cpp
>>>>>>> @@ -27,6 +27,7 @@
>>>>>>>     GenericRenderer::GenericRenderer()
>>>>>>>         : m_sourceRenderer( nullptr )
>>>>>>>         , m_paused( false )
>>>>>>> +    , m_renderTarget( nullptr )
>>>>>>>     {
>>>>>>>         m_eventWatcher = new RendererEventWatcher;
>>>>>>>     }
>>>>>>> @@ -35,6 +36,7 @@ GenericRenderer::~GenericRenderer()
>>>>>>>     {
>>>>>>>         delete m_sourceRenderer;
>>>>>>>         delete m_eventWatcher;
>>>>>>> +    delete m_renderTarget;
>>>>>>>     }
>>>>>>>
>>>>>>>     bool
>>>>>>> @@ -49,6 +51,12 @@ GenericRenderer::isRendering() const
>>>>>>>         return m_isRendering;
>>>>>>>     }
>>>>>>>
>>>>>>> +void
>>>>>>> +GenericRenderer::setRenderTarget( Backend::IRenderTarget *target )
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> I'm enclined to think this should take a std::unique_ptr instead of a
>>>>>> raw
>>>>>> one, opinion?
>>>>>>
>>>>>>
>>>>>>> +{
>>>>>>> +    m_renderTarget = target;
>>>>>>> +}
>>>>>>> +
>>>>>>>     #ifdef WITH_GUI
>>>>>>>     RendererEventWatcher*
>>>>>>>     GenericRenderer::eventWatcher()
>>>>>>> diff --git a/src/Renderer/GenericRenderer.h
>>>>>>> b/src/Renderer/GenericRenderer.h
>>>>>>> index 6fb326a..fbc9a5e 100644
>>>>>>> --- a/src/Renderer/GenericRenderer.h
>>>>>>> +++ b/src/Renderer/GenericRenderer.h
>>>>>>> @@ -29,6 +29,7 @@
>>>>>>>
>>>>>>>     #include "Workflow/Types.h"
>>>>>>>     #include "Tools/RendererEventWatcher.h"
>>>>>>> +#include "Backend/IRenderTarget.h"
>>>>>>>
>>>>>>>     class   Clip;
>>>>>>>     class   Media;
>>>>>>> @@ -135,6 +136,8 @@ public:
>>>>>>>          */
>>>>>>>         bool                            isRendering() const;
>>>>>>>
>>>>>>> +    void                            setRenderTarget(
>>>>>>> Backend::IRenderTarget* target );
>>>>>>> +
>>>>>>>         RendererEventWatcher*           eventWatcher();
>>>>>>>     protected:
>>>>>>>         Backend::ISourceRenderer*       m_sourceRenderer;
>>>>>>> @@ -150,6 +153,8 @@ protected:
>>>>>>>         bool                            m_paused;
>>>>>>>         bool                            m_isRendering;
>>>>>>>
>>>>>>> +    Backend::IRenderTarget*         m_renderTarget;
>>>>>>> +
>>>>>>>     public slots:
>>>>>>>         /**
>>>>>>>          *  \brief      This SLOT will be called when the time cursor
>>>>>>> has
>>>>>>> changed.
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Vlmc-devel mailing list
>>>>>> Vlmc-devel at videolan.org
>>>>>> https://mailman.videolan.org/listinfo/vlmc-devel
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Vlmc-devel mailing list
>>>>> Vlmc-devel at videolan.org
>>>>> https://mailman.videolan.org/listinfo/vlmc-devel
>>>>>
>>>> Ok, I'll wait for your updated patch then :)
>>>> Thanks!
>>>>
>>>> _______________________________________________
>>>> Vlmc-devel mailing list
>>>> Vlmc-devel at videolan.org
>>>> https://mailman.videolan.org/listinfo/vlmc-devel
>>>
>>> _______________________________________________
>>> Vlmc-devel mailing list
>>> Vlmc-devel at videolan.org
>>> https://mailman.videolan.org/listinfo/vlmc-devel
>>>
>> I don't see why that would change with unique_ptr ?
>>
>> _______________________________________________
>> Vlmc-devel mailing list
>> Vlmc-devel at videolan.org
>> https://mailman.videolan.org/listinfo/vlmc-devel


More information about the Vlmc-devel mailing list