EGL: Ensure surfaces are disconnected when destroyed
When eglDestroySurface is called, remove all references to the surface
in all contexts. This ensures that the surface is disconnected
immediately.
Bug 27455025
Change-Id: I0edaf039d320dc40122657db32abdc418665841a
diff --git a/opengl/libs/EGL/egl_object.h b/opengl/libs/EGL/egl_object.h
index 17a8304..8268900 100644
--- a/opengl/libs/EGL/egl_object.h
+++ b/opengl/libs/EGL/egl_object.h
@@ -40,11 +40,12 @@
class egl_display_t;
class egl_object_t {
- egl_display_t *display;
mutable volatile int32_t count;
protected:
virtual ~egl_object_t();
+ virtual void terminate();
+ egl_display_t *display;
public:
egl_object_t(egl_display_t* display);
@@ -55,7 +56,6 @@
inline egl_display_t* getDisplay() const { return display; }
private:
- void terminate();
static bool get(egl_display_t const* display, egl_object_t* object);
public:
@@ -143,6 +143,7 @@
class egl_context_t: public egl_object_t {
protected:
~egl_context_t() {}
+ void terminate() override;
public:
typedef egl_object_t::LocalRef<egl_context_t, EGLContext> Ref;