[Android] Qualcomm drivers require that the EGL context is created on the same thread that the OpenGL commands are run on. Crappy driver limitation since eglMakeCurrent should work to let it be on a different thread.

This commit is contained in:
Ryan Houdek 2013-05-25 22:17:05 -05:00
parent ca12e7ee8f
commit 61aa272bfb
1 changed files with 13 additions and 10 deletions

View File

@ -39,7 +39,7 @@ namespace SW
static volatile bool fifoStateRun = false;
static volatile bool emuRunningState = false;
static std::mutex m_csSWVidOccupied;
static void* m_windowhandle;
std::string VideoSoftware::GetName()
{
@ -62,15 +62,9 @@ void VideoSoftware::ShowConfig(void *_hParent)
bool VideoSoftware::Initialize(void *&window_handle)
{
g_SWVideoConfig.Load((File::GetUserPath(D_CONFIG_IDX) + "gfx_software.ini").c_str());
InitInterface();
if (!GLInterface->Create(window_handle))
{
INFO_LOG(VIDEO, "%s", "SWRenderer::Create failed\n");
return false;
}
// Do our OSD callbacks
OSD::DoCallbacks(OSD::OSD_INIT);
InitInterface();
m_windowhandle = window_handle;
InitBPMemory();
InitXFMemory();
@ -166,6 +160,12 @@ void VideoSoftware::Video_Cleanup()
// This is called after Video_Initialize() from the Core
void VideoSoftware::Video_Prepare()
{
if (!GLInterface->Create(m_windowhandle))
{
INFO_LOG(VIDEO, "%s", "SWRenderer::Create failed\n");
return;
}
GLInterface->MakeCurrent();
// Init extension support.
#ifndef USE_GLES
@ -180,6 +180,9 @@ void VideoSoftware::Video_Prepare()
// Handle VSync on/off
GLInterface->SwapInterval(VSYNC_ENABLED);
// Do our OSD callbacks
OSD::DoCallbacks(OSD::OSD_INIT);
HwRasterizer::Prepare();
SWRenderer::Prepare();