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/src/runtime/CL/CLScheduler.cpp b/src/runtime/CL/CLScheduler.cpp
index 71a749f..bf13a25 100644
--- a/src/runtime/CL/CLScheduler.cpp
+++ b/src/runtime/CL/CLScheduler.cpp
@@ -28,6 +28,8 @@
 
 using namespace arm_compute;
 
+std::once_flag CLScheduler::_initialize_symbols;
+
 CLScheduler::CLScheduler()
     : _context(), _queue(), _target(GPUTarget::MIDGARD), _is_initialised(false), _cl_tuner()
 {
@@ -35,6 +37,7 @@
 
 CLScheduler &CLScheduler::get()
 {
+    std::call_once(_initialize_symbols, opencl_is_available);
     static CLScheduler scheduler;
     return scheduler;
 }
@@ -59,4 +62,4 @@
     {
         _queue.flush();
     }
-}
\ No newline at end of file
+}