Revision: 75490
          http://sourceforge.net/p/brlcad/code/75490
Author:   starseeker
Date:     2020-04-21 14:43:59 +0000 (Tue, 21 Apr 2020)
Log Message:
-----------
A couple of the commands appear to test at runtime if a backend can work - 
shift those tests down to the backend layer

Modified Paths:
--------------
    brlcad/branches/dm-fb-merge/src/libdm/X/dm-X.c
    brlcad/branches/dm-fb-merge/src/libdm/dm-generic.c
    brlcad/branches/dm-fb-merge/src/libdm/glx/dm-ogl.c
    brlcad/branches/dm-fb-merge/src/libdm/include/calltable.h
    brlcad/branches/dm-fb-merge/src/libdm/null/dm-Null.c
    brlcad/branches/dm-fb-merge/src/libdm/osgl/dm-osgl.cpp
    brlcad/branches/dm-fb-merge/src/libdm/plot/dm-plot.c
    brlcad/branches/dm-fb-merge/src/libdm/postscript/dm-ps.c
    brlcad/branches/dm-fb-merge/src/libdm/qt/dm-qt.cpp
    brlcad/branches/dm-fb-merge/src/libdm/tcl.c
    brlcad/branches/dm-fb-merge/src/libdm/tk/dm-tk.c
    brlcad/branches/dm-fb-merge/src/libdm/txt/dm-txt.c
    brlcad/branches/dm-fb-merge/src/libdm/wgl/dm-wgl.c

Modified: brlcad/branches/dm-fb-merge/src/libdm/X/dm-X.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/X/dm-X.c      2020-04-21 14:04:16 UTC 
(rev 75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/X/dm-X.c      2020-04-21 14:43:59 UTC 
(rev 75490)
@@ -415,6 +415,16 @@
     return BRLCAD_OK;
 }
 
+int
+X_viable(const char *dpy_string)
+{
+    Display *dpy;
+    if ((dpy = XOpenDisplay(dpy_string)) != NULL) {
+       XCloseDisplay(dpy);
+       return 1;
+    }
+    return -1;
+}
 
 /*
  * Fire up the display manager, and the display processor.
@@ -2051,6 +2061,7 @@
 struct dm_impl dm_X_impl = {
     X_open,
     X_close,
+    X_viable,
     X_drawBegin,
     X_drawEnd,
     X_normal,

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:04:16 UTC 
(rev 75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/dm-generic.c  2020-04-21 14:43:59 UTC 
(rev 75490)
@@ -84,7 +84,6 @@
 #if defined(DM_QT)
     if (BU_STR_EQUIV(type, "qt")) {
        return dm_qt.i->dm_open(interp, argc, argv);
-       return qt_open(interp, argc, argv);
     }
 #endif
     return DM_NULL;
@@ -154,62 +153,54 @@
 /* TODO - in a plugin system, this will search available plugins to see
  * of there is one that provides the requested name */
 int
-#if !defined(DM_WGL) && !defined(DM_OGL) && !defined(DM_X)
-dm_validXType(const char *UNUSED(dpy_string), const char *name)
-#else
 dm_validXType(const char *dpy_string, const char *name)
