diff options
| author | Mat M <mathew1800@gmail.com> | 2016-09-30 19:15:50 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-09-30 19:15:50 -0400 |
| commit | 46b9383280a623753686ab6df6c479e784e416ae (patch) | |
| tree | 9ffb2cbdba6d39a29d6fed9df4db03166755a20d /Source/Core/VideoBackends/OGL/Render.cpp | |
| parent | f3cdc6433cba253fa4485cd7e27025c31410ed0c (diff) | |
| parent | a8194cff3ca8f9b85a779da6b8214b58ba3fa7d0 (diff) | |
Merge pull request #3935 from stenzek/vulkan-pr
Vulkan Backend
Diffstat (limited to 'Source/Core/VideoBackends/OGL/Render.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Render.cpp | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 95be3867a7..c1e8165b9b 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -327,7 +327,7 @@ static void InitDriverInfo() default: break; } - DriverDetails::Init(vendor, driver, version, family); + DriverDetails::Init(DriverDetails::API_OPENGL, vendor, driver, version, family); } // Init functions @@ -1620,12 +1620,16 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, OSD::DoCallbacks(OSD::CallbackType::OnFrame); OSD::DrawMessages(); - if (s_SurfaceNeedsChanged.IsSet()) +#ifdef ANDROID + if (s_surface_needs_change.IsSet()) { + GLInterface->UpdateHandle(s_new_surface_handle); GLInterface->UpdateSurface(); - s_SurfaceNeedsChanged.Clear(); - s_ChangedSurface.Set(); + s_new_surface_handle = nullptr; + s_surface_needs_change.Clear(); + s_surface_changed.Set(); } +#endif // Copy the rendered frame to the real window GLInterface->Swap(); @@ -1814,4 +1818,16 @@ int Renderer::GetMaxTextureSize() glGetIntegerv(GL_MAX_TEXTURE_SIZE, &s_max_texture_size); return s_max_texture_size; } + +void Renderer::ChangeSurface(void* new_surface_handle) +{ +// Win32 polls the window size when redrawing, X11 runs an event loop in another thread. +// This is only necessary for Android at this point, although handling resizes here +// would be more efficient than polling. +#ifdef ANDROID + s_new_surface_handle = new_surface_handle; + s_surface_needs_change.Set(); + s_surface_changed.Wait(); +#endif +} } |
