st/egl: Properly convert vrefresh to refresh rate.
authorChia-I Wu <olv@lunarg.com>
Sun, 21 Feb 2010 02:11:54 +0000 (10:11 +0800)
committerChia-I Wu <olv@lunarg.com>
Sun, 21 Feb 2010 02:22:08 +0000 (10:22 +0800)
Some kernels have vrefresh = (refresh rate * 1000) while others don't.
Use some heuristics here.

src/gallium/state_trackers/egl/kms/native_kms.c

index 91cefc538d14a76696a9a699cc9f16a1886f9593..ee6ab2e60b8545516bd5ea069a28aed210fb90c7 100644 (file)
@@ -499,7 +499,10 @@ kms_display_get_modes(struct native_display *ndpy,
       kmode->base.desc = kmode->mode.name;
       kmode->base.width = kmode->mode.hdisplay;
       kmode->base.height = kmode->mode.vdisplay;
-      kmode->base.refresh_rate = kmode->mode.vrefresh / 1000;
+      kmode->base.refresh_rate = kmode->mode.vrefresh;
+      /* not all kernels have vrefresh = refresh_rate * 1000 */
+      if (kmode->base.refresh_rate > 1000)
+         kmode->base.refresh_rate = (kmode->base.refresh_rate + 500) / 1000;
    }
 
    nmodes_return = malloc(count * sizeof(*nmodes_return));