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