Revert "EGL: Ensure surfaces are disconnected when destroyed"
This reverts commit 541de498ec7356c5e4af92500cf2fb8fc707fd50.
Bug 28295465
Change-Id: If81ed4a5a73a9612579b58291c37c7830ea1f7db
diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp
index 943906f..e7703d8 100644
--- a/opengl/libs/EGL/eglApi.cpp
+++ b/opengl/libs/EGL/eglApi.cpp
@@ -603,7 +603,6 @@
EGLBoolean result = s->cnx->egl.eglDestroySurface(dp->disp.dpy, s->surface);
if (result == EGL_TRUE) {
_s.terminate();
- dp->removeSurface(surface);
}
return result;
}
diff --git a/opengl/libs/EGL/egl_display.cpp b/opengl/libs/EGL/egl_display.cpp
index d849693..6a9d7b6 100644
--- a/opengl/libs/EGL/egl_display.cpp
+++ b/opengl/libs/EGL/egl_display.cpp
@@ -89,31 +89,6 @@
return false;
}
-void egl_display_t::addContext(egl_context_t* context) {
- Mutex::Autolock _l(lock);
- contexts.add(context);
-}
-
-void egl_display_t::removeContext(egl_context_t* context) {
- Mutex::Autolock _l(lock);
- contexts.remove(context);
-}
-
-void egl_display_t::removeSurface(EGLSurface surface) const {
- Mutex::Autolock _l(lock);
- for (size_t i = 0; i < contexts.size(); i++) {
- egl_context_t* context = contexts[i];
- if (context->read == surface) {
- SurfaceRef _r(get_surface(context->read));
- _r.release();
- }
- if (context->draw == surface) {
- SurfaceRef _d(get_surface(context->draw));
- _d.release();
- }
- }
-}
-
EGLDisplay egl_display_t::getFromNativeDisplay(EGLNativeDisplayType disp) {
if (uintptr_t(disp) >= NUM_DISPLAYS)
return NULL;
diff --git a/opengl/libs/EGL/egl_display.h b/opengl/libs/EGL/egl_display.h
index 0ede705..2d86295 100644
--- a/opengl/libs/EGL/egl_display.h
+++ b/opengl/libs/EGL/egl_display.h
@@ -68,13 +68,6 @@
// add reference to this object. returns true if this is a valid object.
bool getObject(egl_object_t* object) const;
- // add context to this display's list
- void addContext(egl_context_t* context);
- // remove context from this display's list
- void removeContext(egl_context_t* context);
- // search for surface on all contexts and remove the references
- void removeSurface(EGLSurface surface) const;
-
// These notifications allow the display to keep track of how many window
// surfaces exist, which it uses to decide whether to hibernate the
// underlying EGL implementation. They can be called by any thread without
@@ -142,7 +135,6 @@
mutable Mutex lock, refLock;
mutable Condition refCond;
SortedVector<egl_object_t*> objects;
- SortedVector<egl_context_t*> contexts;
String8 mVendorString;
String8 mVersionString;
String8 mClientApiString;
diff --git a/opengl/libs/EGL/egl_object.cpp b/opengl/libs/EGL/egl_object.cpp
index 8859387..918faa8 100644
--- a/opengl/libs/EGL/egl_object.cpp
+++ b/opengl/libs/EGL/egl_object.cpp
@@ -91,12 +91,6 @@
egl_connection_t const* cnx, int version) :
egl_object_t(get_display_nowake(dpy)), dpy(dpy), context(context),
config(config), read(0), draw(0), cnx(cnx), version(version) {
- get_display_nowake(dpy)->addContext(this);
-}
-
-void egl_context_t::terminate() {
- display->removeContext(this);
- egl_object_t::terminate();
}
void egl_context_t::onLooseCurrent() {
diff --git a/opengl/libs/EGL/egl_object.h b/opengl/libs/EGL/egl_object.h
index 8268900..17a8304 100644
--- a/opengl/libs/EGL/egl_object.h
+++ b/opengl/libs/EGL/egl_object.h
@@ -40,12 +40,11 @@
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);
@@ -56,6 +55,7 @@
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,7 +143,6 @@
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;