[vlmc-devel] [PATCH] Renderer: have quint64 as a pointer of Window Id

yikei lu luyikei.qmltu at gmail.com
Wed Apr 6 05:04:32 CEST 2016


While we'll need to implement streaming, I don't really know how it
goes for now :) If it's only about saving paths, it will be easy

2016-04-06 3:54 GMT+09:00 Hugo Beauzée-Luyssen <hugo at beauzee.fr>:
> On 04/05/2016 11:46 AM, Yikai Lu wrote:
>> ---
>>  src/Gui/preview/PreviewWidget.cpp | 2 +-
>>  src/Renderer/ClipRenderer.cpp     | 4 ++--
>>  src/Renderer/GenericRenderer.cpp  | 8 +++-----
>>  src/Renderer/GenericRenderer.h    | 7 ++-----
>>  src/Renderer/WorkflowRenderer.cpp | 5 ++---
>>  5 files changed, 10 insertions(+), 16 deletions(-)
>>
>> diff --git a/src/Gui/preview/PreviewWidget.cpp b/src/Gui/preview/PreviewWidget.cpp
>> index a50e9a9..fb080d8 100644
>> --- a/src/Gui/preview/PreviewWidget.cpp
>> +++ b/src/Gui/preview/PreviewWidget.cpp
>> @@ -71,7 +71,7 @@ PreviewWidget::setRenderer(GenericRenderer *renderer)
>>      // Give the renderer to the ruler
>>      m_ui->rulerWidget->setRenderer( m_renderer );
>>
>> -    m_renderer->setRenderWidget( m_ui->renderWidget );
>> +    m_renderer->setRenderWidget( reinterpret_cast<quint64>( static_cast<RenderWidget*>( m_ui->renderWidget )->id() ) );
>>
>>  #if defined ( Q_OS_MAC )
>>      /* Releases the NSView in the RenderWidget*/
>> diff --git a/src/Renderer/ClipRenderer.cpp b/src/Renderer/ClipRenderer.cpp
>> index 318d6bd..6e86da7 100644
>> --- a/src/Renderer/ClipRenderer.cpp
>> +++ b/src/Renderer/ClipRenderer.cpp
>> @@ -31,7 +31,6 @@
>>  #include "Library/Library.h"
>>  #include "Media/Media.h"
>>  #include "Workflow/MainWorkflow.h"
>> -#include "Gui/preview/RenderWidget.h"
>>
>>  ClipRenderer::ClipRenderer() :
>>      GenericRenderer(),
>> @@ -89,7 +88,8 @@ ClipRenderer::startPreview()
>>
>>      delete m_sourceRenderer;
>>      m_sourceRenderer = m_selectedClip->getMedia()->source()->createRenderer( m_eventWatcher );
>> -    m_sourceRenderer->setOutputWidget( (void *) static_cast< RenderWidget* >( m_renderWidget )->id() );
>> +    if ( m_renderWidgetId != 0 )
>> +        m_sourceRenderer->setOutputWidget( (void *) m_renderWidgetId );
>>
>>      connect( m_eventWatcher, SIGNAL( stopped() ), this, SLOT( videoStopped() ) );
>>      connect( m_eventWatcher, SIGNAL( paused() ),  this, SIGNAL( paused() ) );
>> diff --git a/src/Renderer/GenericRenderer.cpp b/src/Renderer/GenericRenderer.cpp
>> index 6ed435a..3456b3e 100644
>> --- a/src/Renderer/GenericRenderer.cpp
>> +++ b/src/Renderer/GenericRenderer.cpp
>> @@ -21,12 +21,12 @@
>>   *****************************************************************************/
>>
>>  #include "GenericRenderer.h"
>> -#include "preview/RenderWidget.h"
>>  #include <QtGlobal>
>>
>>  GenericRenderer::GenericRenderer()
>>      : m_sourceRenderer( nullptr )
>>      , m_paused( false )
>> +    , m_renderWidgetId( 0 )
>>  {
>>      m_eventWatcher = new RendererEventWatcher;
>>  }
>> @@ -37,11 +37,10 @@ GenericRenderer::~GenericRenderer()
>>      delete m_eventWatcher;
>>  }
>>
>> -#ifdef WITH_GUI
>>  void
>> -GenericRenderer::setRenderWidget(QWidget *renderWidget)
>> +GenericRenderer::setRenderWidget( quint64 id )
>>  {
>> -    m_renderWidget = renderWidget;
>> +    m_renderWidgetId = id;
>>  }
>>
>>  RendererEventWatcher*
>> @@ -49,4 +48,3 @@ GenericRenderer::eventWatcher()
>>  {
>>      return m_eventWatcher;
>>  }
>> -#endif
>> diff --git a/src/Renderer/GenericRenderer.h b/src/Renderer/GenericRenderer.h
>> index 5cb34f5..cf9a670 100644
>> --- a/src/Renderer/GenericRenderer.h
>> +++ b/src/Renderer/GenericRenderer.h
>> @@ -26,9 +26,6 @@
>>  #include "config.h"
>>
>>  #include <QObject>
>> -#ifdef WITH_GUI
>> -# include <QWidget>
>> -#endif
>>
>>  #include "EffectsEngine/EffectUser.h"
>>  #include "Workflow/Types.h"
>> @@ -57,7 +54,7 @@ public:
>>       *  \param  renderWidget    The widget to use for render.
>>       *  \sa     setPreviewLabel( QLabel* )
>>       */
>> -    void                setRenderWidget( QWidget* renderWidget );
>> +    void                setRenderWidget( quint64 id );
>>  #endif
>>
>>      /**
>> @@ -174,7 +171,7 @@ protected:
>>       */
>>      bool                            m_paused;
>>
>> -    QWidget*                        m_renderWidget;
>> +    quint64                         m_renderWidgetId;
>>
>>  public slots:
>>      /**
>> diff --git a/src/Renderer/WorkflowRenderer.cpp b/src/Renderer/WorkflowRenderer.cpp
>> index f50838a..fa8066f 100644
>> --- a/src/Renderer/WorkflowRenderer.cpp
>> +++ b/src/Renderer/WorkflowRenderer.cpp
>> @@ -37,7 +37,6 @@
>>  #include "Backend/IBackend.h"
>>  #include "Backend/ISource.h"
>>  #include "Workflow/MainWorkflow.h"
>> -#include "Gui/preview/RenderWidget.h"
>>  #include "Settings/Settings.h"
>>  #include "Tools/VlmcDebug.h"
>>  #include "Workflow/Types.h"
>> @@ -88,8 +87,8 @@ WorkflowRenderer::setupRenderer( quint32 width, quint32 height, double fps, cons
>>      m_sourceRenderer = m_source->createRenderer( m_eventWatcher );
>>      m_sourceRenderer->setName( "WorkflowRenderer" );
>>      m_sourceRenderer->enableMemoryInput( m_esHandler, getLockCallback(), getUnlockCallback() );
>> -    if ( m_renderWidget != nullptr )
>> -        m_sourceRenderer->setOutputWidget( (void *) static_cast< RenderWidget* >( m_renderWidget )->id() );
>> +    if ( m_renderWidgetId != 0 )
>> +        m_sourceRenderer->setOutputWidget( (void *) m_renderWidgetId );
>>  }
>>
>>  int
>>
>
> While I like the idea of not passing a widget to the WorkflowRenderer, I
> think we should probably abstract the renderer target more.
> For instance, this won't work when we try to stream the preview through
> HTTP in the case of the web UI.
> This might require to add an interface in the backend namespace... I'm a
> bit unsure yet.
>
> --
> Hugo Beauzée-Luyssen
> www.beauzee.fr
> _______________________________________________
> Vlmc-devel mailing list
> Vlmc-devel at videolan.org
> https://mailman.videolan.org/listinfo/vlmc-devel


More information about the Vlmc-devel mailing list