static EGLBoolean egl_g3d_terminate(_EGLDriver *drv, _EGLDisplay *dpy) { struct egl_g3d_display *gdpy = egl_g3d_display(dpy); _eglReleaseDisplayResources(drv, dpy); if (dpy->Configs) { _eglDestroyArray(dpy->Configs, egl_g3d_free_config); dpy->Configs = NULL; } if (dpy->Screens) { _eglDestroyArray(dpy->Screens, egl_g3d_free_screen); dpy->Screens = NULL; } _eglCleanupDisplay(dpy); if (gdpy->smapi) egl_g3d_destroy_st_manager(gdpy->smapi); if (gdpy->native) gdpy->native->destroy(gdpy->native); FREE(gdpy); dpy->DriverData = NULL; return EGL_TRUE; }
/** * Unload all drivers. */ void _eglUnloadDrivers(void) { /* this is called at atexit time */ if (_eglModules) { #if defined(_EGL_OS_UNIX) _eglDestroyArray(_eglModules, _eglFreeModule); #elif defined(_EGL_OS_WINDOWS) /* XXX Windows unloads DLLs before atexit */ _eglDestroyArray(_eglModules, NULL); #endif _eglModules = NULL; } }
/** * Unload all drivers. */ void _eglUnloadDrivers(void) { /* this is called at atexit time */ if (_eglModules) { _eglDestroyArray(_eglModules, _eglFreeModule); _eglModules = NULL; } }
/** * Free all the data hanging of an _EGLDisplay object, but not * the object itself. */ void _eglCleanupDisplay(_EGLDisplay *disp) { if (disp->Configs) { _eglDestroyArray(disp->Configs, free); disp->Configs = NULL; } /* XXX incomplete */ }