diff options
Diffstat (limited to 'src/angle/patches/0013-ANGLE-clean-up-displays-on-dll-unload.patch')
-rw-r--r-- | src/angle/patches/0013-ANGLE-clean-up-displays-on-dll-unload.patch | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/src/angle/patches/0013-ANGLE-clean-up-displays-on-dll-unload.patch b/src/angle/patches/0013-ANGLE-clean-up-displays-on-dll-unload.patch deleted file mode 100644 index fce3fd76b2..0000000000 --- a/src/angle/patches/0013-ANGLE-clean-up-displays-on-dll-unload.patch +++ /dev/null @@ -1,78 +0,0 @@ -From d8ca4f6d0d8fffd8319f340685e03751049678ae Mon Sep 17 00:00:00 2001 -From: Oliver Wolff <oliver.wolff@qt.io> -Date: Tue, 16 Apr 2019 10:19:27 +0200 -Subject: [PATCH] ANGLE: clean up displays on dll unload - -If the displays are not cleaned up on dll unloading, profilers might -report memory leaks. - -Change-Id: I04cbc3c2448bfb450f7d840e216827f86856e963 ---- - src/3rdparty/angle/src/libANGLE/Display.cpp | 17 +++++++++++++++++ - src/3rdparty/angle/src/libANGLE/Display.h | 1 + - .../angle/src/libGLESv2/global_state.cpp | 2 ++ - 3 files changed, 20 insertions(+) - -diff --git a/src/3rdparty/angle/src/libANGLE/Display.cpp b/src/3rdparty/angle/src/libANGLE/Display.cpp -index 735b472787..0bb0bb05b1 100644 ---- a/src/3rdparty/angle/src/libANGLE/Display.cpp -+++ b/src/3rdparty/angle/src/libANGLE/Display.cpp -@@ -364,6 +364,23 @@ Display *Display::GetDisplayFromDevice(Device *device, const AttributeMap &attri - return display; - } - -+//static -+void Display::CleanupDisplays() -+{ -+ // ~Display takes care of removing the entry from the according map -+ { -+ ANGLEPlatformDisplayMap *displays = GetANGLEPlatformDisplayMap(); -+ while (!displays->empty()) -+ delete displays->begin()->second; -+ } -+ -+ { -+ DevicePlatformDisplayMap *displays = GetDevicePlatformDisplayMap(); -+ while (!displays->empty()) -+ delete displays->begin()->second; -+ } -+} -+ - Display::Display(EGLenum platform, EGLNativeDisplayType displayId, Device *eglDevice) - : mImplementation(nullptr), - mDisplayId(displayId), -diff --git a/src/3rdparty/angle/src/libANGLE/Display.h b/src/3rdparty/angle/src/libANGLE/Display.h -index aa1d1c3b37..2a1c386d75 100644 ---- a/src/3rdparty/angle/src/libANGLE/Display.h -+++ b/src/3rdparty/angle/src/libANGLE/Display.h -@@ -65,6 +65,7 @@ class Display final : angle::NonCopyable - static Display *GetDisplayFromDevice(Device *device, const AttributeMap &attribMap); - static Display *GetDisplayFromNativeDisplay(EGLNativeDisplayType nativeDisplay, - const AttributeMap &attribMap); -+ static void CleanupDisplays(); - - static const ClientExtensions &GetClientExtensions(); - static const std::string &GetClientExtensionString(); -diff --git a/src/3rdparty/angle/src/libGLESv2/global_state.cpp b/src/3rdparty/angle/src/libGLESv2/global_state.cpp -index c5f3dfe4e1..26045bf5b2 100644 ---- a/src/3rdparty/angle/src/libGLESv2/global_state.cpp -+++ b/src/3rdparty/angle/src/libGLESv2/global_state.cpp -@@ -13,6 +13,7 @@ - #include "common/tls.h" - - #include "libANGLE/Thread.h" -+#include "libANGLE/Display.h" - - namespace gl - { -@@ -140,6 +141,7 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE, DWORD reason, LPVOID) - return static_cast<BOOL>(egl::DeallocateCurrentThread()); - - case DLL_PROCESS_DETACH: -+ egl::Display::CleanupDisplays(); - return static_cast<BOOL>(egl::TerminateProcess()); - } - --- -2.20.1.windows.1 - |