Revision: 75491
          http://sourceforge.net/p/brlcad/code/75491
Author:   starseeker
Date:     2020-04-21 15:05:35 +0000 (Tue, 21 Apr 2020)
Log Message:
-----------
rework dm_bestXType

Modified Paths:
--------------
    brlcad/branches/dm-fb-merge/src/libdm/dm-generic.c

Modified: brlcad/branches/dm-fb-merge/src/libdm/dm-generic.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/dm-generic.c  2020-04-21 14:43:59 UTC 
(rev 75490)
+++ brlcad/branches/dm-fb-merge/src/libdm/dm-generic.c  2020-04-21 15:05:35 UTC 
(rev 75491)
@@ -204,64 +204,62 @@
 /** dm_bestXType determines what mged will normally
   * use as the default display manager
   */
-
-char *
-#if !defined(DM_WGL) && !defined(DM_OGL) && !defined(DM_OSGL) && !defined(DM_X)
-dm_bestXType(const char *UNUSED(dpy_string))
-#else
+const char *
 dm_bestXType(const char *dpy_string)
-#endif
 {
+    static const char *priority_list[] = {"osgl", "wgl", "ogl", "X", "tk", 
"nu"};
 
+    int i = 0;
+    const char *b = priority_list[i];
+    while (!BU_STR_EQUAL(b, "nu")) {
+
+       if (BU_STR_EQUIV(b, "txt")) {
+           if (dm_txt.i->dm_viable(dpy_string) == 1) return b;
+       }
+       if (BU_STR_EQUIV(b, "plot")) {
+           if (dm_plot.i->dm_viable(dpy_string) == 1) return b;
+       }
+       if (BU_STR_EQUIV(b, "ps")) {
+           if (dm_ps.i->dm_viable(dpy_string) == 1) return b;
+       }
+#if defined(DM_OGL)
+       if (BU_STR_EQUIV(b, "ogl")) {
+           if (dm_ogl.i->dm_viable(dpy_string) == 1) return b;
+       }
+#endif
 #ifdef DM_OSGL
-    return "osgl";
+       if (BU_STR_EQUAL(b, "osgl")) {
+           if (dm_osgl.i->dm_viable(dpy_string) == 1) return b;
+       }
 #endif
-
-#ifdef DM_WGL
-    /* should probably make sure wgl works */
-    return "wgl";
+#if defined(DM_QT)
+       if (BU_STR_EQUIV(b, "qt")) {
+           if (dm_qt.i->dm_viable(dpy_string) == 1) return b;
+       }
 #endif
-
-#ifdef DM_OGL
-    {
-       Display *dpy;
-       int return_val;
-       if (dpy_string) {
-           if ((dpy = XOpenDisplay(dpy_string)) != NULL) {
-               if (XQueryExtension(dpy, "GLX", &return_val, &return_val, 
&return_val)) {
-                   XCloseDisplay(dpy);
-                   return "ogl";
-               }
-               XCloseDisplay(dpy);
-           }
-       } else {
-           return "ogl";
+#if defined(DM_TK)
+       if (BU_STR_EQUIV(b, "tk")) {
+           if (dm_tk.i->dm_viable(dpy_string) == 1) return b;
        }
-    }
 #endif
-
-#ifdef DM_X
-    {
-       if (dpy_string) {
-       Display *dpy;
-       if ((dpy = XOpenDisplay(dpy_string)) != NULL) {
-           XCloseDisplay(dpy);
-           return "X";
+#if defined(DM_X)
+       if (BU_STR_EQUIV(b, "X")) {
+           if (dm_X.i->dm_viable(dpy_string) == 1) return b;
        }
-       } else {
-           return "X";
+#endif
+#if defined(DM_WGL)
+       if (BU_STR_EQUIV(b, "wgl")) {
+           if (dm_wgl.i->dm_viable(dpy_string) == 1) return b;
        }
-    }
 #endif
 
-#ifdef DM_TK
-    return "tk";
-#endif
+       i++;
+       b = priority_list[i];
+    }
 
-    return "nu";
+    return b;
 }
 
-
 /**
  * dm_default_type suggests a display manager
  *

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to