text: // Copyright (c) 2010 The Chromium Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style license that can be
  // found in the LICENSE file.
  
  #include <stdlib.h>
  #include "third_party/mesa/MesaLib/src/egl/main/egldriver.h"
  
  /**
   * This is an EGL driver that wraps PPAPI.
   */
  
  /** Subclass of _EGLDriver */
  typedef struct _egl_driver_ppapi {
    _EGLDriver Base;  /* base class */
  } _EGLDriverPPAPI;
  
  static EGLBoolean _eglInitializePPAPI(_EGLDriver *drv,
                                        _EGLDisplay *dpy,
                                        EGLint *major,
                                        EGLint *minor) {
    return EGL_FALSE;
  }
  
  static EGLBoolean _eglTerminatePPAPI(_EGLDriver *drv,
                                       _EGLDisplay *dpy) {
    return EGL_FALSE;
  }
  
  static _EGLContext *_eglCreateContextPPAPI(_EGLDriver *drv,
                                             _EGLDisplay *dpy,
                                             _EGLConfig *config,
                                             _EGLContext *share,
                                             const EGLint *attrib_list) {
    return NULL;
  }
  
  static EGLBoolean _eglDestroyContextPPAPI(_EGLDriver *drv,
                                            _EGLDisplay *dpy,
                                            _EGLContext *ctx) {
    return EGL_FALSE;
  }
  
  static _EGLSurface *_eglCreateWindowSurfacePPAPI(_EGLDriver *drv,
                                                   _EGLDisplay *dpy,
                                                   _EGLConfig *config,
                                                   EGLNativeWindowType window,
                                                   const EGLint *attrib_list) {
    return NULL;
  }
  
  static _EGLSurface *_eglCreatePbufferSurfacePPAPI(_EGLDriver *drv,
                                                    _EGLDisplay *dpy,
                                                    _EGLConfig *config,
                                                    const EGLint *attrib_list) {
    return NULL;
  }
  
  static EGLBoolean _eglDestroySurfacePPAPI(_EGLDriver *drv,
                                            _EGLDisplay *dpy,
                                            _EGLSurface *surface) {
    return EGL_FALSE;
  }
  
  static EGLBoolean _eglSwapBuffersPPAPI(_EGLDriver *drv,
                                         _EGLDisplay *dpy,
                                         _EGLSurface *draw) {
    return EGL_FALSE;
  }
  
  static void _unloadPPAPI(_EGLDriver *drv) {
    free(drv);
  }
  
  /**
   * This is the main entrypoint into the driver, called by egl dispatch API.
   * Create a new _EGLDriver object and init its dispatch table.
   */
  _EGLDriver* _eglMain(const char *args)
  {
     _EGLDriverPPAPI *drv = (_EGLDriverPPAPI *)
         calloc(1, sizeof(_EGLDriverPPAPI));
  
     if (!drv)
        return NULL;
  
     _eglInitDriverFallbacks(&drv->Base);
     drv->Base.API.Initialize = _eglInitializePPAPI;
     drv->Base.API.Terminate = _eglTerminatePPAPI;
     drv->Base.API.CreateContext = _eglCreateContextPPAPI;
     drv->Base.API.DestroyContext = _eglDestroyContextPPAPI;
     drv->Base.API.CreateWindowSurface = _eglCreateWindowSurfacePPAPI;
     drv->Base.API.CreatePbufferSurface = _eglCreatePbufferSurfacePPAPI;
     drv->Base.API.DestroySurface = _eglDestroySurfacePPAPI;
     drv->Base.API.SwapBuffers = _eglSwapBuffersPPAPI;
  
     drv->Base.Name = "PPAPI";
     drv->Base.Unload = _unloadPPAPI;
  
     return &drv->Base;
  }
  
  