[vlmc-devel] [PATCH 4/5] RenderTarget: Widget

Hugo Beauzée-Luyssen hugo at beauzee.fr
Fri Apr 15 12:43:22 CEST 2016


Hi,

I'm not sure what you mean by «We should use a number to store either a 
pointer or a number because
deleting m_id as a void pointer may cause a problem. Instead we should
delete the value of m_id.»
Why would you delete m_id?
We might need to think of a way to clearly express that the 
Backend::WidgetTarget must not outlive the RendererWidget it's using, 
but I don't think the Backend::WidgetTarget should delete anything.

On 04/14/2016 10:55 AM, Yikai Lu wrote:
> ---
>   src/Backend/Target/WidgetTarget.cpp | 17 +++++++++++++++++
>   src/Backend/Target/WidgetTarget.h   | 18 ++++++++++++++++++
>   src/CMakeLists.txt                  |  1 +
>   3 files changed, 36 insertions(+)
>   create mode 100644 src/Backend/Target/WidgetTarget.cpp
>   create mode 100644 src/Backend/Target/WidgetTarget.h
>
> diff --git a/src/Backend/Target/WidgetTarget.cpp b/src/Backend/Target/WidgetTarget.cpp
> new file mode 100644
> index 0000000..f6d33c7
> --- /dev/null
> +++ b/src/Backend/Target/WidgetTarget.cpp
> @@ -0,0 +1,17 @@
> +#include "WidgetTarget.h"
> +
> +#include "Backend/ISourceRenderer.h"
> +
> +using namespace Backend;
> +
> +WidgetTarget::WidgetTarget( void* id )
> +    : m_id( reinterpret_cast<long long int>( id ) )

This looks like problems on 32bits platforms. Please use (u)intptr_t 
instead it you want to store a pointer as an integer.
It could be a better idea to have a conditional type, such as 
QWidget::WId, that holds the proper type, depending on the OS

> +{
> +}
> +
> +void
> +WidgetTarget::configure( ISourceRenderer *renderer )
> +{
> +    renderer->setOutputWidget( reinterpret_cast<void*>( m_id ) );
> +}
> +
> diff --git a/src/Backend/Target/WidgetTarget.h b/src/Backend/Target/WidgetTarget.h
> new file mode 100644
> index 0000000..e22d39f
> --- /dev/null
> +++ b/src/Backend/Target/WidgetTarget.h
> @@ -0,0 +1,18 @@
> +#ifndef WIDGETTARGET_H
> +#define WIDGETTARGET_H
> +
> +#include "Backend/IRenderTarget.h"
> +
> +namespace Backend
> +{
> +    class WidgetTarget : public IRenderTarget
> +    {
> +    public:
> +        WidgetTarget( void* id );
> +        virtual void configure( ISourceRenderer *renderer );
> +    private:
> +        long long int m_id;
> +    };
> +}
> +
> +#endif // WIDGETTARGET_H
> diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
> index ae426ff..4c59e63 100644
> --- a/src/CMakeLists.txt
> +++ b/src/CMakeLists.txt
> @@ -46,6 +46,7 @@ SET(VLMC_SRCS
>       Backend/VLC/VLCVmemRenderer.cpp
>       Backend/VLC/VLCSource.cpp
>       Backend/VLC/VLCMemorySource.cpp
> +    Backend/Target/WidgetTarget.cpp
>       EffectsEngine/EffectsEngine.cpp
>       EffectsEngine/Effect.cpp
>       EffectsEngine/EffectUser.cpp
>



More information about the Vlmc-devel mailing list