Merge commit 'origin/gallium-0.1' into gallium-0.2
[mesa.git] / src / egl / main / egldisplay.c
index 8fd29b842165ca2a7d176f36ae535b6052407b57..47a2323eafb3923e508fdb9527dcc64c3983d243 100644 (file)
@@ -68,8 +68,9 @@ _EGLDisplay *
 _eglLookupDisplay(EGLDisplay dpy)
 {
    EGLuint key = (EGLuint) dpy;
-   _EGLDisplay *d = (_EGLDisplay *) _eglHashLookup(_eglGlobal.Displays, key);
-   return d;
+   if (!_eglGlobal.Displays)
+      return NULL;
+   return (_EGLDisplay *) _eglHashLookup(_eglGlobal.Displays, key);
 }
 
 
@@ -96,11 +97,25 @@ _eglGetCurrentDisplay(void)
 }
 
 
+/**
+ * Free all the data hanging of an _EGLDisplay object, but not
+ * the object itself.
+ */
 void
 _eglCleanupDisplay(_EGLDisplay *disp)
 {
-   /* XXX incomplete */
+   EGLint i;
+
+   for (i = 0; i < disp->NumConfigs; i++) {
+      free(disp->Configs[i]);
+   }
    free(disp->Configs);
+   disp->Configs = NULL;
+
+   /* XXX incomplete */
+
    free((void *) disp->DriverName);
-   /* driver deletes _EGLDisplay */
+   disp->DriverName = NULL;
+
+   /* driver deletes the _EGLDisplay object */
 }