Skip to content

Commit

Permalink
[mmalrenderer] Remove release thread - shouldn't be required
Browse files Browse the repository at this point in the history
  • Loading branch information
popcornmix committed May 8, 2015
1 parent b4b9bff commit b0a00ba
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 27 deletions.
22 changes: 2 additions & 20 deletions xbmc/cores/VideoRenderers/MMALRenderer.cpp
Expand Up @@ -76,7 +76,8 @@ void CMMALRenderer::vout_input_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *
buffer->flags &= ~MMAL_BUFFER_HEADER_FLAG_USER2;
if (m_format == RENDER_FMT_MMAL)
{
mmal_queue_put(m_release_queue, buffer);
CMMALVideoBuffer *omvb = (CMMALVideoBuffer *)buffer->user_data;
omvb->Release();
}
else if (m_format == RENDER_FMT_YUV420P)
{
Expand Down Expand Up @@ -194,43 +195,24 @@ bool CMMALRenderer::init_vout(ERenderFormat format)
return true;
}

void CMMALRenderer::Process()
{
MMAL_BUFFER_HEADER_T *buffer;
while (buffer = mmal_queue_wait(m_release_queue), buffer && buffer != &m_quit_packet)
{
CMMALVideoBuffer *omvb = (CMMALVideoBuffer *)buffer->user_data;
omvb->Release();
}
m_sync.Set();
}

CMMALRenderer::CMMALRenderer()
: CThread("CMMALRenderer")
{
CLog::Log(LOGDEBUG, "%s::%s", CLASSNAME, __func__);
m_vout = NULL;
m_vout_input = NULL;
m_vout_input_pool = NULL;
memset(m_buffers, 0, sizeof m_buffers);
mmal_buffer_header_reset(&m_quit_packet);
m_release_queue = mmal_queue_create();
m_iFlags = 0;
m_format = RENDER_FMT_NONE;
m_bConfigured = false;
m_bMMALConfigured = false;
m_iYV12RenderBuffer = 0;
Create();
}

CMMALRenderer::~CMMALRenderer()
{
CSingleLock lock(m_sharedSection);
CLog::Log(LOGDEBUG, "%s::%s", CLASSNAME, __func__);
// shutdown thread
mmal_queue_put(m_release_queue, &m_quit_packet);
m_sync.Wait();
mmal_queue_destroy(m_release_queue);
UnInit();
}

Expand Down
8 changes: 1 addition & 7 deletions xbmc/cores/VideoRenderers/MMALRenderer.h
Expand Up @@ -28,7 +28,6 @@
#include "settings/VideoSettings.h"
#include "cores/dvdplayer/DVDStreamInfo.h"
#include "guilib/Geometry.h"
#include "threads/Thread.h"
#include "BaseRenderer.h"

#include <interface/mmal/mmal.h>
Expand All @@ -43,7 +42,7 @@ class CMMALVideoBuffer;

struct DVDVideoPicture;

class CMMALRenderer : public CBaseRenderer, public CThread
class CMMALRenderer : public CBaseRenderer
{
struct YUVBUFFER
{
Expand All @@ -56,7 +55,6 @@ class CMMALRenderer : public CBaseRenderer, public CThread

virtual void Update();
virtual void SetupScreenshot() {};
virtual void Process();

bool RenderCapture(CRenderCapture* capture);

Expand Down Expand Up @@ -113,10 +111,6 @@ class CMMALRenderer : public CBaseRenderer, public CThread
MMAL_PORT_T *m_vout_input;
MMAL_POOL_T *m_vout_input_pool;

MMAL_QUEUE_T *m_release_queue;
CEvent m_sync;
MMAL_BUFFER_HEADER_T m_quit_packet;

bool init_vout(ERenderFormat format);
void ReleaseBuffers();
void UnInitMMAL();
Expand Down

0 comments on commit b0a00ba

Please sign in to comment.