Added EGL_SCREEN_POSITION_GRANULARITY_MESA query.
authorBrian Paul <brian.paul@tungstengraphics.com>
Sat, 10 Dec 2005 17:53:07 +0000 (17:53 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Sat, 10 Dec 2005 17:53:07 +0000 (17:53 +0000)
Rename eglShowSurfaceMESA to eglShowScreenSurfaceMESA.

src/egl/main/eglscreen.c
src/egl/main/eglscreen.h

index c4cc8bfe1ac2a6eb5e1a349f788a2a37a3ddd43b..d8ec5b5f733f1d3ff5a9c8c6c939228f0460f4dc 100644 (file)
@@ -29,8 +29,9 @@
 void
 _eglInitScreen(_EGLScreen *screen)
 {
-   /* just init to zero for now */
    memset(screen, 0, sizeof(_EGLScreen));
+   screen->StepX = 1;
+   screen->StepY = 1;
 }
 
 
@@ -141,8 +142,9 @@ _eglCreateScreenSurfaceMESA(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config,
  * this with code that _really_ shows the surface.
  */
 EGLBoolean
-_eglShowSurfaceMESA(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen,
-                    EGLSurface surface, EGLModeMESA m)
+_eglShowScreenSurfaceMESA(_EGLDriver *drv, EGLDisplay dpy,
+                          EGLScreenMESA screen, EGLSurface surface,
+                          EGLModeMESA m)
 {
    _EGLScreen *scrn = _eglLookupScreen(dpy, screen);
    _EGLMode *mode = _eglLookupMode(dpy, m);
@@ -158,7 +160,8 @@ _eglShowSurfaceMESA(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen,
 
    if (surface == EGL_NO_SURFACE) {
       scrn->CurrentSurface = NULL;
-   } else {
+   }
+   else {
       _EGLSurface *surf = _eglLookupSurface(surface);
       if (!surf || surf->Type != EGL_SCREEN_BIT_MESA) {
          _eglError(EGL_BAD_SURFACE, "eglShowSurfaceMESA");
@@ -269,6 +272,10 @@ _eglQueryScreenMESA(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen,
       value[0] = scrn->OriginX;
       value[1] = scrn->OriginY;
       break;
+   case EGL_SCREEN_POSITION_GRANULARITY_MESA:
+      value[0] = scrn->StepX;
+      value[1] = scrn->StepY;
+      break;
    default:
       _eglError(EGL_BAD_ATTRIBUTE, "eglQueryScreenMESA");
       return EGL_FALSE;
@@ -278,10 +285,21 @@ _eglQueryScreenMESA(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen,
 }
 
 
+/**
+ * Delete the modes associated with given screen.
+ */
 void
 _eglDestroyScreenModes(_EGLScreen *scrn)
 {
-   free(scrn->Modes);
+   EGLint i;
+   for (i = 0; i < scrn->NumModes; i++) {
+      if (scrn->Modes[i].Name)
+         free((char *) scrn->Modes[i].Name); /* cast away const */
+   }
+   if (scrn->Modes)
+      free(scrn->Modes);
+   scrn->Modes = NULL;
+   scrn->NumModes = 0;
 }
 
       
index 64198446aeef89c950ef803029266cdd8a627803..5d1cff9284aec571cc494d7767a8172d80669e81 100644 (file)
@@ -22,10 +22,12 @@ struct _egl_screen
 
    _EGLMode *CurrentMode;
    _EGLSurface *CurrentSurface;
-   EGLint OriginX, OriginY;
+
+   EGLint OriginX, OriginY; /**< Origin of scan-out region w.r.t. surface */
+   EGLint StepX, StepY;     /**< Screen position/origin granularity */
 
    EGLint NumModes;
-   _EGLMode *Modes;  /* array [NumModes] */
+   _EGLMode *Modes;  /**< array [NumModes] */
 };
 
 
@@ -50,7 +52,7 @@ _eglCreateScreenSurfaceMESA(_EGLDriver *drv, EGLDisplay dpy, EGLConfig config, c
 
 
 extern EGLBoolean
-_eglShowSurfaceMESA(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLSurface surface, EGLModeMESA mode);
+_eglShowScreenSurfaceMESA(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen, EGLSurface surface, EGLModeMESA mode);
 
 
 extern EGLBoolean