Make EGL_NO_MODE_MESA work.
authorJon Smirl <jonsmirl@gmail.com>
Tue, 17 May 2005 02:12:29 +0000 (02:12 +0000)
committerJon Smirl <jonsmirl@gmail.com>
Tue, 17 May 2005 02:12:29 +0000 (02:12 +0000)
src/egl/main/eglscreen.c
src/mesa/drivers/dri/fb/fb_egl.c

index 9669a22..230fc4a 100644 (file)
@@ -187,7 +187,7 @@ _eglShowSurfaceMESA(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen,
       _eglError(EGL_BAD_SCREEN_MESA, "eglShowSurfaceMESA");
       return EGL_FALSE;
    }
-   if (!mode) {
+   if (!mode && (m != EGL_NO_MODE_MESA )) {
       _eglError(EGL_BAD_MODE_MESA, "eglShowSurfaceMESA");
       return EGL_FALSE;
    }
index 8af14d1..d83d264 100644 (file)
@@ -731,7 +731,7 @@ fbShowSurfaceMESA(_EGLDriver *drv, EGLDisplay dpy, EGLScreenMESA screen,
    if (!_eglShowSurfaceMESA(drv, dpy, screen, surface, m))
       return EGL_FALSE;
       
-   snprintf(buffer, sizeof(buffer), "%s/%s/mode", sysfs, scrn->fb);
+   snprintf(buffer, sizeof(buffer), "%s/%s/blank", sysfs, scrn->fb);
    
    file = fopen(buffer, "r+");
    if (!file) {
@@ -739,6 +739,18 @@ err:
       printf("chown all fb sysfs attrib to allow write - %s\n", buffer);
       return EGL_FALSE;
    }
+   snprintf(buffer, sizeof(buffer), "%d", (m == EGL_NO_MODE_MESA ? VESA_POWERDOWN : VESA_HSYNC_SUSPEND));
+   fputs(buffer, file);
+   fclose(file);
+   
+   if (m == EGL_NO_MODE_MESA)
+      return EGL_TRUE;
+   
+   snprintf(buffer, sizeof(buffer), "%s/%s/mode", sysfs, scrn->fb);
+   
+   file = fopen(buffer, "r+");
+   if (!file)
+      goto err;
    fputs(mode->Name, file);
    fclose(file);
    
@@ -751,6 +763,14 @@ err:
    fputs(buffer, file);
    fclose(file);
 
+   file = fopen(buffer, "r+");
+   if (!file)
+      goto err;
+      
+   snprintf(buffer, sizeof(buffer), "%d", VESA_NO_BLANKING);
+   fputs(buffer, file);
+   fclose(file);
+   
    return EGL_TRUE;
 }