Fix destruction order of singleton objects and resolve hang GLES issue.

Change-Id: I9df42d4255b371b275a74aa521406e6796ee436b
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/113901
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Tested-by: Anthony Barbier <anthony.barbier@arm.com>
diff --git a/arm_compute/core/GLES_COMPUTE/GCKernelLibrary.h b/arm_compute/core/GLES_COMPUTE/GCKernelLibrary.h
index db2d979..34bd567 100644
--- a/arm_compute/core/GLES_COMPUTE/GCKernelLibrary.h
+++ b/arm_compute/core/GLES_COMPUTE/GCKernelLibrary.h
@@ -191,14 +191,13 @@
 private:
     /** Default Constructor. */
     GCKernelLibrary();
+    ~GCKernelLibrary();
 
 public:
     /** Prevent instances of this class from being copied. */
     GCKernelLibrary(const GCKernelLibrary &) = delete;
     /** Prevent instances of this class from being copied. */
     const GCKernelLibrary &operator=(const GCKernelLibrary &) = delete;
-    /** Default Destructor. */
-    ~GCKernelLibrary();
 
     static GCKernelLibrary &get();
     /** Initialises the kernel library.
@@ -215,13 +214,6 @@
         _display = dpy;
         _context = ctx;
 
-        if(_display == EGL_NO_DISPLAY || _context == EGL_NO_CONTEXT)
-        {
-            setup_context();
-
-            _own_context = true;
-        }
-
         eglMakeCurrent(_display, EGL_NO_SURFACE, EGL_NO_SURFACE, _context);
         setup_dummy_fbo();
     }
@@ -289,15 +281,11 @@
      * @return Concatenated string.
      */
     std::string stringify_set(const StringSet &s) const;
-    /** Set up EGL context.
-     */
-    void setup_context();
 
     EGLDisplay  _display;                                                /**< Underlying EGL Display. */
     EGLContext  _context;                                                /**< Underlying EGL Context. */
     GLuint      _frame_buffer;                                           /**< Dummy fbo */
     GLuint      _tex_rt;                                                 /**< Dummy texture for render target */
-    bool        _own_context;                                            /**< Self created context or not. */
     std::string _shader_path;                                            /**< Path to the shaders folder. */
     mutable std::map<std::string, const GCProgram>  _programs_map;       /**< Map with all already loaded program data. */
     mutable std::map<std::string, const GCKernel>   _built_programs_map; /**< Map with all already built program data. */