$NetBSD$

From ccfc04f813d711f8bd60a0640429498130fc6bfa Mon Sep 17 00:00:00 2001
From: Kim Woelders <kim@woelders.dk>
Date: Wed, 23 Apr 2014 11:09:04 +0200
Subject: Randr may report FPS = 0.

diff --git a/src/events.c b/src/events.c
index b7a104c..6265a76 100644
--- src/events.c
+++ src/events.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2000-2007 Carsten Haitzler, Geoff Harrison and various contributors
- * Copyright (C) 2004-2013 Kim Woelders
+ * Copyright (C) 2004-2014 Kim Woelders
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
@@ -154,10 +154,18 @@ static void
 EventsRRUpdateInfo(void)
 {
    XRRScreenConfiguration *sc;
+   int                 fps;
 
    sc = XRRGetScreenInfo(disp, WinGetXwin(VROOT));
-   Mode.screen.fps = XRRConfigCurrentRate(sc);
+   fps = XRRConfigCurrentRate(sc);
    XRRFreeScreenConfigInfo(sc);
+
+   /* We may get e.g. fps = 0 (Xephyr) */
+   if (fps > 0 && fps < 240)
+      Mode.screen.fps = fps;
+
+   if (EDebug(EDBUG_TYPE_VERBOSE))
+      Eprintf("Screen refresh rate = %d(%d) Hz\n", Mode.screen.fps, fps);
 }
 
 static void
@@ -175,11 +183,6 @@ ExtInitRR(int available)
    Mode.screen.rotation = rot;
 
    EventsRRUpdateInfo();
-
-   if (EDebug(EDBUG_TYPE_VERBOSE))
-     {
-	Eprintf("Screen refresh rate = %d Hz\n", Mode.screen.fps);
-     }
 }
 
 void
@@ -345,12 +348,11 @@ EventsInit(void)
 
    memset(ExtData, 0, sizeof(ExtData));
 
+   Mode.screen.fps = 60;	/* If not randr or weirdness */
+
    for (i = 0; i < sizeof(Extensions) / sizeof(EServerExt); i++)
       ExtQuery(Extensions + i);
 
-   if (Mode.screen.fps <= 0 || Mode.screen.fps > 240)
-      Mode.screen.fps = 60;	/* If not randr or weirdness */
-
 #if USE_COMPOSITE
 #define XEXT_MASK_CM_ALL ((1 << XEXT_COMPOSITE) | (1 << XEXT_DAMAGE) | \
                           (1 << XEXT_FIXES) | (1 << XEXT_RENDER))
-- 
cgit v0.10.1