-#endif
 {
-    if (BU_STR_EQUAL(name, "wgl")) {
-#ifdef DM_WGL
-       return 1;
-#else
-       bu_log("Specified display type [%s] is not available in this 
compilation.", name);
-       return 0;
-#endif /* DM_WGL */
+    if (BU_STR_EQUIV(name, "null")) {
+       return dm_null.i->dm_viable(dpy_string);
     }
-    if (BU_STR_EQUAL(name, "ogl")) {
-#ifdef DM_OGL
-       Display *dpy;
-       int return_val;
-       if ((dpy = XOpenDisplay(dpy_string)) != NULL) {
-           if (XQueryExtension(dpy, "GLX", &return_val, &return_val, 
&return_val)) {
-               XCloseDisplay(dpy);
-               return 1;
-           }
-           XCloseDisplay(dpy);
-       }
-#else
-       bu_log("Specified display type [%s] is not available in this 
compilation.", name);
-#endif /* DM_OGL */
-       return 0;
+    if (BU_STR_EQUIV(name, "txt")) {
+       return dm_txt.i->dm_viable(dpy_string);
     }
-
-    if (BU_STR_EQUAL(name, "X")) {
-#ifdef DM_X
-       Display *dpy;
-       if ((dpy = XOpenDisplay(dpy_string)) != NULL) {
-           XCloseDisplay(dpy);
-           return 1;
-       }
-#else
-       bu_log("Specified display type [%s] is not available in this 
compilation.", name);
-#endif /* DM_X */
-       return 0;
+    if (BU_STR_EQUIV(name, "plot")) {
+       return dm_plot.i->dm_viable(dpy_string);
     }
-
-    if (BU_STR_EQUAL(name, "tk")) {
-#ifdef DM_TK
-       return 1;
-#else
-       bu_log("Specified display type [%s] is not available in this 
compilation.", name);
-#endif /* DM_TK */
-       return 0;
+    if (BU_STR_EQUIV(name, "ps")) {
+       return dm_ps.i->dm_viable(dpy_string);
     }
-
+#if defined(DM_X)
+    if (BU_STR_EQUIV(name, "X")) {
+       return dm_X.i->dm_viable(dpy_string);
+    }
+#endif
+#if defined(DM_TK)
+    if (BU_STR_EQUIV(name, "tk")) {
+       return dm_tk.i->dm_viable(dpy_string);
+    }
+#endif
+#if defined(DM_OGL)
+    if (BU_STR_EQUIV(name, "ogl")) {
+       return dm_ogl.i->dm_viable(dpy_string);
+    }
+#endif
+#if defined(DM_OSGL)
+    if (BU_STR_EQUIV(name, "osgl")) {
+       return dm_osgl.i->dm_viable(dpy_string);
+    }
+#endif
+#if defined(DM_WGL)
+    if (BU_STR_EQUIV(name, "wgl")) {
+       return dm_wgl.i->dm_viable(dpy_string);
+    }
+#endif
+#if defined(DM_QT)
+    if (BU_STR_EQUIV(name, "qt")) {
+       return dm_qt.i->dm_viable(dpy_string);
+    }
+#endif
     return 0;
 }
 
+
 /** dm_bestXType determines what mged will normally
   * use as the default display manager
   */

Modified: brlcad/branches/dm-fb-merge/src/libdm/glx/dm-ogl.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/glx/dm-ogl.c  2020-04-21 14:04:16 UTC 
(rev 75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/glx/dm-ogl.c  2020-04-21 14:43:59 UTC 
(rev 75490)
@@ -652,6 +652,20 @@
     return BRLCAD_OK;
 }
 
+int
+ogl_viable(const char *dpy_string)
+{
+    Display *dpy;
+    int return_val;
+    if ((dpy = XOpenDisplay(dpy_string)) != NULL) {
+       if (XQueryExtension(dpy, "GLX", &return_val, &return_val, &return_val)) 
{
+           XCloseDisplay(dpy);
+           return 1;
+       }
+       XCloseDisplay(dpy);
+    }
+    return -1;
+}
 
 /*
  * Fire up the display manager, and the display processor.
@@ -2909,6 +2923,7 @@
 struct dm_impl dm_ogl_impl = {
     ogl_open,
     ogl_close,
+    ogl_viable,
     ogl_drawBegin,
     ogl_drawEnd,
     ogl_normal,

Modified: brlcad/branches/dm-fb-merge/src/libdm/include/calltable.h
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/include/calltable.h   2020-04-21 
14:04:16 UTC (rev 75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/include/calltable.h   2020-04-21 
14:43:59 UTC (rev 75490)
@@ -59,6 +59,7 @@
     // TODO - dm_open currently does both new windows and existing windows - 
rework
     // to operate like framebuffer API and separate them.
     int (*dm_close)(struct dm *dmp);
+    int (*dm_viable)(const char *dpy_string);
     int (*dm_drawBegin)(struct dm *dmp);       /**< @brief formerly dmr_prolog 
*/
     int (*dm_drawEnd)(struct dm *dmp);         /**< @brief formerly dmr_epilog 
*/
     int (*dm_normal)(struct dm *dmp);

Modified: brlcad/branches/dm-fb-merge/src/libdm/null/dm-Null.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/null/dm-Null.c        2020-04-21 
14:04:16 UTC (rev 75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/null/dm-Null.c        2020-04-21 
14:43:59 UTC (rev 75490)
@@ -58,6 +58,11 @@
     return 0;
 }
 
+int
+null_viable(const char *UNUSED(dpy_string))
+{
+    return 1;
+}
 
 int
 null_drawBegin(struct dm *UNUSED(dmp))
@@ -305,6 +310,7 @@
 struct dm_impl dm_null_impl = {
     null_open,
     null_close,
+    null_viable,
     null_drawBegin,
     null_drawEnd,
     null_normal,

Modified: brlcad/branches/dm-fb-merge/src/libdm/osgl/dm-osgl.cpp
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/osgl/dm-osgl.cpp      2020-04-21 
14:04:16 UTC (rev 75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/osgl/dm-osgl.cpp      2020-04-21 
14:43:59 UTC (rev 75490)
@@ -376,7 +376,14 @@
     return TCL_OK;
 }
 
+// TODO - properly test this...
+int
+osgl_viable(const char *UNUSED(dpy_string))
+{
+    return 1;
+}
 
+
 /*
  * Fire up the display manager, and the display processor.
  *
@@ -2544,6 +2551,7 @@
 struct dm_impl dm_osgl_impl = {
     osgl_open,
     osgl_close,
+    osgl_viable,
     osgl_drawBegin,
     osgl_drawEnd,
     osgl_normal,

Modified: brlcad/branches/dm-fb-merge/src/libdm/plot/dm-plot.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/plot/dm-plot.c        2020-04-21 
14:04:16 UTC (rev 75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/plot/dm-plot.c        2020-04-21 
14:43:59 UTC (rev 75490)
@@ -217,7 +217,13 @@
     return BRLCAD_OK;
 }
 
+int
+plot_viable(const char *UNUSED(dpy_string))
+{
+    return 1;
+}
 
+
 /**
  * There are global variables which are parameters to this routine.
  */
@@ -661,6 +667,7 @@
 struct dm_impl dm_plot_impl = {
     plot_open,
     plot_close,
+    plot_viable,
     plot_drawBegin,
     plot_drawEnd,
     plot_normal,

Modified: brlcad/branches/dm-fb-merge/src/libdm/postscript/dm-ps.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/postscript/dm-ps.c    2020-04-21 
14:04:16 UTC (rev 75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/postscript/dm-ps.c    2020-04-21 
14:43:59 UTC (rev 75490)
@@ -316,6 +316,13 @@
 }
 
 
+int
+ps_viable(const char *UNUSED(dpy_string))
+{
+    return 1;
+}
+
+
 /*
  * There are global variables which are parameters to this routine.
  */
@@ -729,6 +736,7 @@
 struct dm_impl dm_ps_impl = {
     ps_open,
     ps_close,
+    ps_viable,
     ps_drawBegin,
     ps_drawEnd,
     ps_normal,

Modified: brlcad/branches/dm-fb-merge/src/libdm/qt/dm-qt.cpp
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/qt/dm-qt.cpp  2020-04-21 14:04:16 UTC 
(rev 75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/qt/dm-qt.cpp  2020-04-21 14:43:59 UTC 
(rev 75490)
@@ -535,7 +535,13 @@
     return TCL_OK;
 }
 
+int
+qt_viable(const char *UNUSED(dpy_string))
+{
+    return 1;
+}
 
+
 HIDDEN int
 qt_drawBegin(struct dm *dmp)
 {
@@ -1309,6 +1315,7 @@
 struct dm_impl dm_qt_impl = {
     qt_open,
     qt_close,
+    qt_viable,
     qt_drawBegin,
     qt_drawEnd,
     qt_normal,

Modified: brlcad/branches/dm-fb-merge/src/libdm/tcl.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/tcl.c 2020-04-21 14:04:16 UTC (rev 
75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/tcl.c 2020-04-21 14:43:59 UTC (rev 
75490)
@@ -73,7 +73,9 @@
        return BRLCAD_ERROR;
     }
 
-    bu_vls_printf(&vls, "%d", dm_validXType(argv[1], argv[2]));
+    int valid = dm_validXType(argv[1], argv[2]);
+
+    bu_vls_printf(&vls, "%d", (valid == 1) ? 1 : 0);
     obj = Tcl_GetObjResult(interp);
     if (Tcl_IsShared(obj))
        obj = Tcl_DuplicateObj(obj);

Modified: brlcad/branches/dm-fb-merge/src/libdm/tk/dm-tk.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/tk/dm-tk.c    2020-04-21 14:04:16 UTC 
(rev 75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/tk/dm-tk.c    2020-04-21 14:43:59 UTC 
(rev 75490)
@@ -307,6 +307,11 @@
     return BRLCAD_OK;
 }
 
+int
+tk_viable(const char *UNUSED(dpy_string))
+{
+    return 1;
+}
 
 /**
  * @proc tk_drawBegin
@@ -1108,6 +1113,7 @@
 struct dm_impl dm_tk_impl = {
     tk_open,
     tk_close,
+    tk_viable,
     tk_drawBegin,
     tk_drawEnd,
     tk_normal,

Modified: brlcad/branches/dm-fb-merge/src/libdm/txt/dm-txt.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/txt/dm-txt.c  2020-04-21 14:04:16 UTC 
(rev 75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/txt/dm-txt.c  2020-04-21 14:43:59 UTC 
(rev 75490)
@@ -62,7 +62,13 @@
     return 0;
 }
 
+int
+txt_viable(const char *UNUSED(dpy_string))
+{
+    return 1;
+}
 
+
 HIDDEN int
 txt_drawBegin(struct dm *UNUSED(dmp))
 {
@@ -346,6 +352,7 @@
 struct dm_impl dm_txt_impl = {
     txt_open,
     txt_close,
+    txt_viable,
     txt_drawBegin,
     txt_drawEnd,
     txt_normal,

Modified: brlcad/branches/dm-fb-merge/src/libdm/wgl/dm-wgl.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/wgl/dm-wgl.c  2020-04-21 14:04:16 UTC 
(rev 75489)
+++ brlcad/branches/dm-fb-merge/src/libdm/wgl/dm-wgl.c  2020-04-21 14:43:59 UTC 
(rev 75490)
@@ -693,7 +693,13 @@
     return BRLCAD_OK;
 }
 
+int
+wgl_viable(const char *UNUSED(dpy_string))
+{
+    return 1;
+}
 
+
 /*
  * There are global variables which are parameters to this routine.
  */
@@ -2486,6 +2492,7 @@
 struct dm_impl dm_wgl_impl = {
     wgl_open,
     wgl_close,
+    wgl_viable,
     wgl_drawBegin,
     wgl_drawEnd,
     wgl_normal,

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