rpcsx/rpcs3/Emu/RSX/GSRender.cpp

57 lines
772 B
C++
Raw Normal View History

#include "stdafx.h"
2014-09-11 21:18:19 +02:00
#include "Emu/Memory/Memory.h"
#include "Emu/System.h"
#include "GSRender.h"
draw_context_t GSFrameBase::new_context()
{
if (void* context = make_context())
{
return std::shared_ptr<void>(context, [this](void* ctxt) { delete_context(ctxt); });
}
return nullptr;
}
2017-05-20 13:45:02 +02:00
GSRender::GSRender()
{
2017-05-20 13:45:02 +02:00
m_frame = Emu.GetCallbacks().get_gs_frame().release();
}
GSRender::~GSRender()
{
m_context = nullptr;
if (m_frame)
{
2015-11-26 09:06:29 +01:00
m_frame->hide();
m_frame->close();
}
}
2016-02-01 22:50:02 +01:00
void GSRender::on_init_rsx()
{
if (m_frame)
{
m_frame->show();
}
}
2015-11-26 09:06:29 +01:00
void GSRender::on_init_thread()
{
if (m_frame)
{
m_context = m_frame->new_context();
m_frame->set_current(m_context);
}
}
void GSRender::flip(int buffer)
{
if (m_frame)
2015-11-26 09:06:29 +01:00
{
m_frame->flip(m_context);
2015-11-26 09:06:29 +01:00
}
2015-10-21 09:24:02 +02:00
}