Revision: 76677
          http://sourceforge.net/p/brlcad/code/76677
Author:   starseeker
Date:     2020-08-06 18:05:03 +0000 (Thu, 06 Aug 2020)
Log Message:
-----------
Merge trunk changes from r76657 through r76676

Modified Paths:
--------------
    brlcad/branches/bioh/include/dm/CMakeLists.txt
    brlcad/branches/bioh/include/dm.h
    brlcad/branches/bioh/misc/win32-msvc/Dll/CMakeLists.txt
    brlcad/branches/bioh/src/libdm/CMakeLists.txt
    brlcad/branches/bioh/src/libdm/X/CMakeLists.txt
    brlcad/branches/bioh/src/libdm/X/dm-X.c
    brlcad/branches/bioh/src/libdm/X/dm-X.h
    brlcad/branches/bioh/src/libdm/X/fb_X.h
    brlcad/branches/bioh/src/libdm/dm-generic.c
    brlcad/branches/bioh/src/libdm/dm_plugins.cpp
    brlcad/branches/bioh/src/libdm/glx/CMakeLists.txt
    brlcad/branches/bioh/src/libdm/glx/dm-ogl.c
    brlcad/branches/bioh/src/libdm/glx/dm-ogl.h
    brlcad/branches/bioh/src/libdm/glx/fb_ogl.h
    brlcad/branches/bioh/src/libdm/glx/if_ogl.c
    brlcad/branches/bioh/src/libdm/include/calltable.h
    brlcad/branches/bioh/src/libdm/include/private.h
    brlcad/branches/bioh/src/libdm/null/dm-Null.c
    brlcad/branches/bioh/src/libdm/null/dm-Null.h
    brlcad/branches/bioh/src/libdm/osgl/CMakeLists.txt
    brlcad/branches/bioh/src/libdm/osgl/dm-osgl.cpp
    brlcad/branches/bioh/src/libdm/osgl/dm-osgl.h
    brlcad/branches/bioh/src/libdm/osgl/fb_osgl.h
    brlcad/branches/bioh/src/libdm/osgl/if_osgl.cpp
    brlcad/branches/bioh/src/libdm/plot/CMakeLists.txt
    brlcad/branches/bioh/src/libdm/plot/dm-plot.c
    brlcad/branches/bioh/src/libdm/plot/dm-plot.h
    brlcad/branches/bioh/src/libdm/postscript/CMakeLists.txt
    brlcad/branches/bioh/src/libdm/postscript/dm-ps.c
    brlcad/branches/bioh/src/libdm/postscript/dm-ps.h
    brlcad/branches/bioh/src/libdm/qt/CMakeLists.txt
    brlcad/branches/bioh/src/libdm/qt/dm-qt.cpp
    brlcad/branches/bioh/src/libdm/qt/dm-qt.h
    brlcad/branches/bioh/src/libdm/qt/fb_qt.h
    brlcad/branches/bioh/src/libdm/tests/dm_test.c
    brlcad/branches/bioh/src/libdm/tk/CMakeLists.txt
    brlcad/branches/bioh/src/libdm/tk/dm-tk.c
    brlcad/branches/bioh/src/libdm/tk/dm-tk.h
    brlcad/branches/bioh/src/libdm/txt/CMakeLists.txt
    brlcad/branches/bioh/src/libdm/txt/dm-txt.c
    brlcad/branches/bioh/src/libdm/wgl/CMakeLists.txt
    brlcad/branches/bioh/src/libdm/wgl/dm-wgl.c
    brlcad/branches/bioh/src/libdm/wgl/dm-wgl.h
    brlcad/branches/bioh/src/libdm/wgl/fb_wgl.h
    brlcad/branches/bioh/src/libtclcad/dm.c
    brlcad/branches/bioh/src/libtclcad/tclcad_obj.c
    brlcad/branches/bioh/src/mged/attach.c
    brlcad/branches/bioh/src/mged/cmd.c
    brlcad/branches/bioh/src/mged/doevent.c
    brlcad/branches/bioh/src/mged/mged.c
    brlcad/branches/bioh/src/mged/mged.h
    brlcad/branches/bioh/src/mged/mged_dm.h
    brlcad/branches/bioh/src/other/openNURBS/opennurbs_extensions.h

Removed Paths:
-------------
    brlcad/branches/bioh/include/dm/dm-design.h

Property Changed:
----------------
    brlcad/branches/bioh/
    brlcad/branches/bioh/include/
    brlcad/branches/bioh/src/other/

Index: brlcad/branches/bioh
===================================================================
--- brlcad/branches/bioh        2020-08-06 18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh        2020-08-06 18:05:03 UTC (rev 76677)

Property changes on: brlcad/branches/bioh
___________________________________________________________________
Modified: svn:mergeinfo
## -9,4 +9,4 ##
 /brlcad/branches/osg:62110-62113
 /brlcad/branches/prep-cache:68236-68933
 /brlcad/branches/tcltk86:68300-75257
-/brlcad/trunk:75720-76157,76160-76365,76386-76656
\ No newline at end of property
+/brlcad/trunk:75720-76157,76160-76365,76386-76676
\ No newline at end of property
Index: brlcad/branches/bioh/include
===================================================================
--- brlcad/branches/bioh/include        2020-08-06 18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/include        2020-08-06 18:05:03 UTC (rev 76677)

Property changes on: brlcad/branches/bioh/include
___________________________________________________________________
Modified: svn:mergeinfo
## -9,4 +9,4 ##
 /brlcad/branches/osg/include:62110-62113
 /brlcad/branches/prep-cache/include:68236-68933
 /brlcad/branches/tcltk86/include:68300-75257
-/brlcad/trunk/include:75728-75834,75891-75926,75986-76146,76148-76154,76160-76351,76386-76505,76641-76656
\ No newline at end of property
+/brlcad/trunk/include:75728-75834,75891-75926,75986-76146,76148-76154,76160-76351,76386-76505,76641-76676
\ No newline at end of property
Modified: brlcad/branches/bioh/include/dm/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/include/dm/CMakeLists.txt      2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/include/dm/CMakeLists.txt      2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -6,7 +6,6 @@
   )
 BRLCAD_MANAGE_FILES(dm_headers ${INCLUDE_DIR}/brlcad/dm)
 
-CMAKEFILES(dm-design.h)
 CMAKEFILES(CMakeLists.txt)
 
 # Local Variables:

Deleted: brlcad/branches/bioh/include/dm/dm-design.h
===================================================================
--- brlcad/branches/bioh/include/dm/dm-design.h 2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/include/dm/dm-design.h 2020-08-06 18:05:03 UTC (rev 
76677)
@@ -1,223 +0,0 @@
-/*                     D M - D E S I G N . H
- * BRL-CAD
- *
- * Copyright (c) 2016-2020 United States Government as represented by
- * the U.S. Army Research Laboratory.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this file; see the file named COPYING for more
- * information.
- */
-/** @file dm-design.h
- *
- * Design work on an updated API for libdm.  This is currently just
- * speculative work and should not be regarded as any sort of active,
- * usable API.
- *
- */
-
-#ifndef DM_DM_DESIGN_H
-#define DM_DM_DESIGN_H
-
-#include "common.h"
-#include "vmath.h"
-#include "icv.h"
-#include "dm/defines.h"
-
-/* Display Manager Types */
-#define DM_TYPE_BAD     -1
-#define DM_TYPE_NULL   0
-#define DM_TYPE_TXT    1
-#define DM_TYPE_QT     2
-#define DM_TYPE_OSG    3
-
-#define DM_STYLE_TXT 0
-#define DM_STYLE_WIREFRAME 1
-#define DM_STYLE_POINTS 2
-#define DM_STYLE_TRIANGLES 3
-#define DM_STYLE_HIDDEN_LINE 4
-struct dm_db_obj {
-    int draw_style;            /**< @brief bitmask for points, wireframe, 
solid, hidden line, etc. */
-    mat_t matrix;              /**< @brief local matrix for individual 
in-memory object manipulation during editing, when per-change disk I/O is too 
expensive */
-};
-
-#define DM_VIEW_OBJ_TYPE_3DLINES 0
-#define DM_VIEW_OBJ_TYPE_2DLINES 1
-#define DM_VIEW_OBJ_TYPE_TRIANGLES 2
-#define DM_VIEW_OBJ_TYPE_TEXT 4
-#define DM_VIEW_OBJ_TYPE_FB 5
-struct dm_view_obj {
-    int              draw_type;        /**< @brief obj type - framebuffer, 2D 
lines, 3D lines, triangles, text, grouping object, etc. */
-    struct bn_vlist *vlist;            /**< @brief If the object defines 
specific linear or triangular geometry for drawing
-                                          (text may but is not required to, 
and a framebuffer uses image data) it is here. */
-    struct bu_ptbl  *obj_set;          /**< @brief A grouping object may 
define a union of other objects (view and/or db) on which actions will be 
performed */
-    void           *image_data;
-    mat_t           matrix;
-};
-
-
-/* Use a union to allow the display list object to hold both types */
-#define DM_DB_OBJ 1
-#define DM_VIEW_OBJ 2
-union dm_object {
-    struct dm_db_obj   db_obj;
-    struct dm_view_obj view_obj;
-};
-
-/* TODO - this will probably need to be in bview.h for common access */
-struct dm_display_list {
-    int obj_type;
-    union dm_object     obj;
-    struct bu_vls      *handle;                /**< @brief For non-geometry 
view objects, need a string handle.  For geometry objects, full path string */
-    int                 dirty_flag;            /**< @brief If set, need to 
(re)generate the drawing content for this object */
-    int                        visibility_flag;        /**< @brief Allows 
users to hide/view objects without needing to recreate them */
-    int                        highlight_flag;         /**< @brief Identify 
whether the object is highlighted within the view */
-    fastf_t            draw_width;             /**< @brief !0 override's the 
display manager's default Point radius/line width */
-    int                fontsize;               /**< @brief !0 override's the 
display manager's default font size when obj labeling is performed */
-    unsigned char      rgb[3];                 /**< @brief local color 
override */
-    struct bu_attribute_value_set *obj_extra_settings; /**< @brief All 
settings (generic and DMTYPE specific) listed here. */
-    void               *client_data;           /**< @brief Slot to allow 
applications to supply custom data */
-};
-
-struct dm {
-    uint32_t dm_magic;
-    int                                 dm_type;       /**< @brief drawing 
canvas type (X, OSG, Qt, txt, etc.) currently in use by display manager */
-    char                       *handle;        /**< @brief short name of 
device */
-    int                         perspective;   /**< @brief !0 means 
perspective on */
-    mat_t                       view_matrix;   /**< @brief view matrix for the 
default camera */
-    mat_t                       proj_matrix;   /**< @brief projection matrix 
for the default camera */
-    void                       *dm_data;       /**< @brief pointer to the 
actual low level, platform specific data (X window, OSG viewer, internal lists, 
etc.) */
-    int                                 is_embedded;   /**< @brief determine 
if the display manager is stand-alone or embedded (impacts event handling) */
-    void                       *parent_info;   /**< @brief if dm is embedded, 
parent_info must contain all the info necessary for libdm to embed the Window */
-    struct bu_ptbl             *dm_l;          /**< @brief Display list for 
this view */
-    int                         fontsize;      /**< @brief !0 override's the 
auto font size */
-    unsigned char               dm_bg[3];      /**< @brief background color */
-    unsigned char               dm_fg[3];      /**< @brief default foreground 
color */
-    fastf_t                     draw_width;    /**< @brief Default point 
radius/line width */
-    int                         width;
-    int                         height;
-    struct bu_attribute_value_set *dm_settings;        /**< @brief All 
settings (generic and DMTYPE specific) listed here. */
-    void                       *client_data;   /**< @brief Slot to allow 
applications to store custom data */
-};
-
-const char *dm_common_reserved_settings[] = {
-    "perspective"    "Enable/disable perspective mode.  Specifics of the 
perspective mode are controlled by the projection matrix."
-    "proj_mat"       "Projection matrix, used for perspective mode."
-    "view_mat"       "View matrix - controls the \"camera\" position in space."
-    "background_rgb" "Background color, specified using Red/Green/Blue color 
values"
-    "foreground_rgb" "Default color for foreground objects, specified using 
Red/Green/Blue color values"
-    "draw_width"     "Default line width/point radius used when drawing 
objects."
-    "fontsize"       "Default font size for text rendering."
-    "width"          "Width of display window."
-    "height"         "Height of display window."
-    "\0"
-};
-
-const char *dm_obj_common_reserved_settings[] = {
-    "local_mat"      "Local positioning matrix, used (for example) during 
object editing manipulations."
-    "rgb"            "Object color, specified using Red/Green/Blue color 
values.  Defaults to geometry object color, if present."
-    "draw_width"     "Local line width/point radius used when drawing objects."
-    "fontsize"       "Local font size for text rendering."
-    "dirty"          "Flag telling the display manager that the object state 
is out of sync with the visible state."
-    "visible"        "Flag telling the display manager that the object is (or 
isn't) supposed to be visible in the view."
-    "highlight"      "Flag telling the display manager to highlight this 
object."
-    "\0"
-};
-
-/* Structure of dm will (hopefully) be internal to libdm, so use a typedef for 
the functions */
-typedef struct dm dm_s;
-
-/* Generic functions for all display managers */
-DM_EXPORT extern void          dm_set_handle(dm_s *dmp, const char *handle);
-DM_EXPORT extern char         *dm_get_handle(dm_s *dmp);
-DM_EXPORT extern void           dm_set_perspective(dm_s *dmp, int 
perspective_flag);
-DM_EXPORT extern int            dm_get_perspective(dm_s *dmp);
-DM_EXPORT extern void           dm_set_proj_mat(dm_s *dmp, mat_t pmat);
-DM_EXPORT extern matp_t         dm_get_proj_mat(dm_s *dmp);
-DM_EXPORT extern void           dm_set_view_mat(dm_s *dmp, mat_t vmat);
-DM_EXPORT extern matp_t         dm_get_view_mat(dm_s *dmp);
-DM_EXPORT extern void           dm_set_background_rgb(dm_s *dmp, unsigned char 
r, unsigned char g, unsigned char b);
-DM_EXPORT extern unsigned char *dm_get_background_rgb(dm_s *dmp);
-DM_EXPORT extern void           dm_set_foreground_rgb(dm_s *dmp, unsigned char 
r, unsigned char g, unsigned char b);
-DM_EXPORT extern unsigned char *dm_get_foreground_rgb(dm_s *dmp);
-DM_EXPORT extern void           dm_set_default_draw_width(dm_s *dmp, fastf_t 
draw_width);
-DM_EXPORT extern fastf_t        dm_get_default_draw_width(dm_s *dmp, fastf_t 
draw_width);
-DM_EXPORT extern void           dm_set_default_fontsize(dm_s *dmp, int 
fontsize);
-DM_EXPORT extern int            dm_get_default_fontsize(dm_s *dmp);
-DM_EXPORT extern void           dm_set_width(dm_s *dmp, int width);
-DM_EXPORT extern int           dm_get_width(dm_s *dmp);
-DM_EXPORT extern void           dm_set_height(dm_s *dmp, int height);
-DM_EXPORT extern int           dm_get_height(dm_s *dmp);
-
-
-DM_EXPORT extern const char                  **dm_get_reserved_settings(dm_s 
*dmp); /* Will be a combination of global and dm specific reserved settings */
-DM_EXPORT extern int                           dm_is_reserved_setting(dm_s 
*dmp, const char *key);
-DM_EXPORT extern const char                   *dm_about_reserved_setting(dm_s 
*dmp, const char *key);
-DM_EXPORT extern struct bu_attribute_value_set *dm_get_settings(dm_s *dmp, 
const char *key);
-DM_EXPORT extern int                            dm_set_setting(dm_s *dmp, 
const char *key, const char *val);
-DM_EXPORT extern const char                    *dm_get_setting(dm_s *dmp, 
const char *key);
-
-/* Object manipulators */
-DM_EXPORT extern int  dm_obj_add(dm_s *dmp, const char *handle, int 
style_type, struct bn_vlist *vlist, struct bu_ptbl *obj_set);
-DM_EXPORT extern int  dm_obj_find(dm_s *dmp, const char *handle);
-DM_EXPORT extern void dm_obj_remove(dm_s *dmp, const char *handle);
-
-DM_EXPORT extern void           dm_set_obj_localmat(dm_s *dmp, const char 
*handle, mat_t matrix);
-DM_EXPORT extern matp_t         dm_get_obj_localmat(dm_s *dmp, const char 
*handle);
-DM_EXPORT extern void           dm_set_obj_rgb(dm_s *dmp, const char *handle, 
unsigned char r, unsigned char g, unsigned char b);
-DM_EXPORT extern unsigned char *dm_get_obj_rgb(dm_s *dmp, const char *handle);
-DM_EXPORT extern void           dm_set_obj_draw_width(dm_s *dmp, const char 
*handle, fastf_t draw_width);
-DM_EXPORT extern fastf_t        dm_get_obj_draw_width(dm_s *dmp, const char 
*handle);
-DM_EXPORT extern void           dm_set_obj_fontsize(dm_s *dmp, const char 
*handle, int fontsize);
-DM_EXPORT extern int            dm_get_obj_fontsize(dm_s *dmp, const char 
*handle);
-DM_EXPORT extern void           dm_set_obj_dirty(dm_s *dmp, const char 
*handle, int flag);
-DM_EXPORT extern int            dm_get_obj_dirty(dm_s *dmp, const char 
*handle);
-DM_EXPORT extern void           dm_set_obj_visible(dm_s *dmp, const char 
*handle, int flag);
-DM_EXPORT extern int            dm_get_obj_visible(dm_s *dmp, const char 
*handle);
-DM_EXPORT extern void           dm_set_obj_highlight(dm_s *dmp, const char 
*handle, int flag);
-DM_EXPORT extern int            dm_get_obj_highlight(dm_s *dmp, const char 
*handle);
-
-DM_EXPORT extern const char                  
**dm_get_obj_reserved_settings(dm_s *dmp);  /* Will be a combination of global 
and dm specific reserved settings */
-DM_EXPORT extern int                           dm_is_obj_reserved_setting(dm_s 
*dmp, const char *key);
-DM_EXPORT extern const char                   
*dm_about_obj_reserved_setting(dm_s *dmp, const char *key);
-DM_EXPORT extern struct bu_attribute_value_set *dm_get_obj_settings(dm_s *dmp, 
const char *handle);
-DM_EXPORT extern int                            dm_set_obj_setting(dm_s *dmp, 
const char *handle, const char *key, const char *val);
-DM_EXPORT extern const char                    *dm_get_obj_setting(dm_s *dmp, 
const char *handle, const char *key);
-
-/* TODO The visibility of the framebuffer is handled like any other object, 
but it is likely necessary
- * to expose more of the details of the object to allow libfb to work 
properly?*/
-/* Idle though - could an ascii raytrace (like the old GIFT output) be useful 
for "txt mode" debugging of raytracing? */
-DM_EXPORT extern void          *dm_get_framebuffer(dm_s *dmp);
-
-
-/* Display Manager / OS type aware functions */
-DM_EXPORT extern int   dm_init(dm_s *dmp, int dm_t, int embedded, void 
*parent_info);  /* TODO - need an actual public struct to hold parent info? */
-DM_EXPORT extern int   dm_close(dm_s *dmp);
-DM_EXPORT extern int   dm_refresh(dm_s *dmp);
-DM_EXPORT extern void *dm_canvas(dm_s *dmp);  /* Exposes the low level drawing 
object (X window, OpenGL context, etc.) for custom drawing */
-DM_EXPORT extern int   dm_get_type(dm_s *dmp);
-DM_EXPORT extern int   dm_set_type(dm_s *dmp, int dm_t);
-DM_EXPORT extern int   dm_get_image(dm_s *dmp, icv_image_t *image);
-DM_EXPORT extern int   dm_get_obj_image(dm_s *dmp, const char *handle, 
icv_image_t *image);
-
-#endif /* DM_DM_DESIGN_H */
-
-/** @} */
-/*
- * Local Variables:
- * mode: C
- * tab-width: 8
- * indent-tabs-mode: t
- * c-file-style: "stroustrup"
- * End:
- * ex: shiftwidth=4 tabstop=8
- */

Modified: brlcad/branches/bioh/include/dm.h
===================================================================
--- brlcad/branches/bioh/include/dm.h   2020-08-06 18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/include/dm.h   2020-08-06 18:05:03 UTC (rev 76677)
@@ -74,18 +74,7 @@
     void *dmh_data;
 };
 
-/* TODO - after plugins are established, these should be movable to
- * the private subheaders */
 DM_EXPORT extern struct dm dm_null;
-DM_EXPORT extern struct dm dm_ogl;
-DM_EXPORT extern struct dm dm_plot;
-DM_EXPORT extern struct dm dm_ps;
-DM_EXPORT extern struct dm dm_tk;
-DM_EXPORT extern struct dm dm_wgl;
-DM_EXPORT extern struct dm dm_X;
-DM_EXPORT extern struct dm dm_txt;
-DM_EXPORT extern struct dm dm_qt;
-DM_EXPORT extern struct dm dm_osgl;
 
 DM_EXPORT extern void *dm_interp(struct dm *dmp);
 DM_EXPORT extern int dm_share_dlist(struct dm *dmp1,
@@ -171,10 +160,10 @@
                             const char *type,
                             int argc,
                             const char *argv[]);
-DM_EXPORT extern struct bu_vls *dm_list_types(const char *separator); /* free 
return list with bu_vls_free(list); BU_PUT(list, struct bu_vls); */
+DM_EXPORT extern void dm_list_types(struct bu_vls *list, const char 
*separator);
 DM_EXPORT const char *dm_bestXType(const char *dpy_string);
+DM_EXPORT extern int dm_have_graphics();
 
-
 /* functions to make a dm struct hideable - will need to
  * sort these out later */
 
@@ -190,6 +179,7 @@
 DM_EXPORT extern void dm_geometry_request(struct dm *dmp, int width, int 
height);
 DM_EXPORT extern void dm_internal_var(struct bu_vls *result, struct dm *dmp, 
const char *key); // ick
 DM_EXPORT extern fastf_t dm_get_aspect(struct dm *dmp);
+DM_EXPORT extern int dm_graphical(const struct dm *dmp);
 DM_EXPORT extern const char *dm_get_type(struct dm *dmp);
 DM_EXPORT extern unsigned long dm_get_id(struct dm *dmp);
 DM_EXPORT extern void dm_set_id(struct dm *dmp, unsigned long new_id);
@@ -201,6 +191,9 @@
 DM_EXPORT extern int dm_set_fg(struct dm *dmp, unsigned char r, unsigned char 
g, unsigned char b, int strict, fastf_t transparency);
 DM_EXPORT extern int dm_reshape(struct dm *dmp, int width, int height);
 DM_EXPORT extern int dm_make_current(struct dm *dmp);
+DM_EXPORT extern int dm_doevent(struct dm *dmp, void *clientData, void 
*eventPtr);
+DM_EXPORT extern int dm_get_dirty(struct dm *dmp);
+DM_EXPORT extern void dm_set_dirty(struct dm *dmp, int i);
 DM_EXPORT extern vect_t *dm_get_clipmin(struct dm *dmp);
 DM_EXPORT extern vect_t *dm_get_clipmax(struct dm *dmp);
 DM_EXPORT extern int dm_get_bound_flag(struct dm *dmp);

Modified: brlcad/branches/bioh/misc/win32-msvc/Dll/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/misc/win32-msvc/Dll/CMakeLists.txt     2020-08-06 
18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/misc/win32-msvc/Dll/CMakeLists.txt     2020-08-06 
18:05:03 UTC (rev 76677)
@@ -48,7 +48,6 @@
   libnmg-static
   poly2tri-static
   zlib-static
-  lz4-static
   openNURBS-static
   )
 
@@ -130,7 +129,6 @@
   libnmg-static
   poly2tri-static
   zlib-static
-  lz4-static
   openNURBS-static
   ${COREINTERFACE_MSVC_LIBRARIES}
   )

Modified: brlcad/branches/bioh/src/libdm/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/CMakeLists.txt       2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/CMakeLists.txt       2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -18,42 +18,18 @@
 
 BRLCAD_LIB_INCLUDE_DIRS(dm DM_INCLUDE_DIRS DM_LOCAL_INCLUDE_DIRS)
 
-if(BRLCAD_ENABLE_TCL)
-  add_subdirectory(plot)
-  add_subdirectory(txt)
-endif(BRLCAD_ENABLE_TCL)
+# Backend implementations
+add_subdirectory(X)
+add_subdirectory(glx)
+add_subdirectory(osgl)
+add_subdirectory(plot)
+add_subdirectory(postscript)
+add_subdirectory(qt)
+add_subdirectory(tk)
+add_subdirectory(txt)
+add_subdirectory(wgl)
 
-# We no longer use these in libdm, but MGED hasn't caught up yet...
-set(libdm_DEFINES "")
-
-if(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_OPENGL AND BRLCAD_ENABLE_TK)
-  add_subdirectory(glx)
-  list(APPEND libdm_DEFINES DM_OGL IF_OGL)
-endif(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_OPENGL AND BRLCAD_ENABLE_TK)
-if(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK)
-  add_subdirectory(X)
-  list(APPEND libdm_DEFINES DM_X IF_X)
-endif(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK)
-if(WIN32 AND BRLCAD_ENABLE_OPENGL)
-  add_subdirectory(wgl)
-  list(APPEND libdm_DEFINES DM_WGL IF_WGL)
-endif(WIN32 AND BRLCAD_ENABLE_OPENGL)
-if(BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_DM_TK)
-  add_subdirectory(tk)
-  list(APPEND libdm_DEFINES DM_TK IF_TK)
-endif(BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_DM_TK)
-if(BRLCAD_ENABLE_OSG AND BRLCAD_ENABLE_TK)
-  add_subdirectory(osgl)
-  list(APPEND libdm_DEFINES DM_OSGL IF_OSGL)
-endif(BRLCAD_ENABLE_OSG AND BRLCAD_ENABLE_TK)
-if(BRLCAD_ENABLE_QT)
-  add_subdirectory(qt)
-  list(APPEND libdm_DEFINES DM_QT IF_QT)
-endif(BRLCAD_ENABLE_QT)
-
-# put the defines where MGED's build can find them...
-set_property(GLOBAL PROPERTY libdm_DEFINES "${libdm_DEFINES}")
-
+# Main libdm library
 set(LIBDM_SRCS
   null/dm-Null.c
   null/if_null.c
@@ -89,20 +65,6 @@
 BRLCAD_ADDLIB(libdm "${LIBDM_SRCS}" 
"librt;libicv;libbu;libpkg;${OPENGL_LIBRARIES};${PNG_LIBRARIES}")
 set_target_properties(libdm PROPERTIES VERSION 20.0.1 SOVERSION 20)
 
-#if(BRLCAD_ENABLE_OSG)
-#  BRLCAD_ADDEXEC(osg-test osgl/osg-test.cpp "librt;libbu;${OSG_LIBRARIES}" 
NO_STRICT NO_INSTALL)
-#  if(HIDE_INTERNAL_SYMBOLS)
-#    if (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
-#      set_property(TARGET libdm APPEND PROPERTY COMPILE_DEFINITIONS 
"FREETYPE_DLL_IMPORTS")
-#    endif (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
-#    if(TARGET libdm-obj)
-#      if (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
-#        set_property(TARGET libdm-obj APPEND PROPERTY COMPILE_DEFINITIONS 
"FREETYPE_DLL_IMPORTS")
-#      endif (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
-#    endif(TARGET libdm-obj)
-#  endif(HIDE_INTERNAL_SYMBOLS)
-#endif(BRLCAD_ENABLE_OSG)
-
 if (TARGET profont_ProFont_ttf_cp)
   add_dependencies(libdm profont_ProFont_ttf_cp)
 endif (TARGET profont_ProFont_ttf_cp)
@@ -113,55 +75,8 @@
   CMakeLists.txt
   README
   TODO
-  X/CMakeLists.txt
-  X/color.c
-  X/dm-X.c
-  X/dm-X.h
-  X/fb_X.h
-  X/if_X24.c
-  glx/CMakeLists.txt
-  glx/dm-glx.h
-  glx/dm-ogl.c
-  glx/dm-ogl.h
-  glx/fb_ogl.h
-  glx/if_ogl.c
   if_TEMPLATE.c
   null/dm-Null.h
-  osgl/CMakeLists.txt
-  osgl/dm-osgl.cpp
-  osgl/dm-osgl.h
-  osgl/fb_osgl.h
-  osgl/fontstash/LICENSE.fontstash
-  osgl/fontstash/README.md
-  osgl/fontstash/fontstash.h
-  osgl/fontstash/glfontstash.h
-  osgl/fontstash/stb_truetype.h
-  osgl/if_osgl.cpp
-  osgl/osg-test.cpp
-  osgl/osg_bob.cpp
-  osgl/osg_fb_manipulator.h
-  plot/CMakeLists.txt
-  plot/dm-plot.c
-  plot/dm-plot.h
-  postscript/CMakeLists.txt
-  postscript/dm-ps.c
-  postscript/dm-ps.h
-  qt/CMakeLists.txt
-  qt/dm-qt.cpp
-  qt/dm-qt.h
-  qt/fb_qt.h
-  qt/if_qt.cpp
-  tk/CMakeLists.txt
-  tk/dm-tk.c
-  tk/dm-tk.h
-  tk/if_tk.c
-  txt/CMakeLists.txt
-  txt/dm-txt.c
-  wgl/CMakeLists.txt
-  wgl/dm-wgl.c
-  wgl/dm-wgl.h
-  wgl/fb_wgl.h
-  wgl/if_wgl.c
   include/private.h
   include/calltable.h
   )

Modified: brlcad/branches/bioh/src/libdm/X/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/X/CMakeLists.txt     2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/X/CMakeLists.txt     2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -1,16 +1,3 @@
-
-find_package(X11)
-find_package(TCL)
-
-include_directories(
-  ${CMAKE_CURRENT_SOURCE_DIR}
-  ${BRLCAD_BINARY_DIR}/include
-  ${BRLCAD_SOURCE_DIR}/include
-  ${X11_INCLUDE_DIR}
-  ${TCL_INCLUDE_PATH}
-  ${TK_INCLUDE_PATH}
-  )
-
 set(X_SRCS
   dm-X.c
   color.c
@@ -17,21 +4,40 @@
   if_X24.c
   )
 
-set_property(SOURCE dm-X.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
-set_property(SOURCE if_X24.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+if(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK)
 
-add_definitions(-DDM_PLUGIN)
-add_definitions(-DDM_X -DIF_X)
+  find_package(X11)
+  find_package(TCL)
 
-add_library(dm-X SHARED ${X_SRCS})
-target_link_libraries(dm-X libdm libbu ${TCL_LIBRARY} ${TK_LIBRARY} 
${X11_LIBRARIES})
-set_property(TARGET dm-X APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-X "${X_SRCS}")
+  include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${BRLCAD_BINARY_DIR}/include
+    ${BRLCAD_SOURCE_DIR}/include
+    ${X11_INCLUDE_DIR}
+    ${TCL_INCLUDE_PATH}
+    ${TK_INCLUDE_PATH}
+    )
 
-PLUGIN_SETUP(dm-X dm)
+  set_property(SOURCE dm-X.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+  set_property(SOURCE if_X24.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
 
-CMAKEFILES(dm-X.h)
+  add_definitions(-DDM_PLUGIN)
 
+  add_library(dm-X SHARED ${X_SRCS})
+  target_link_libraries(dm-X libdm libbu ${TCL_LIBRARY} ${TK_LIBRARY} 
${X11_LIBRARIES})
+  set_property(TARGET dm-X APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
+  VALIDATE_STYLE(dm-X "${X_SRCS}")
+
+  PLUGIN_SETUP(dm-X dm)
+
+endif(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK)
+
+CMAKEFILES(
+  CMakeLists.txt
+  ${X_SRCS}
+  dm-X.h
+  )
+
 # Local Variables:
 # tab-width: 8
 # mode: cmake

Modified: brlcad/branches/bioh/src/libdm/X/dm-X.c
===================================================================
--- brlcad/branches/bioh/src/libdm/X/dm-X.c     2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/X/dm-X.c     2020-08-06 18:05:03 UTC (rev 
76677)
@@ -157,6 +157,18 @@
     return 0;
 }
 
+HIDDEN int
+X_doevent(struct dm *dmp, void *UNUSED(vclientData), void *veventPtr)
+{
+    XEvent *eventPtr= (XEvent *)veventPtr;
+    if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
+        dm_set_dirty(dmp, 1);
+        /* no further processing for this event */
+        return TCL_RETURN;
+    }
+    /* allow further processing of this event */
+    return TCL_OK;
+}
 
 HIDDEN int
 X_configureWin_guts(struct dm *dmp, int force)
@@ -2095,6 +2107,7 @@
     X_getDisplayImage, /* display to image function */
     X_reshape,
     null_makeCurrent,
+    X_doevent,
     X_openFb,
     NULL,
     NULL,
@@ -2107,15 +2120,17 @@
     NULL,
     NULL,
     0,
+    1,                         /* is graphical */
     0,                         /* no displaylist */
-    0,                            /* no stereo */
+    0,                          /* no stereo */
     PLOTBOUND,                 /* zoom-in limit */
     1,                         /* bound flag */
     "X",
     "X Window System (X11)",
-    1,
-    0,
-    0,
+    1, /* top */
+    0, /* width */
+    0, /* height */
+    0, /* dirty */
     0, /* bytes per pixel */
     0, /* bits per channel */
     0,

Modified: brlcad/branches/bioh/src/libdm/X/dm-X.h
===================================================================
--- brlcad/branches/bioh/src/libdm/X/dm-X.h     2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/X/dm-X.h     2020-08-06 18:05:03 UTC (rev 
76677)
@@ -41,6 +41,26 @@
 
 #define INIT_XCOLOR(c) memset((c), 0, sizeof(XColor))
 
+#define DM_REVERSE_COLOR_BYTE_ORDER(_shift, _mask) {    \
+        _shift = 24 - _shift;                           \
+        switch (_shift) {                               \
+            case 0:                                     \
+                _mask >>= 24;                           \
+                break;                                  \
+            case 8:                                     \
+                _mask >>= 8;                            \
+                break;                                  \
+            case 16:                                    \
+                _mask <<= 8;                            \
+                break;                                  \
+            case 24:                                    \
+                _mask <<= 24;                           \
+                break;                                  \
+        }                                               \
+    }
+
+extern struct dm dm_X;
+
 struct x_vars {
     GC gc;
     Pixmap pix;

Modified: brlcad/branches/bioh/src/libdm/X/fb_X.h
===================================================================
--- brlcad/branches/bioh/src/libdm/X/fb_X.h     2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/X/fb_X.h     2020-08-06 18:05:03 UTC (rev 
76677)
@@ -30,7 +30,6 @@
 /** @} */
 
 #ifdef FB_USE_INTERNAL_API
-#ifdef IF_X
 #include "common.h"
 #include <X11/X.h>
 
@@ -42,7 +41,6 @@
     XVisualInfo *vip;
     GC gc;
 };
-#endif /* IF_X */
 #endif /* FB_USE_INTERNAL_API */
 
 /*

Modified: brlcad/branches/bioh/src/libdm/dm-generic.c
===================================================================
--- brlcad/branches/bioh/src/libdm/dm-generic.c 2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/dm-generic.c 2020-08-06 18:05:03 UTC (rev 
76677)
@@ -219,6 +219,12 @@
     dmp->i->dm_height = height;
 }
 
+int
+dm_graphical(const struct dm *dmp)
+{
+    if (UNLIKELY(!dmp)) return 0;
+    return dmp->i->dm_graphical;
+}
 
 const char *
 dm_get_type(struct dm *dmp)
@@ -304,6 +310,27 @@
     return dmp->i->dm_makeCurrent(dmp);
 }
 
+int
+dm_doevent(struct dm *dmp, void *clientData, void *eventPtr)
+{
+    if (UNLIKELY(!dmp)) return 0;
+    return dmp->i->dm_doevent(dmp, clientData, eventPtr);
+}
+
+int
+dm_get_dirty(struct dm *dmp)
+{
+    if (UNLIKELY(!dmp)) return 0;
+    return dmp->i->dm_dirty;
+}
+
+void
+dm_set_dirty(struct dm *dmp, int i)
+{
+    if (UNLIKELY(!dmp)) return;
+    dmp->i->dm_dirty = i;
+}
+
 vect_t *
 dm_get_clipmin(struct dm *dmp)
 {

Modified: brlcad/branches/bioh/src/libdm/dm_plugins.cpp
===================================================================
--- brlcad/branches/bioh/src/libdm/dm_plugins.cpp       2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/dm_plugins.cpp       2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -61,14 +61,30 @@
     return dmp;
 }
 
-extern "C" struct bu_vls *
-dm_list_types(const char *separator)
+extern "C" int 
+dm_have_graphics()
 {
-    struct bu_vls *list;
-    BU_GET(list, struct bu_vls);
-    bu_vls_init(list);
-    bu_vls_trunc(list, 0);
+    int ret = 0;
+    std::map<std::string, const struct dm *> *dmb = (std::map<std::string, 
const struct dm *> *)dm_backends;
+    std::map<std::string, const struct dm *>::iterator d_it;
+    for (d_it = dmb->begin(); d_it != dmb->end(); d_it++) {
+       std::string key = d_it->first;
+       const struct dm *d = d_it->second;
+       if (dm_graphical(d)) {
+           ret = 1;
+           break;
+       }
+    }
+    return ret;
+}
 
+extern "C" void
+dm_list_types(struct bu_vls *list, const char *separator)
+{
+    if (!list) {
+       return;
+    }
+
     // We've got something, and may need a separator
     struct bu_vls sep = BU_VLS_INIT_ZERO;
     if (!separator) {
@@ -118,7 +134,6 @@
        b = priority_list[i];
     }
 #endif
-    return list;
 }
 
 extern "C" int

Modified: brlcad/branches/bioh/src/libdm/glx/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/glx/CMakeLists.txt   2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/glx/CMakeLists.txt   2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -1,39 +1,47 @@
-find_package(TCL)
-find_package(X11)
-find_package(GL)
-
-include_directories(
-  ${CMAKE_CURRENT_SOURCE_DIR}
-  ${BRLCAD_BINARY_DIR}/include
-  ${BRLCAD_SOURCE_DIR}/include
-  ${BU_INCLUDE_DIRS}
-  ${X11_INCLUDE_DIR}
-  ${OPENGL_INCLUDE_DIR_GL}
-  ${OPENGL_INCLUDE_DIR_GLX}
-  ${TCL_INCLUDE_PATH}
-  ${TK_INCLUDE_PATH}
-  )
-
 set(OGL_SRCS
   dm-ogl.c
   if_ogl.c
   )
 
-set_property(SOURCE dm-ogl.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
-set_property(SOURCE if_ogl.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+if(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_OPENGL)
 
-add_definitions(-DDM_PLUGIN)
-add_definitions(-DDM_OGL -DIF_OGL)
+  find_package(TCL)
+  find_package(X11)
+  find_package(GL)
 
-add_library(dm-ogl SHARED ${OGL_SRCS})
-target_link_libraries(dm-ogl libdm libbu ${X11_LIBRARIES} ${OPENGL_LIBRARIES} 
${TCL_LIBRARY} ${TK_LIBRARY})
-set_property(TARGET dm-ogl APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-ogl "${OGL_SRCS}")
+  include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${BRLCAD_BINARY_DIR}/include
+    ${BRLCAD_SOURCE_DIR}/include
+    ${BU_INCLUDE_DIRS}
+    ${X11_INCLUDE_DIR}
+    ${OPENGL_INCLUDE_DIR_GL}
+    ${OPENGL_INCLUDE_DIR_GLX}
+    ${TCL_INCLUDE_PATH}
+    ${TK_INCLUDE_PATH}
+    )
 
-PLUGIN_SETUP(dm-ogl dm)
+  set_property(SOURCE dm-ogl.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+  set_property(SOURCE if_ogl.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
 
-CMAKEFILES(dm-ogl.h)
+  add_definitions(-DDM_PLUGIN)
 
+
+  add_library(dm-ogl SHARED ${OGL_SRCS})
+  target_link_libraries(dm-ogl libdm libbu ${X11_LIBRARIES} 
${OPENGL_LIBRARIES} ${TCL_LIBRARY} ${TK_LIBRARY})
+  set_property(TARGET dm-ogl APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
+  VALIDATE_STYLE(dm-ogl "${OGL_SRCS}")
+
+  PLUGIN_SETUP(dm-ogl dm)
+
+endif(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_OPENGL)
+
+CMAKEFILES(
+  CMakeLists.txt
+  ${OGL_SRCS}
+  dm-ogl.h
+  )
+
 # Local Variables:
 # tab-width: 8
 # mode: cmake

Modified: brlcad/branches/bioh/src/libdm/glx/dm-ogl.c
===================================================================
--- brlcad/branches/bioh/src/libdm/glx/dm-ogl.c 2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/glx/dm-ogl.c 2020-08-06 18:05:03 UTC (rev 
76677)
@@ -416,6 +416,19 @@
     return BRLCAD_OK;
 }
 
+HIDDEN int
+ogl_doevent(struct dm *dmp, void *UNUSED(vclientData), void *veventPtr)
+{
+    XEvent *eventPtr= (XEvent *)veventPtr;
+    if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
+       (void)dm_make_current(dmp);
+       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+       dm_set_dirty(dmp, 1);
+       return TCL_OK;
+    }
+    /* allow further processing of this event */
+    return TCL_OK;
+}
 
 HIDDEN int
 ogl_configureWin(struct dm *dmp, int force)
@@ -3032,6 +3045,7 @@
     ogl_getDisplayImage, /* display to image function */
     ogl_reshape,
     ogl_makeCurrent,
+    ogl_doevent,
     ogl_openFb,
     ogl_get_internal,
     ogl_put_internal,
@@ -3044,6 +3058,7 @@
     ogl_fogHint,
     ogl_share_dlist,
     0,
+    1,                         /* is graphical */
     1,                         /* has displaylist */
     0,                          /* no stereo by default */
     1.0,                       /* zoom-in limit */
@@ -3050,9 +3065,10 @@
     1,                         /* bound flag */
     "ogl",
     "X Windows with OpenGL graphics",
-    1,
-    0,
-    0,
+    1, /* top */
+    0, /* width */
+    0, /* height */
+    0, /* dirty */
     0, /* bytes per pixel */
     0, /* bits per channel */
     0,

Modified: brlcad/branches/bioh/src/libdm/glx/dm-ogl.h
===================================================================
--- brlcad/branches/bioh/src/libdm/glx/dm-ogl.h 2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/glx/dm-ogl.h 2020-08-06 18:05:03 UTC (rev 
76677)
@@ -48,7 +48,47 @@
 /* Map +/-2048 GED space into -1.0..+1.0 :: x/2048*/
 #define GED2IRIS(x)    (((float)(x))*0.00048828125)
 
+#define DM_REVERSE_COLOR_BYTE_ORDER(_shift, _mask) {    \
+        _shift = 24 - _shift;                           \
+        switch (_shift) {                               \
+            case 0:                                     \
+                _mask >>= 24;                           \
+                break;                                  \
+            case 8:                                     \
+                _mask >>= 8;                            \
+                break;                                  \
+            case 16:                                    \
+                _mask <<= 8;                            \
+                break;                                  \
+            case 24:                                    \
+                _mask <<= 24;                           \
+                break;                                  \
+        }                                               \
+    }
 
+extern struct dm dm_ogl;
+
+#define Ogl_MV_O(_m) offsetof(struct modifiable_ogl_vars, _m)
+
+struct modifiable_ogl_vars {
+    struct dm *this_dm;
+    int cueing_on;
+    int zclipping_on;
+    int zbuffer_on;
+    int lighting_on;
+    int transparency_on;
+    int fastfog;
+    double fogdensity;
+    int zbuf;
+    int rgb;
+    int doublebuffer;
+    int depth;
+    int debug;
+    struct bu_vls log;
+    double bound;
+    int boundFlag;
+};
+
 struct ogl_vars {
     GLXContext glxc;
     GLdouble faceplate_mat[16];

Modified: brlcad/branches/bioh/src/libdm/glx/fb_ogl.h
===================================================================
--- brlcad/branches/bioh/src/libdm/glx/fb_ogl.h 2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/glx/fb_ogl.h 2020-08-06 18:05:03 UTC (rev 
76677)
@@ -30,7 +30,6 @@
 /** @} */
 
 #ifdef FB_USE_INTERNAL_API
-#ifdef IF_OGL
 #include "common.h"
 #  ifdef HAVE_X11_XLIB_H
 #    include <X11/Xlib.h>
@@ -68,7 +67,6 @@
     int double_buffer;
     int soft_cmap;
 };
-#endif /* IF_OGL */
 #endif /* FB_USE_INTERNAL_API */
 
 /*

Modified: brlcad/branches/bioh/src/libdm/glx/if_ogl.c
===================================================================
--- brlcad/branches/bioh/src/libdm/glx/if_ogl.c 2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/glx/if_ogl.c 2020-08-06 18:05:03 UTC (rev 
76677)
@@ -36,8 +36,6 @@
 
 #include "common.h"
 
-#ifdef IF_OGL
-
 #ifdef HAVE_SYS_TYPES_H
 #  include <sys/types.h>
 #endif
@@ -2363,13 +2361,6 @@
  * collisions until the end of this file */
 #undef class
 
-#else
-
-/* quell empty-compilation unit warnings */
-static const int unused = 0;
-
-#endif /* IF_OGL */
-
 /*
  * Local Variables:
  * mode: C

Modified: brlcad/branches/bioh/src/libdm/include/calltable.h
===================================================================
--- brlcad/branches/bioh/src/libdm/include/calltable.h  2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/include/calltable.h  2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -96,6 +96,7 @@
     int (*dm_getDisplayImage)(struct dm *dmp, unsigned char **image);  /**< 
@brief (0,0) is upper left pixel */
     int (*dm_reshape)(struct dm *dmp, int width, int height);
     int (*dm_makeCurrent)(struct dm *dmp);
+    int (*dm_doevent)(struct dm *dmp, void *clientData, void *eventPtr);
     int (*dm_openFb)(struct dm *dmp);
     int (*dm_get_internal)(struct dm *dmp);
     int (*dm_put_internal)(struct dm *dmp);
@@ -108,6 +109,7 @@
     void (*dm_fogHint)(struct dm *dmp, int fastfog);
     int (*dm_share_dlist)(struct dm *dmp1, struct dm *dmp2);
     unsigned long dm_id;          /**< @brief window id */
+    int dm_graphical;          /**< @brief !0 means device supports 
interactive graphics */
     int dm_displaylist;                /**< @brief !0 means device has 
displaylist */
     int dm_stereo;                /**< @brief stereo flag */
     double dm_bound;           /**< @brief zoom-in limit */
@@ -117,6 +119,7 @@
     int dm_top;                   /**< @brief !0 means toplevel window */
     int dm_width;
     int dm_height;
+    int dm_dirty;
     int dm_bytes_per_pixel;
     int dm_bits_per_channel;  /* bits per color channel */
     int dm_lineWidth;

Modified: brlcad/branches/bioh/src/libdm/include/private.h
===================================================================
--- brlcad/branches/bioh/src/libdm/include/private.h    2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/include/private.h    2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -107,55 +107,7 @@
        (_dr) == (_sr) &&\
        (_dg) == (_sg) &&\
        (_db) == (_sb))
-#if defined(DM_X) || defined(DM_OGL)
-#define DM_REVERSE_COLOR_BYTE_ORDER(_shift, _mask) {   \
-       _shift = 24 - _shift;                           \
-       switch (_shift) {                               \
-           case 0:                                     \
-               _mask >>= 24;                           \
-               break;                                  \
-           case 8:                                     \
-               _mask >>= 8;                            \
-               break;                                  \
-           case 16:                                    \
-               _mask <<= 8;                            \
-               break;                                  \
-           case 24:                                    \
-               _mask <<= 24;                           \
-               break;                                  \
-       }                                               \
-    }
-#else
-/* Do nothing */
-#define DM_REVERSE_COLOR_BYTE_ORDER(_shift, _mask)
-#endif
 
-
-
-#if defined(DM_OGL) || defined(DM_WGL)
-#define Ogl_MV_O(_m) offsetof(struct modifiable_ogl_vars, _m)
-
-struct modifiable_ogl_vars {
-    struct dm *this_dm;
-    int cueing_on;
-    int zclipping_on;
-    int zbuffer_on;
-    int lighting_on;
-    int transparency_on;
-    int fastfog;
-    double fogdensity;
-    int zbuf;
-    int rgb;
-    int doublebuffer;
-    int depth;
-    int debug;
-    struct bu_vls log;
-    double bound;
-    int boundFlag;
-};
-#endif
-
-
 __BEGIN_DECLS
 
 int

Modified: brlcad/branches/bioh/src/libdm/null/dm-Null.c
===================================================================
--- brlcad/branches/bioh/src/libdm/null/dm-Null.c       2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/null/dm-Null.c       2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -293,6 +293,11 @@
     return 0;
 }
 
+int
+null_doevent(struct dm *UNUSED(dmp), void *UNUSED(clientData), void 
*UNUSED(eventPtr))
+{
+    return 0;
+}
 
 int
 null_openFb(struct dm *UNUSED(dmp))
@@ -341,6 +346,7 @@
     null_getDisplayImage,
     null_reshape,
     null_makeCurrent,
+    null_doevent,
     null_openFb,
     NULL,
     NULL,
@@ -353,6 +359,7 @@
     NULL,
     NULL,
     0,
+    0,                         /* not graphical */
     0,                         /* no displaylist */
     0,                         /* no stereo */
     0.0,                       /* zoom-in limit */
@@ -362,6 +369,7 @@
     0,/* top */
     0,/* width */
     0,/* height */
+    0,/* dirty */
     0,/* bytes per pixel */
     0,/* bits per channel */
     0,

Modified: brlcad/branches/bioh/src/libdm/null/dm-Null.h
===================================================================
--- brlcad/branches/bioh/src/libdm/null/dm-Null.h       2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/null/dm-Null.h       2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -194,6 +194,10 @@
 null_makeCurrent(struct dm *dmp);
 
 
+DM_NULL_EXPORT extern int
+null_doevent(struct dm *dmp, void *clientData, void *eventPtr);
+
+
 DM_NULL_EXPORT extern void
 null_processEvents(struct dm *dmp);
 

Modified: brlcad/branches/bioh/src/libdm/osgl/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/osgl/CMakeLists.txt  2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/osgl/CMakeLists.txt  2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -1,54 +1,72 @@
-# Make sure we know about required components
-find_package(X11)
-find_package(GL)
-#find_package(OpenThreads)
-#find_package(OpenSceneGraph)
-find_package(TCL)
-
-# Include directories needed by libdm users
-include_directories(
-  ${CMAKE_CURRENT_SOURCE_DIR}
-  ${BRLCAD_BINARY_DIR}/include
-  ${BRLCAD_SOURCE_DIR}/include
-  ${BU_INCLUDE_DIRS}
-  ${RT_INCLUDE_DIRS}
-  ${X11_INCLUDE_DIR}
-  ${OPENGL_INCLUDE_DIR_GL}
-  ${OPENGL_INCLUDE_DIR_GLX}
-  ${TCL_INCLUDE_PATH}
-  ${TK_INCLUDE_PATH}
-  ${OPENTHREADS_INCLUDE_DIR}
-  ${OSG_INCLUDE_DIR}
-  )
-
-set(OSGL_LIBRARIES
-  ${OPENGL_LIBRARIES}
-  ${TCL_LIBRARY}
-  ${TK_LIBRARY}
-  ${OSG_LIBRARY}
-  ${OSGTEXT_LIBRARY}
-  ${OSGVIEWER_LIBRARY}
-  )
-
 set(OSGL_SRCS
   dm-osgl.cpp
   if_osgl.cpp
   )
 
-set_property(SOURCE dm-osgl.cpp APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
-set_property(SOURCE if_osgl.cpp APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+if(BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_OSG)
 
-add_definitions(-DDM_PLUGIN)
-add_definitions(-DDM_OSGL -DIF_OSGL)
+  # Make sure we know about required components
+  find_package(X11)
+  find_package(GL)
+  #find_package(OpenThreads)
+  #find_package(OpenSceneGraph)
+  find_package(TCL)
 
-add_library(dm-osgl SHARED ${OSGL_SRCS})
-target_link_libraries(dm-osgl libdm librt libbu ${OSGL_LIBRARIES})
-set_property(TARGET dm-osgl APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-osgl "${OSGL_SRCS}")
+  # Include directories needed by libdm users
+  include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${BRLCAD_BINARY_DIR}/include
+    ${BRLCAD_SOURCE_DIR}/include
+    ${BU_INCLUDE_DIRS}
+    ${RT_INCLUDE_DIRS}
+    ${X11_INCLUDE_DIR}
+    ${OPENGL_INCLUDE_DIR_GL}
+    ${OPENGL_INCLUDE_DIR_GLX}
+    ${TCL_INCLUDE_PATH}
+    ${TK_INCLUDE_PATH}
+    ${OPENTHREADS_INCLUDE_DIR}
+    ${OSG_INCLUDE_DIR}
+    )
 
-PLUGIN_SETUP(dm-osgl dm)
+  set(OSGL_LIBRARIES
+    ${OPENGL_LIBRARIES}
+    ${TCL_LIBRARY}
+    ${TK_LIBRARY}
+    ${OSG_LIBRARY}
+    ${OSGTEXT_LIBRARY}
+    ${OSGVIEWER_LIBRARY}
+    )
 
+  set_property(SOURCE dm-osgl.cpp APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+  set_property(SOURCE if_osgl.cpp APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+
+  add_definitions(-DDM_PLUGIN)
+
+  add_library(dm-osgl SHARED ${OSGL_SRCS})
+  target_link_libraries(dm-osgl libdm librt libbu ${OSGL_LIBRARIES})
+  set_property(TARGET dm-osgl APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
+  VALIDATE_STYLE(dm-osgl "${OSGL_SRCS}")
+
+  PLUGIN_SETUP(dm-osgl dm)
+
+endif(BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_OSG)
+
+#if(BRLCAD_ENABLE_OSG)
+#  BRLCAD_ADDEXEC(osg-test osg-test.cpp "librt;libbu;${OSG_LIBRARIES}" 
NO_STRICT NO_INSTALL)
+#  if(HIDE_INTERNAL_SYMBOLS)
+#    if (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
+#      set_property(TARGET libdm APPEND PROPERTY COMPILE_DEFINITIONS 
"FREETYPE_DLL_IMPORTS")
+#    endif (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
+#    if(TARGET libdm-obj)
+#      if (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
+#        set_property(TARGET libdm-obj APPEND PROPERTY COMPILE_DEFINITIONS 
"FREETYPE_DLL_IMPORTS")
+#      endif (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
+#    endif(TARGET libdm-obj)
+#  endif(HIDE_INTERNAL_SYMBOLS)
+#endif(BRLCAD_ENABLE_OSG)
+
 CMAKEFILES(
+  ${OSGL_SRCS}
   dm-osgl.h
   fb_osgl.h
   osg-test.cpp

Modified: brlcad/branches/bioh/src/libdm/osgl/dm-osgl.cpp
===================================================================
--- brlcad/branches/bioh/src/libdm/osgl/dm-osgl.cpp     2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/osgl/dm-osgl.cpp     2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -305,6 +305,19 @@
     return TCL_OK;
 }
 
+HIDDEN int
+osgl_doevent(struct dm *dmp, void *UNUSED(vclientData), void *veventPtr)
+{
+    XEvent *eventPtr= (XEvent *)veventPtr;
+    if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
+        (void)dm_make_current(dmp);
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+        dm_set_dirty(dmp, 1);
+        return TCL_OK;
+    }
+    /* allow further processing of this event */
+    return TCL_OK;
+}
 
 HIDDEN int
 osgl_configureWin(struct dm *dmp, int force)
@@ -2682,6 +2695,7 @@
     osgl_getDisplayImage, /* display to image function */
     osgl_reshape,
     osgl_makeCurrent,
+    osgl_doevent,
     osgl_openFb,
     osgl_get_internal,
     osgl_put_internal,
@@ -2694,6 +2708,7 @@
     NULL,
     NULL,
     0,
+    1,                         /* is graphical */
     1,                         /* has displaylist */
     0,                          /* no stereo by default */
     1.0,                       /* zoom-in limit */
@@ -2700,9 +2715,10 @@
     1,                         /* bound flag */
     "osgl",
     "OpenGL graphics via OpenSceneGraph",
-    1,
-    0,
-    0,
+    1, /* top */
+    0, /* width */
+    0, /* height */
+    0, /* dirty */
     0, /* bytes per pixel */
     0, /* bits per channel */
     0,

Modified: brlcad/branches/bioh/src/libdm/osgl/dm-osgl.h
===================================================================
--- brlcad/branches/bioh/src/libdm/osgl/dm-osgl.h       2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/osgl/dm-osgl.h       2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -94,6 +94,8 @@
 /* Map +/-2048 GED space into -1.0..+1.0 :: x/2048*/
 #define GED2IRIS(x)    (((float)(x))*0.00048828125)
 
+extern struct dm dm_osgl;
+
 #define Osgl_MV_O(_m) offsetof(struct modifiable_osgl_vars, _m)
 
 struct modifiable_osgl_vars {

Modified: brlcad/branches/bioh/src/libdm/osgl/fb_osgl.h
===================================================================
--- brlcad/branches/bioh/src/libdm/osgl/fb_osgl.h       2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/osgl/fb_osgl.h       2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -30,7 +30,6 @@
 /** @} */
 
 #ifdef FB_USE_INTERNAL_API
-#ifdef IF_OSGL
 #include "common.h"
 
 #ifdef HAVE_SIGNAL_H
@@ -120,7 +119,6 @@
     int double_buffer;
     int soft_cmap;
 };
-#endif /* IF_OSGL */
 
 #endif /* FB_USE_INTERNAL_API */
 

Modified: brlcad/branches/bioh/src/libdm/osgl/if_osgl.cpp
===================================================================
--- brlcad/branches/bioh/src/libdm/osgl/if_osgl.cpp     2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/osgl/if_osgl.cpp     2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -35,8 +35,6 @@
 /** @} */
 
 
-#ifdef IF_OSGL
-
 #include "common.h"
 
 #include <osg/GLExtensions>
@@ -1528,13 +1526,6 @@
  * collisions until the end of this file */
 #undef class
 
-#else
-
-/* quell empty-compilation unit warnings */
-static const int unused = 0;
-
-#endif /* IF_OSGL */
-
 /*
  * Local Variables:
  * mode: C

Modified: brlcad/branches/bioh/src/libdm/plot/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/plot/CMakeLists.txt  2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/plot/CMakeLists.txt  2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -1,26 +1,34 @@
-include_directories(
-  ${CMAKE_CURRENT_SOURCE_DIR}
-  ${BRLCAD_BINARY_DIR}/include
-  ${BRLCAD_SOURCE_DIR}/include
-  ${BU_INCLUDE_DIRS}
-  ${TCL_INCLUDE_PATH}
-  )
-
 set(PLOT_SRCS
   dm-plot.c
   )
 
-add_definitions(-DDM_PLUGIN)
 
-add_library(dm-plot SHARED ${PLOT_SRCS})
-target_link_libraries(dm-plot libdm libbu ${TCL_LIBRARY})
-set_property(TARGET dm-plot APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-plot "${PLOT_SRCS}")
+if(BRLCAD_ENABLE_TCL)
 
-PLUGIN_SETUP(dm-plot dm)
+  include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${BRLCAD_BINARY_DIR}/include
+    ${BRLCAD_SOURCE_DIR}/include
+    ${BU_INCLUDE_DIRS}
+    ${TCL_INCLUDE_PATH}
+    )
 
-CMAKEFILES(dm-plot.h)
+  add_definitions(-DDM_PLUGIN)
 
+  add_library(dm-plot SHARED ${PLOT_SRCS})
+  target_link_libraries(dm-plot libdm libbu ${TCL_LIBRARY})
+  set_property(TARGET dm-plot APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
+  VALIDATE_STYLE(dm-plot "${PLOT_SRCS}")
+
+  PLUGIN_SETUP(dm-plot dm)
+
+endif(BRLCAD_ENABLE_TCL)
+
+CMAKEFILES(
+  ${PLOT_SRCS}
+  dm-plot.h
+  )
+
 # Local Variables:
 # tab-width: 8
 # mode: cmake

Modified: brlcad/branches/bioh/src/libdm/plot/dm-plot.c
===================================================================
--- brlcad/branches/bioh/src/libdm/plot/dm-plot.c       2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/plot/dm-plot.c       2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -704,6 +704,7 @@
     null_getDisplayImage,      /* display to image function */
     null_reshape,
     null_makeCurrent,
+    null_doevent,
     null_openFb,
     NULL,
     NULL,
@@ -716,6 +717,7 @@
     NULL,
     NULL,
     0,
+    0,                         /* not graphical */
     0,                         /* no displaylist */
     0,                         /* no stereo */
     PLOTBOUND,                 /* zoom-in limit */
@@ -722,9 +724,10 @@
     1,                         /* bound flag */
     "plot",
     "Screen to UNIX-Plot",
-    0,
-    0,
-    0,
+    0, /* top */
+    0, /* width */
+    0, /* height */
+    0, /* dirty */
     0, /* bytes per pixel */
     0, /* bits per channel */
     0,

Modified: brlcad/branches/bioh/src/libdm/plot/dm-plot.h
===================================================================
--- brlcad/branches/bioh/src/libdm/plot/dm-plot.h       2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/plot/dm-plot.h       2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -37,6 +37,8 @@
 #define        GED_TO_PLOT(x)  (x)
 #define PLOT_TO_GED(x) (x)
 
+extern struct dm dm_plot;
+
 struct plot_vars {
     struct bu_list l;
     FILE *up_fp;

Modified: brlcad/branches/bioh/src/libdm/postscript/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/postscript/CMakeLists.txt    2020-08-06 
18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/src/libdm/postscript/CMakeLists.txt    2020-08-06 
18:05:03 UTC (rev 76677)
@@ -1,25 +1,36 @@
-include_directories(
-  ${CMAKE_CURRENT_SOURCE_DIR}
-  ${BRLCAD_BINARY_DIR}/include
-  ${BRLCAD_SOURCE_DIR}/include
-  ${BU_INCLUDE_DIRS}
-  )
-
 set(PS_SRCS
   dm-ps.c
   )
 
-add_definitions(-DDM_PLUGIN)
+if(BRLCAD_ENABLE_TCL)
 
-add_library(dm-ps SHARED ${PS_SRCS})
-target_link_libraries(dm-ps libdm libbu)
-set_property(TARGET dm-ps APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-ps "${PS_SRCS}")
+  find_package(TCL)
 
-PLUGIN_SETUP(dm-ps dm)
+  include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${BRLCAD_BINARY_DIR}/include
+    ${BRLCAD_SOURCE_DIR}/include
+    ${BU_INCLUDE_DIRS}
+    ${TCL_INCLUDE_PATH}
+    )
 
-CMAKEFILES(dm-ps.h)
+  add_definitions(-DDM_PLUGIN)
 
+  add_library(dm-ps SHARED ${PS_SRCS})
+  target_link_libraries(dm-ps libdm libbu)
+  set_property(TARGET dm-ps APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
+  VALIDATE_STYLE(dm-ps "${PS_SRCS}")
+
+  PLUGIN_SETUP(dm-ps dm)
+
+endif(BRLCAD_ENABLE_TCL)
+
+CMAKEFILES(
+  CMakeLists.txt
+  ${PS_SRCS}
+  dm-ps.h
+  )
+
 # Local Variables:
 # tab-width: 8
 # mode: cmake

Modified: brlcad/branches/bioh/src/libdm/postscript/dm-ps.c
===================================================================
--- brlcad/branches/bioh/src/libdm/postscript/dm-ps.c   2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/postscript/dm-ps.c   2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -773,6 +773,7 @@
     null_getDisplayImage,      /* display to image function */
     null_reshape,
     null_makeCurrent,
+    null_doevent,
     null_openFb,
     NULL,
     NULL,
@@ -785,15 +786,17 @@
     NULL,
     NULL,
     0,
+    0,                         /* not graphical */
     0,                         /* no displaylist */
-    0,                            /* no stereo */
+    0,                          /* no stereo */
     PLOTBOUND,                 /* zoom-in limit */
     1,                         /* bound flag */
     "ps",
     "Screen to PostScript",
-    0,
-    0,
-    0,
+    0, /* top */
+    0, /* width */
+    0, /* height */
+    0, /* dirty */
     0, /* bytes per pixel */
     0, /* bits per channel */
     0,

Modified: brlcad/branches/bioh/src/libdm/postscript/dm-ps.h
===================================================================
--- brlcad/branches/bioh/src/libdm/postscript/dm-ps.h   2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/postscript/dm-ps.h   2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -34,6 +34,8 @@
  */
 #define        GED_TO_PS(x)    ((int)((x)+2048))
 
+extern struct dm dm_ps;
+
 struct ps_vars {
     struct bu_list l;
     FILE *ps_fp;

Modified: brlcad/branches/bioh/src/libdm/qt/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/qt/CMakeLists.txt    2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/qt/CMakeLists.txt    2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -1,46 +1,51 @@
-# Make sure we know about required components
-find_package(X11)
-find_package(GL)
-find_package(Qt5Widgets QUIET)
-find_package(TCL)
-
-# Include directories needed by libdm users
-include_directories(
-  ${CMAKE_CURRENT_SOURCE_DIR}
-  ${CMAKE_CURRENT_SOURCE_DIR}/../include
-  ${BRLCAD_BINARY_DIR}/include
-  ${BRLCAD_SOURCE_DIR}/include
-  ${BU_INCLUDE_DIRS}
-  ${TCL_INCLUDE_PATH}
-  ${TK_INCLUDE_PATH}
-  ${Qt5Widgets_INCLUDE_DIRS}
-  )
-
-set(QT_LIBRARIES
-  ${TCL_LIBRARY}
-  ${TK_LIBRARY}
-  ${Qt5Widgets_LIBRARIES}
-  )
-
 set(QT_SRCS
   dm-qt.cpp
   if_qt.cpp
   )
 
-set_property(SOURCE dm-qt.cpp APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
-set_property(SOURCE if_qt.cpp APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+if(BRLCAD_ENABLE_QT)
 
-add_definitions(-DDM_PLUGIN)
-add_definitions(-DDM_QT -DIF_QT)
+  # Make sure we know about required components
+  find_package(X11)
+  find_package(GL)
+  find_package(Qt5Widgets QUIET)
+  find_package(TCL)
 
-add_library(dm-qt SHARED ${QT_SRCS})
-target_link_libraries(dm-qt libdm libbu ${QT_LIBRARIES})
-set_property(TARGET dm-qt APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-qt "${QT_SRCS}")
+  # Include directories needed by libdm users
+  include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/../include
+    ${BRLCAD_BINARY_DIR}/include
+    ${BRLCAD_SOURCE_DIR}/include
+    ${BU_INCLUDE_DIRS}
+    ${TCL_INCLUDE_PATH}
+    ${TK_INCLUDE_PATH}
+    ${Qt5Widgets_INCLUDE_DIRS}
+    )
 
-PLUGIN_SETUP(dm-qt dm)
+  set(QT_LIBRARIES
+    ${TCL_LIBRARY}
+    ${TK_LIBRARY}
+    ${Qt5Widgets_LIBRARIES}
+    )
 
+  set_property(SOURCE dm-qt.cpp APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+  set_property(SOURCE if_qt.cpp APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+
+  add_definitions(-DDM_PLUGIN)
+
+  add_library(dm-qt SHARED ${QT_SRCS})
+  target_link_libraries(dm-qt libdm libbu ${QT_LIBRARIES})
+  set_property(TARGET dm-qt APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
+  VALIDATE_STYLE(dm-qt "${QT_SRCS}")
+
+  PLUGIN_SETUP(dm-qt dm)
+
+endif(BRLCAD_ENABLE_QT)
+
 CMAKEFILES(
+  CMakeLists.txt
+  ${QT_SRCS}
   fb_qt.h
   )
 

Modified: brlcad/branches/bioh/src/libdm/qt/dm-qt.cpp
===================================================================
--- brlcad/branches/bioh/src/libdm/qt/dm-qt.cpp 2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/qt/dm-qt.cpp 2020-08-06 18:05:03 UTC (rev 
76677)
@@ -1347,6 +1347,7 @@
     qt_getDisplayImage,
     qt_reshape,
     null_makeCurrent,
+    null_doevent,
     qt_openFb,
     NULL,
     NULL,
@@ -1359,6 +1360,7 @@
     NULL,
     NULL,
     0,
+    1,                         /* is graphical */
     0,                         /* no displaylist */
     0,                         /* no stereo */
     0.0,                       /* zoom-in limit */
@@ -1368,6 +1370,7 @@
     1,
     0,/* width */
     0,/* height */
+    0,/* dirty */
     0,/* bytes per pixel */
     0,/* bits per channel */
     0,

Modified: brlcad/branches/bioh/src/libdm/qt/dm-qt.h
===================================================================
--- brlcad/branches/bioh/src/libdm/qt/dm-qt.h   2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/qt/dm-qt.h   2020-08-06 18:05:03 UTC (rev 
76677)
@@ -85,6 +85,8 @@
     int devbuttonrelease;
 };
 
+extern struct dm dm_qt;
+
 #endif /* DM_QT_H */
 
 /** @} */

Modified: brlcad/branches/bioh/src/libdm/qt/fb_qt.h
===================================================================
--- brlcad/branches/bioh/src/libdm/qt/fb_qt.h   2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/qt/fb_qt.h   2020-08-06 18:05:03 UTC (rev 
76677)
@@ -30,7 +30,6 @@
 /** @} */
 
 #ifdef FB_USE_INTERNAL_API
-#ifdef IF_QT
 #include "common.h"
 #include <QApplication>
 #include <QPainter>
@@ -46,7 +45,6 @@
     void *draw;
     void **qimg;
 };
-#endif /* IF_QT */
 #endif /* FB_USE_INTERNAL_API */
 
 /*

Modified: brlcad/branches/bioh/src/libdm/tests/dm_test.c
===================================================================
--- brlcad/branches/bioh/src/libdm/tests/dm_test.c      2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/tests/dm_test.c      2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -36,10 +36,10 @@
 
     bu_log("load msgs: %s\n", dm_init_msgs());
 
-    struct bu_vls *blist = dm_list_types("\n   ");
-    bu_log("Available types:\n %s\n", bu_vls_cstr(blist));
-    bu_vls_free(blist);
-    BU_PUT(blist, struct bu_vls);
+    struct bu_vls blist = BU_VLS_INIT_ZERO;
+    dm_list_types(&blist, "\n  ");
+    bu_log("Available types:\n %s\n", bu_vls_cstr(&blist));
+    bu_vls_free(&blist);
 
     int vtype;
     vtype = dm_valid_type("nu", NULL);

Modified: brlcad/branches/bioh/src/libdm/tk/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/tk/CMakeLists.txt    2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/tk/CMakeLists.txt    2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -1,34 +1,41 @@
-find_package(TCL)
-
-include_directories(
-  ${CMAKE_CURRENT_SOURCE_DIR}
-  ${BRLCAD_BINARY_DIR}/include
-  ${BRLCAD_SOURCE_DIR}/include
-  ${BU_INCLUDE_DIRS}
-  ${TCL_INCLUDE_PATH}
-  ${TK_INCLUDE_PATH}
-  )
-
 set(TK_SRCS
   dm-tk.c
   if_tk.c
   )
 
-set_property(SOURCE dm-tk.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
-set_property(SOURCE if_tk24.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+if(BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_DM_TK)
 
-add_definitions(-DDM_PLUGIN)
-add_definitions(-DDM_TK -DIF_TK)
+  find_package(TCL)
 
-add_library(dm-tk SHARED ${TK_SRCS})
-target_link_libraries(dm-tk libdm libbu ${TCL_LIBRARY} ${TK_LIBRARY})
-set_property(TARGET dm-tk APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-tk "${TK_SRCS}")
+  include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${BRLCAD_BINARY_DIR}/include
+    ${BRLCAD_SOURCE_DIR}/include
+    ${BU_INCLUDE_DIRS}
+    ${TCL_INCLUDE_PATH}
+    ${TK_INCLUDE_PATH}
+    )
 
-PLUGIN_SETUP(dm-tk dm)
+  set_property(SOURCE dm-tk.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+  set_property(SOURCE if_tk24.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
 
-CMAKEFILES(dm-tk.h)
+  add_definitions(-DDM_PLUGIN)
 
+  add_library(dm-tk SHARED ${TK_SRCS})
+  target_link_libraries(dm-tk libdm libbu ${TCL_LIBRARY} ${TK_LIBRARY})
+  set_property(TARGET dm-tk APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
+  VALIDATE_STYLE(dm-tk "${TK_SRCS}")
+
+  PLUGIN_SETUP(dm-tk dm)
+
+endif(BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_DM_TK)
+
+CMAKEFILES(
+  CMakeLists.txt
+  ${TK_SRCS}
+  dm-tk.h
+  )
+
 # Local Variables:
 # tab-width: 8
 # mode: cmake

Modified: brlcad/branches/bioh/src/libdm/tk/dm-tk.c
===================================================================
--- brlcad/branches/bioh/src/libdm/tk/dm-tk.c   2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/tk/dm-tk.c   2020-08-06 18:05:03 UTC (rev 
76677)
@@ -1146,6 +1146,7 @@
     null_getDisplayImage,      /* display to image function */
     null_reshape,
     null_makeCurrent,
+    null_doevent,
     null_openFb,
     NULL,
     NULL,
@@ -1158,6 +1159,7 @@
     NULL,
     NULL,
     0,
+    1,                         /* is graphical */
     0,                         /* no displaylist */
     0,                         /* no stereo */
     PLOTBOUND,                 /* zoom-in limit */
@@ -1164,9 +1166,10 @@
     1,                         /* bound flag */
     "Tk",
     "Tcl/Tk Abstraction Layer",
-    1,
-    0,
-    0,
+    1, /* top */
+    0, /* width */
+    0, /* height */
+    0, /* dirty */
     0, /* bytes per pixel */
     0, /* bits per channel */
     0,

Modified: brlcad/branches/bioh/src/libdm/tk/dm-tk.h
===================================================================
--- brlcad/branches/bioh/src/libdm/tk/dm-tk.h   2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/tk/dm-tk.h   2020-08-06 18:05:03 UTC (rev 
76677)
@@ -36,6 +36,8 @@
 
 #define INIT_XCOLOR(c) memset((c), 0, sizeof(XColor))
 
+extern struct dm dm_tk;
+
 struct tk_vars {
     GC gc;
     Pixmap pix;

Modified: brlcad/branches/bioh/src/libdm/txt/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/txt/CMakeLists.txt   2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/txt/CMakeLists.txt   2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -1,25 +1,36 @@
-include_directories(
-  ${CMAKE_CURRENT_SOURCE_DIR}
-  ${BRLCAD_BINARY_DIR}/include
-  ${BRLCAD_SOURCE_DIR}/include
-  ${BU_INCLUDE_DIRS}
-  ${TCL_INCLUDE_PATH}
-  )
-
 set(TXT_SRCS
   dm-txt.c
   if_debug.c
   )
 
-add_definitions(-DDM_PLUGIN)
+if(BRLCAD_ENABLE_TCL)
 
-add_library(dm-txt SHARED ${TXT_SRCS})
-target_link_libraries(dm-txt libdm libbu ${TCL_LIBRARY})
-set_property(TARGET dm-txt APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-txt "${TXT_SRCS}")
+  find_package(TCL)
 
-PLUGIN_SETUP(dm-txt dm)
+  include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${BRLCAD_BINARY_DIR}/include
+    ${BRLCAD_SOURCE_DIR}/include
+    ${BU_INCLUDE_DIRS}
+    ${TCL_INCLUDE_PATH}
+    )
 
+  add_definitions(-DDM_PLUGIN)
+
+  add_library(dm-txt SHARED ${TXT_SRCS})
+  target_link_libraries(dm-txt libdm libbu ${TCL_LIBRARY})
+  set_property(TARGET dm-txt APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
+  VALIDATE_STYLE(dm-txt "${TXT_SRCS}")
+
+  PLUGIN_SETUP(dm-txt dm)
+
+endif(BRLCAD_ENABLE_TCL)
+
+CMAKEFILES(
+  CMakeLists.txt
+  ${TXT_SRCS}
+  )
+
 # Local Variables:
 # tab-width: 8
 # mode: cmake

Modified: brlcad/branches/bioh/src/libdm/txt/dm-txt.c
===================================================================
--- brlcad/branches/bioh/src/libdm/txt/dm-txt.c 2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/txt/dm-txt.c 2020-08-06 18:05:03 UTC (rev 
76677)
@@ -32,6 +32,8 @@
 #include "dm.h"
 #include "../include/private.h"
 
+extern struct dm dm_txt;
+
 struct dm *
 txt_open(void *interp, int argc, const char **argv)
 {
@@ -341,6 +343,13 @@
 
 
 HIDDEN int
+txt_doevent(struct dm *UNUSED(dmp), void *UNUSED(vclientData), void 
*UNUSED(veventPtr))
+{
+    bu_log("doevent called\n");
+    return 0;
+}
+
+HIDDEN int
 txt_openFb(struct dm *UNUSED(dmp))
 {
     bu_log("openFb called\n");
@@ -388,6 +397,7 @@
     txt_getDisplayImage,
     txt_reshape,
     txt_makeCurrent,
+    txt_doevent,
     txt_openFb,
     NULL,
     NULL,
@@ -400,6 +410,7 @@
     NULL,
     NULL,
     0,
+    0,                         /* not graphical */
     0,                         /* no displaylist */
     0,                         /* no stereo */
     0.0,                       /* zoom-in limit */
@@ -409,6 +420,7 @@
     0,/* top */
     0,/* width */
     0,/* height */
+    0,/* dirty */
     0,/* bytes per pixel */
     0,/* bits per channel */
     0,

Modified: brlcad/branches/bioh/src/libdm/wgl/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/wgl/CMakeLists.txt   2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/wgl/CMakeLists.txt   2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -1,35 +1,42 @@
-find_package(GL)
-find_package(TCL)
-
-include_directories(
-  ${CMAKE_CURRENT_SOURCE_DIR}
-  ${BRLCAD_BINARY_DIR}/include
-  ${BRLCAD_SOURCE_DIR}/include
-  ${OPENGL_INCLUDE_DIR_GL}
-  ${TCL_INCLUDE_PATH}
-  ${TK_INCLUDE_PATH}
-  )
-
 set(WGL_SRCS
   dm-wgl.c
   if_wgl.c
   )
 
-set_property(SOURCE dm-wgl.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
-set_property(SOURCE if_wgl.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+if(WIN32 AND BRLCAD_ENABLE_OPENGL)
 
-add_definitions(-DDM_PLUGIN)
-add_definitions(-DDM_WGL -DIF_WGL)
+  find_package(GL)
+  find_package(TCL)
 
-add_library(dm-wgl SHARED ${WGL_SRCS})
-target_link_libraries(dm-wgl libdm libbu ${TCL_LIBRARY} ${TK_LIBRARY} 
${OPENGL32_LIBRARY} ${OPENGL_LIBRARIES})
-set_property(TARGET dm-wgl APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-wgl "${WGL_SRCS}")
+  include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${BRLCAD_BINARY_DIR}/include
+    ${BRLCAD_SOURCE_DIR}/include
+    ${OPENGL_INCLUDE_DIR_GL}
+    ${TCL_INCLUDE_PATH}
+    ${TK_INCLUDE_PATH}
+    )
 
-PLUGIN_SETUP(dm-wgl dm)
+  set_property(SOURCE dm-wgl.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
+  set_property(SOURCE if_wgl.c APPEND PROPERTY COMPILE_DEFINITIONS 
FB_USE_INTERNAL_API)
 
-CMAKEFILES(dm-wgl.h)
+  add_definitions(-DDM_PLUGIN)
 
+  add_library(dm-wgl SHARED ${WGL_SRCS})
+  target_link_libraries(dm-wgl libdm libbu ${TCL_LIBRARY} ${TK_LIBRARY} 
${OPENGL32_LIBRARY} ${OPENGL_LIBRARIES})
+  set_property(TARGET dm-wgl APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD 
HAVE_CONFIG_H)
+  VALIDATE_STYLE(dm-wgl "${WGL_SRCS}")
+
+  PLUGIN_SETUP(dm-wgl dm)
+
+endif(WIN32 AND BRLCAD_ENABLE_OPENGL)
+
+CMAKEFILES(
+  CMakeLists.txt
+  ${WGL_SRCS}
+  dm-wgl.h
+  )
+
 # Local Variables:
 # tab-width: 8
 # mode: cmake

Modified: brlcad/branches/bioh/src/libdm/wgl/dm-wgl.c
===================================================================
--- brlcad/branches/bioh/src/libdm/wgl/dm-wgl.c 2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/wgl/dm-wgl.c 2020-08-06 18:05:03 UTC (rev 
76677)
@@ -1786,7 +1786,26 @@
     return BRLCAD_OK;
 }
 
+HIDDEN int
+wgl_doevent(struct dm *dmp, void *UNUSED(vclientData), void *veventPtr)
+{
+    XEvent *eventPtr= (XEvent *)veventPtr;
+    if (!dm_make_current(dmp))
+        /* allow further processing of this event */
+        return TCL_OK;
 
+    if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+        dm_set_dirty(dmp, 1);
+        /* no further processing for this event */
+        return TCL_RETURN;
+    }
+    /* allow further processing of this event */
+    return TCL_OK;
+}
+
+
 HIDDEN int
 wgl_configureWin(struct dm *dmp, int force)
 {
@@ -2312,6 +2331,7 @@
     wgl_getDisplayImage,       /* display to image function */
     wgl_reshape,
     wgl_makeCurrent,
+    wgl_doevent,
     wgl_openFb,
     wgl_get_internal,
     wgl_put_internal,
@@ -2324,6 +2344,7 @@
     wgl_fogHint,
     wgl_share_dlist,
     0,
+    1,                         /* is graphical */
     1,                         /* has displaylist */
     0,                          /* no stereo by default */
     1.0,                       /* zoom-in limit */
@@ -2330,9 +2351,10 @@
     1,                         /* bound flag */
     "wgl",
     "Windows with OpenGL graphics",
-    1,
-    0,
-    0,
+    1, /* top */
+    0, /* width */
+    0, /* height */
+    0, /* dirty */
     0, /* bytes per pixel */
     0, /* bits per channel */
     1,

Modified: brlcad/branches/bioh/src/libdm/wgl/dm-wgl.h
===================================================================
--- brlcad/branches/bioh/src/libdm/wgl/dm-wgl.h 2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/wgl/dm-wgl.h 2020-08-06 18:05:03 UTC (rev 
76677)
@@ -46,6 +46,29 @@
 /* Map +/-2048 GED space into -1.0..+1.0 :: x/2048*/
 #define GED2IRIS(x)    (((float)(x))*0.00048828125)
 
+extern struct dm dm_wgl;
+
+#define Ogl_MV_O(_m) offsetof(struct modifiable_ogl_vars, _m)
+
+struct modifiable_ogl_vars {
+    struct dm *this_dm;
+    int cueing_on;
+    int zclipping_on;
+    int zbuffer_on;
+    int lighting_on;
+    int transparency_on;
+    int fastfog;
+    double fogdensity;
+    int zbuf;
+    int rgb;
+    int doublebuffer;
+    int depth;
+    int debug;
+    struct bu_vls log;
+    double bound;
+    int boundFlag;
+};
+
 struct dm_wglvars {
     Display *dpy;
     Window win;

Modified: brlcad/branches/bioh/src/libdm/wgl/fb_wgl.h
===================================================================
--- brlcad/branches/bioh/src/libdm/wgl/fb_wgl.h 2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libdm/wgl/fb_wgl.h 2020-08-06 18:05:03 UTC (rev 
76677)
@@ -30,7 +30,6 @@
 /** @} */
 
 #ifdef FB_USE_INTERNAL_API
-#ifdef IF_WGL
 #  include "common.h"
 
 #  include "bio.h"
@@ -52,7 +51,6 @@
     int double_buffer;
     int soft_cmap;
 };
-#endif /* IF_WGL */
 #endif /* FB_USE_INTERNAL_API */
 
 /*

Modified: brlcad/branches/bioh/src/libtclcad/dm.c
===================================================================
--- brlcad/branches/bioh/src/libtclcad/dm.c     2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/libtclcad/dm.c     2020-08-06 18:05:03 UTC (rev 
76677)
@@ -2930,10 +2930,10 @@
            int UNUSED(argc),
            const char **UNUSED(argv))
 {
-    struct bu_vls *list = dm_list_types(",");
-    Tcl_SetResult(interp, bu_vls_addr(list), TCL_VOLATILE);
-    bu_vls_free(list);
-    BU_PUT(list, struct bu_vls);
+    struct bu_vls list = BU_VLS_INIT_ZERO;
+    dm_list_types(&list, ",");
+    Tcl_SetResult(interp, bu_vls_addr(&list), TCL_VOLATILE);
+    bu_vls_free(&list);
     return TCL_OK;
 }
 

Modified: brlcad/branches/bioh/src/libtclcad/tclcad_obj.c
===================================================================
--- brlcad/branches/bioh/src/libtclcad/tclcad_obj.c     2020-08-06 18:01:54 UTC 
(rev 76676)
+++ brlcad/branches/bioh/src/libtclcad/tclcad_obj.c     2020-08-06 18:05:03 UTC 
(rev 76677)
@@ -70,14 +70,12 @@
 #include "icv/crop.h"
 #include "dm.h"
 
-#if defined(DM_OGL) || defined(DM_WGL)
-#  if defined(DM_WGL)
-#    include <tkwinport.h>
-#  endif
-#  ifdef HAVE_GL_GL_H
-#    include <GL/gl.h>
-#  endif
+#if defined(HAVE_WINDOWS_H)
+#  include <tkwinport.h>
 #endif
+#ifdef HAVE_GL_GL_H
+#  include <GL/gl.h>
+#endif
 
 /* For the moment call internal libged functions - a cleaner
  * solution will be needed eventually */
@@ -375,7 +373,7 @@
                              ged_func_ptr func,
                              const char *usage,
                              int maxargs);
-#if defined(DM_OGL) || defined(DM_WGL)
+#ifdef HAVE_GL_GL_H
 HIDDEN int to_pix(struct ged *gedp,
                  int argc,
                  const char *argv[],
@@ -910,7 +908,7 @@
     {"oscale_mode",    "obj x y", TO_UNLIMITED, to_oscale_mode, 
GED_FUNC_PTR_NULL},
     {"otranslate_mode",        "obj x y", TO_UNLIMITED, to_otranslate_mode, 
GED_FUNC_PTR_NULL},
     {"paint_rect_area",        "vname", TO_UNLIMITED, to_paint_rect_area, 
GED_FUNC_PTR_NULL},
-#if defined(DM_OGL) || defined(DM_WGL)
+#ifdef HAVE_GL_GL_H
     {"pix",    "file", TO_UNLIMITED, to_pix, GED_FUNC_PTR_NULL},
     {"png",    "file", TO_UNLIMITED, to_png, GED_FUNC_PTR_NULL},
 #endif
@@ -2921,7 +2919,6 @@
                      bu_vls_addr(&current_top->to_gedp->go_name),
                      bu_vls_addr(&gdvp->gv_name),
                      bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)));
-#ifdef DM_X
        bu_vls_printf(&bindings, "bind %s <4> {%s zoom %s 1.1; break}; ",
                      bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
                      bu_vls_addr(&current_top->to_gedp->go_name),
@@ -2930,8 +2927,6 @@
                      bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
                      bu_vls_addr(&current_top->to_gedp->go_name),
                      bu_vls_addr(&gdvp->gv_name));
-#endif
-#ifdef DM_WGL
        bu_vls_printf(&bindings, "bind %s <MouseWheel> {if {%%D < 0} {%s zoom 
%s 0.9} else {%s zoom %s 1.1}; break}; ",
                      bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
                      bu_vls_addr(&current_top->to_gedp->go_name),
@@ -2938,7 +2933,6 @@
                      bu_vls_addr(&gdvp->gv_name),
                      bu_vls_addr(&current_top->to_gedp->go_name),
                      bu_vls_addr(&gdvp->gv_name));
-#endif
 
        /* Idle Mode */
        bu_vls_printf(&bindings, "bind %s <ButtonRelease> {%s idle_mode %s}; ",
@@ -4745,7 +4739,7 @@
 }
 
 
-#if defined(DM_OGL) || defined(DM_WGL)
+#ifdef HAVE_GL_GL_H
 HIDDEN int
 to_pix(struct ged *gedp,
        int argc,

Modified: brlcad/branches/bioh/src/mged/attach.c
===================================================================
--- brlcad/branches/bioh/src/mged/attach.c      2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/mged/attach.c      2020-08-06 18:05:03 UTC (rev 
76677)
@@ -60,50 +60,6 @@
        BU_STR_EQUIV(_name, "txt") || \
        BU_STR_EQUIV(_name, "qt"))
 
-/* All systems can compile these! */
-extern int Plot_dm_init(struct dm_list *o_dm_list, int argc, const char 
*argv[]);
-extern int PS_dm_init(struct dm_list *o_dm_list, int argc, const char *argv[]);
-extern int Txt_dm_init(struct dm_list *o_dm_list, int argc, const char 
*argv[]);
-
-#ifdef DM_X
-extern int X_dm_init();
-#endif /* DM_X */
-
-#if 0
-/* Turn this off until we get it working properly... */
-#ifdef DM_TK
-extern int tk_dm_init();
-#endif /* DM_TK */
-#endif
-
-#ifdef DM_WGL
-extern int Wgl_dm_init();
-#endif /* DM_WGL */
-
-#ifdef DM_OGL
-# if defined(HAVE_TK)
-extern int Ogl_dm_init();
-# endif
-#endif /* DM_OGL */
-
-#ifdef DM_OSG
-extern int Osg_dm_init();
-#endif /* DM_OSG */
-
-#ifdef DM_GLX
-extern int Glx_dm_init();
-#endif /* DM_GLX */
-
-#ifdef DM_QT
-extern int Qt_dm_init();
-#endif /* DM_QT */
-
-#ifdef DM_OSGL
-# if defined(HAVE_TK)
-extern int Osgl_dm_init();
-# endif
-#endif /* DM_OSGL */
-
 extern void share_dlist(struct dm_list *dlp2); /* defined in share.c */
 
 extern struct _color_scheme default_color_scheme;
@@ -127,124 +83,6 @@
     }
 }
 
-#ifdef DM_OGL
-static int
-ogl_doevent(void *UNUSED(vclientData), void *veventPtr)
-{
-    /*ClientData clientData = (ClientData)vclientData;*/
-    XEvent *eventPtr= (XEvent *)veventPtr;
-    if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
-       (void)dm_make_current(DMP);
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-       dirty = 1;
-       return TCL_OK;
-    }
-    /* allow further processing of this event */
-    return TCL_OK;
-}
-#endif
-
-#ifdef DM_OSGL
-static int
-osgl_doevent(void *UNUSED(vclientData), void *veventPtr)
-{
-    /*ClientData clientData = (ClientData)vclientData;*/
-    XEvent *eventPtr= (XEvent *)veventPtr;
-    if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
-       (void)dm_make_current(DMP);
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-       dirty = 1;
-       return TCL_OK;
-    }
-    /* allow further processing of this event */
-    return TCL_OK;
-}
-#endif
-
-#ifdef DM_WGL
-/* TODO - is there a reason the dm_make_current is outside the
- * if clause on Windows but not elsewhere? */
-static int
-wgl_doevent(void *UNUSED(vclientData), void *veventPtr)
-{
-    /*ClientData clientData = (ClientData)vclientData;*/
-    XEvent *eventPtr= (XEvent *)veventPtr;
-    if (!dm_make_current(DMP))
-       /* allow further processing of this event */
-       return TCL_OK;
-
-    if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
-       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-       dirty = 1;
-       /* no further processing for this event */
-       return TCL_RETURN;
-    }
-    /* allow further processing of this event */
-    return TCL_OK;
-}
-#endif
-
-#if defined(HAVE_TK)
-static int
-x_doevent(void *UNUSED(vclientData), void *veventPtr)
-{
-    /*ClientData clientData = (ClientData)vclientData;*/
-    XEvent *eventPtr= (XEvent *)veventPtr;
-    if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
-
-       dirty = 1;
-       /* no further processing for this event */
-       return TCL_RETURN;
-    }
-    /* allow further processing of this event */
-    return TCL_OK;
-}
-#endif
-
-typedef int (*eventfptr)();
-
-struct w_dm which_dm[] = {
-    { "plot", NULL},  /* DM_PLOT_INDEX defined in mged_dm.h */
-    { "ps", NULL},      /* DM_PS_INDEX defined in mged_dm.h */
-    { "txt", NULL},
-#ifdef DM_X
-    { "X", x_doevent },
-#endif /* DM_X */
-#ifdef DM_TK
-    { "tk", NULL},
-#endif /* DM_TK */
-#ifdef DM_WGL
-    { "wgl", wgl_doevent },
-#endif /* DM_WGL */
-#ifdef DM_OGL
-#  if defined(HAVE_TK)
-    { "ogl", ogl_doevent },
-#  endif
-#endif /* DM_OGL */
-#ifdef DM_OSGL
-#  if defined(HAVE_TK)
-    { "osgl", osgl_doevent },
-#  endif
-#endif /* DM_OSGL */
-#ifdef DM_QT
-    { "qt", x_doevent },
-#endif /* DM_QT */
-    { (char *)NULL, (int (*)())NULL}
-};
-
-static eventfptr
-dm_doevent(const char *dm_type) {
-    int i = 0;
-    while (which_dm[i].name != NULL) {
-       if (dm_type == which_dm[i].name) {
-           return which_dm[i].doevent;
-       }
-       i++;
-    }
-    return NULL;
-}
-
 int
 mged_dm_init(struct dm_list *o_dm_list,
        const char *dm_type,
@@ -269,9 +107,6 @@
     dm_set_vp(DMP, &view_state->vs_gvp->gv_scale);
     dm_set_perspective(DMP, mged_variables->mv_perspective_mode);
 
-    /* TODO - look up event handler based on dm_type */
-    eventHandler = dm_doevent(dm_type);
-
 #ifdef HAVE_TK
     Tk_CreateGenericHandler(doEvent, (ClientData)NULL);
 #endif
@@ -429,45 +264,16 @@
 static void
 print_valid_dm(Tcl_Interp *interpreter)
 {
-    int i = 0;
     Tcl_AppendResult(interpreter, "\tThe following display manager types are 
valid: ", (char *)NULL);
-#ifdef DM_X
-    Tcl_AppendResult(interpreter, "X  ", (char *)NULL);
-    i++;
-#endif /* DM_X */
-#if 0
-#ifdef DM_TK
-    Tcl_AppendResult(interpreter, "tk  ", (char *)NULL);
-    i++;
-#endif /* DM_TK */
-#endif
-#ifdef DM_WGL
-    Tcl_AppendResult(interpreter, "wgl  ", (char *)NULL);
-    i++;
-#endif /* DM_WGL */
-#ifdef DM_OGL
-    Tcl_AppendResult(interpreter, "ogl  ", (char *)NULL);
-    i++;
-#endif /* DM_OGL */
-#ifdef DM_OSG
-    Tcl_AppendResult(interpreter, "osg  ", (char *)NULL);
-    i++;
-#endif /* DM_OSG*/
-#ifdef DM_OSGL
-    Tcl_AppendResult(interpreter, "osgl  ", (char *)NULL);
-    i++;
-#endif /* DM_OSGL*/
-#ifdef DM_GLX
-    Tcl_AppendResult(interpreter, "glx", (char *)NULL);
-    i++;
-#endif /* DM_GLX */
-#ifdef DM_QT
-    Tcl_AppendResult(interpreter, "qt", (char *)NULL);
-    i++;
-#endif /* DM_QT */
-    if (i == 0) {
+    struct bu_vls dm_types = BU_VLS_INIT_ZERO;
+    dm_list_types(&dm_types, " ");
+
+    if (bu_vls_strlen(&dm_types)) {
+       Tcl_AppendResult(interpreter, bu_vls_cstr(&dm_types), (char *)NULL);
+    } else {
        Tcl_AppendResult(interpreter, "NONE AVAILABLE", (char *)NULL);
     }
+    bu_vls_free(&dm_types);
     Tcl_AppendResult(interpreter, "\n", (char *)NULL);
 }
 
@@ -475,8 +281,6 @@
 int
 f_attach(ClientData UNUSED(clientData), Tcl_Interp *interpreter, int argc, 
const char *argv[])
 {
-    struct w_dm *wp;
-
     if (argc < 2) {
        struct bu_vls vls = BU_VLS_INIT_ZERO;
 
@@ -493,18 +297,13 @@
        return TCL_OK;
     }
 
-    /* Look at last argument, skipping over any options which precede it */
-    for (wp = &which_dm[2]; wp->name != NULL; wp++)
-       if (BU_STR_EQUAL(argv[argc - 1], wp->name))
-           break;
-
-    if (wp->name == NULL) {
+    if (!dm_valid_type(argv[argc-1], NULL)) {
        Tcl_AppendResult(interpreter, "attach(", argv[argc - 1], "): BAD\n", 
(char *)NULL);
        print_valid_dm(interpreter);
        return TCL_ERROR;
     }
 
-    return mged_attach(wp, argc, argv);
+    return mged_attach(argv[argc - 1], argc, argv);
 }
 
 
@@ -585,13 +384,13 @@
 
 
 int
-mged_attach(struct w_dm *wp, int argc, const char *argv[])
+mged_attach(const char *wp_name, int argc, const char *argv[])
 {
     int opt_argc;
     char **opt_argv;
     struct dm_list *o_dm_list;
 
-    if (!wp) {
+    if (!wp_name) {
        return TCL_ERROR;
     }
 
@@ -603,7 +402,7 @@
     predictor_init();
 
     /* Only need to do this once */
-    if (tkwin == NULL && NEED_GUI(wp->name)) {
+    if (tkwin == NULL && NEED_GUI(wp_name)) {
        struct dm *tmp_dmp;
        struct bu_vls tmp_vls = BU_VLS_INIT_ZERO;
 
@@ -637,11 +436,11 @@
 
     BU_LIST_APPEND(&head_dm_list.l, &curr_dm_list->l);
 
-    if (!wp->name) {
+    if (!wp_name) {
        return TCL_ERROR;
     }
 
-    if (mged_dm_init(o_dm_list, wp->name, argc, argv) == TCL_ERROR) {
+    if (mged_dm_init(o_dm_list, wp_name, argc, argv) == TCL_ERROR) {
        goto Bad;
     }
 
@@ -694,24 +493,33 @@
 void
 get_attached(void)
 {
-    int argc;
-    const char *argv[3];
-    struct w_dm *wp = (struct w_dm *)NULL;
     int inflimit = 1000;
     int ret;
     struct bu_vls type = BU_VLS_INIT_ZERO;
 
+    struct bu_vls type_msg = BU_VLS_INIT_ZERO;
+    struct bu_vls dm_types = BU_VLS_INIT_ZERO;
+    dm_list_types(&dm_types, " ");
+    char **dms = (char **)bu_calloc(bu_vls_strlen(&dm_types), sizeof(char *), 
"dm name array");
+    int nargc = bu_argv_from_string(dms, bu_vls_strlen(&dm_types), 
bu_vls_addr(&dm_types));
+
+    bu_vls_sprintf(&type_msg, "attach (nu");
+    for (int i = 0; i < nargc; i++) {
+       if (BU_STR_EQUAL(dms[i], "nu"))
+           continue;
+       if (BU_STR_EQUAL(dms[i], "plot"))
+           continue;
+       if (BU_STR_EQUAL(dms[i], "postscript"))
+           continue;
+       bu_vls_printf(&type_msg, " %s", dms[i]);
+    }
+    bu_vls_printf(&type_msg, ")[nu]? ");
+    bu_free(dms, "array");
+    bu_vls_free(&dm_types);
+
     while (inflimit > 0) {
-       bu_vls_trunc(&type, 0);
-       bu_log("attach (nu");
+       bu_log("%s", bu_vls_cstr(&type_msg));
 
-       /* print all the available display manager types, skipping plot and ps 
*/
-       wp = &which_dm[2];
-       for (; wp->name != NULL; wp++) {
-           bu_log("|%s", wp->name);
-       }
-       bu_log(")[nu]? ");
-
        ret = bu_vls_gets(&type, stdin);
        if (ret < 0) {
            /* handle EOF */
@@ -729,13 +537,7 @@
        /* trim whitespace before comparisons (but not before checking empty) */
        bu_vls_trimspace(&type);
 
-       for (wp = &which_dm[2]; wp->name != NULL; wp++) {
-           if (BU_STR_EQUAL(bu_vls_addr(&type), wp->name)) {
-               break;
-           }
-       }
-
-       if (wp->name != NULL) {
+       if (dm_valid_type(bu_vls_cstr(&type), NULL)) {
            break;
        }
 
@@ -743,20 +545,23 @@
        inflimit--;
     }
 
-    bu_vls_free(&type);
+    bu_vls_free(&type_msg);
 
     if (inflimit <= 0) {
        bu_log("\nInfinite loop protection, attach aborted!\n");
+       bu_vls_free(&type);
        return;
     }
 
-    bu_log("Starting an %s display manager\n", wp->name);
+    bu_log("Starting an %s display manager\n", bu_vls_cstr(&type));
 
-    argc = 2;
+    int argc = 1;
+    const char *argv[3];
     argv[0] = "";
     argv[1] = "";
     argv[2] = (char *)NULL;
-    (void)mged_attach(wp, argc, argv);
+    (void)mged_attach(bu_vls_cstr(&type), argc, argv);
+    bu_vls_free(&type);
 }
 
 
@@ -782,48 +587,9 @@
            bu_vls_free(&vls);
            return TCL_ERROR;
        }
-#ifdef DM_X
-       if (BU_STR_EQUAL(argv[argc-1], "X")) {
-           Tcl_AppendResult(interpreter, "X", (char *)NULL);
+       if (dm_valid_type(argv[argc-1], NULL)) {
+           Tcl_AppendResult(interpreter, argv[argc-1], (char *)NULL);
        }
-#endif /* DM_X */
-#if 0
-#ifdef DM_TK
-       if (BU_STR_EQUAL(argv[argc-1], "tk")) {
-           Tcl_AppendResult(interpreter, "tk", (char *)NULL);
-       }
-#endif /* DM_TK */
-#endif
-#ifdef DM_WGL
-       if (BU_STR_EQUAL(argv[argc-1], "wgl")) {
-           Tcl_AppendResult(interpreter, "wgl", (char *)NULL);
-       }
-#endif /* DM_WGL */
-#ifdef DM_OGL
-       if (BU_STR_EQUAL(argv[argc-1], "ogl")) {
-           Tcl_AppendResult(interpreter, "ogl", (char *)NULL);
-       }
-#endif /* DM_OGL */
-#ifdef DM_OSG
-       if (BU_STR_EQUAL(argv[argc-1], "osg")) {
-           Tcl_AppendResult(interpreter, "osg", (char *)NULL);
-       }
-#endif /* DM_OSG*/
-#ifdef DM_OSGL
-       if (BU_STR_EQUAL(argv[argc-1], "osgl")) {
-           Tcl_AppendResult(interpreter, "osgl", (char *)NULL);
-       }
-#endif /* DM_OSGL*/
-#ifdef DM_GLX
-       if (BU_STR_EQUAL(argv[argc-1], "glx")) {
-           Tcl_AppendResult(interpreter, "glx", (char *)NULL);
-       }
-#endif /* DM_GLX */
-#ifdef DM_QT
-       if (BU_STR_EQUAL(argv[argc-1], "qt")) {
-           Tcl_AppendResult(interpreter, "qt", (char *)NULL);
-       }
-#endif /* DM_QT */
        return TCL_OK;
     }
 

Modified: brlcad/branches/bioh/src/mged/cmd.c
===================================================================
--- brlcad/branches/bioh/src/mged/cmd.c 2020-08-06 18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/src/mged/cmd.c 2020-08-06 18:05:03 UTC (rev 76677)
@@ -1442,7 +1442,7 @@
 
     dml = curr_dm_list;
     GEDP->ged_gvp = view_state->vs_gvp;
-    status = mged_attach(&which_dm[DM_PS_INDEX], argc, argv);
+    status = mged_attach("postscript", argc, argv);
     if (status == TCL_ERROR)
        return TCL_ERROR;
 

Modified: brlcad/branches/bioh/src/mged/doevent.c
===================================================================
--- brlcad/branches/bioh/src/mged/doevent.c     2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/mged/doevent.c     2020-08-06 18:05:03 UTC (rev 
76677)
@@ -133,12 +133,9 @@
        return TCL_OK;
     }
 
-    /* XXX - windows fix, for now */
-    if (eventHandler == NULL)
-       return TCL_CONTINUE;
-
     /* calling the display manager specific event handler */
-    status = eventHandler(clientData, eventPtr);
+    status = dm_doevent(DMP, clientData, eventPtr);
+    dirty = dm_get_dirty(DMP);
 
     /* no further processing of this event */
     if (status != TCL_OK) {
@@ -203,11 +200,7 @@
 }
 #else
 int
-#if !defined(IF_X) && !defined(IF_WGL) && !defined(IF_OGL) && !defined(IF_TK)
 doEvent(ClientData UNUSED(clientData), void *UNUSED(eventPtr)) {
-#else
-doEvent(ClientData clientData, void *eventPtr) {
-#endif
     return TCL_OK;
 }
 #endif /* HAVE_X11_XLIB_H */

Modified: brlcad/branches/bioh/src/mged/mged.c
===================================================================
--- brlcad/branches/bioh/src/mged/mged.c        2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/mged/mged.c        2020-08-06 18:05:03 UTC (rev 
76677)
@@ -150,15 +150,7 @@
 int interactive = 1;   /* >0 means interactive */
 int cbreak_mode = 0;        /* >0 means in cbreak_mode */
 
-#if defined(DM_X) || defined(DM_TK) || defined(DM_OGL) || defined(DM_WGL) || 
defined(DM_OSGL)
-# if defined(HAVE_TK)
-int classic_mged=0;
-#  else
 int classic_mged=1;
-#  endif
-#else
-int classic_mged=1;
-#endif
 
 /* The old mged gui is temporarily the default. */
 int old_mged_gui=1;
@@ -1065,6 +1057,12 @@
      * Do not use bu_log() or bu_malloc() before here.
      */
 
+#if defined(HAVE_TK)
+    if (dm_have_graphics()) {
+       classic_mged = 0;
+    }
+#endif
+
     bu_optind = 1;
     while ((c = bu_getopt(argc, argv, "a:d:hbicorx:X:v?")) != -1) {
        if (bu_optopt == '?') c='h';

Modified: brlcad/branches/bioh/src/mged/mged.h
===================================================================
--- brlcad/branches/bioh/src/mged/mged.h        2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/mged/mged.h        2020-08-06 18:05:03 UTC (rev 
76677)
@@ -76,12 +76,10 @@
 /* Needed to define struct menu_item */
 #include "./menu.h"
 
-/* Needed to define struct w_dm */
-#include "./mged_dm.h"
-
 /* Needed to define struct solid */
 #include "rt/solid.h"
 
+#include "./mged_dm.h" /* _view_state */
 
 #define MGED_DB_NAME "db"
 #define MGED_INMEM_NAME ".inmem"
@@ -449,7 +447,7 @@
 
 /* attach.c */
 int is_dm_null(void);
-int mged_attach(struct w_dm *wp, int argc, const char *argv[]);
+int mged_attach(const char *wp_name, int argc, const char *argv[]);
 void mged_link_vars(struct dm_list *p);
 void mged_slider_free_vls(struct dm_list *p);
 int gui_setup(const char *dstr);

Modified: brlcad/branches/bioh/src/mged/mged_dm.h
===================================================================
--- brlcad/branches/bioh/src/mged/mged_dm.h     2020-08-06 18:01:54 UTC (rev 
76676)
+++ brlcad/branches/bioh/src/mged/mged_dm.h     2020-08-06 18:05:03 UTC (rev 
76677)
@@ -589,12 +589,6 @@
 /* defined in setup.c */
 extern void mged_rtCmdNotify();
 
-struct w_dm {
-    char *name;
-    int        (*doevent)();
-};
-extern struct w_dm which_dm[];  /* defined in attach.c */
-
 /* indices into which_dm[] */
 #define DM_PLOT_INDEX 0
 #define DM_PS_INDEX 1

Index: brlcad/branches/bioh/src/other
===================================================================
--- brlcad/branches/bioh/src/other      2020-08-06 18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/src/other      2020-08-06 18:05:03 UTC (rev 76677)

Property changes on: brlcad/branches/bioh/src/other
___________________________________________________________________
Modified: svn:mergeinfo
## -8,4 +8,4 ##
 /brlcad/branches/osg/src/other:62110-62113
 /brlcad/branches/prep-cache/src/other:68236-68933
 /brlcad/branches/tcltk86/src/other:68300-75257
-/brlcad/trunk/src/other:75720-75834,75891-75933,75986-76085,76160-76351
\ No newline at end of property
+/brlcad/trunk/src/other:75720-75834,75891-75933,75986-76085,76160-76351,76657-76676
\ No newline at end of property
Modified: brlcad/branches/bioh/src/other/openNURBS/opennurbs_extensions.h
===================================================================
--- brlcad/branches/bioh/src/other/openNURBS/opennurbs_extensions.h     
2020-08-06 18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/src/other/openNURBS/opennurbs_extensions.h     
2020-08-06 18:05:03 UTC (rev 76677)
@@ -26,6 +26,7 @@
 {
 public:
 #if defined(ON_COMPILER_MSC)
+#if defined(ON_DLL_EXPORTS) || defined(ON_DLL_IMPORTS)
   // See comments at the top of opennurbs_extensions.cpp for details.
 
   // new/delete
@@ -40,6 +41,7 @@
   void* operator new(size_t,void*);
   void  operator delete(void*,void*);
 #endif
+#endif
 
   ONX_Model_UserData();
   ~ONX_Model_UserData();
@@ -68,6 +70,7 @@
 {
 public:
 #if defined(ON_COMPILER_MSC)
+#if defined(ON_DLL_EXPORTS) || defined(ON_DLL_IMPORTS)
   // See comments at the top of opennurbs_extensions.cpp for details.
 
   // new/delete
@@ -82,6 +85,7 @@
   void* operator new(size_t,void*);
   void  operator delete(void*,void*);
 #endif
+#endif
 
   ONX_Model_Object();
   ~ONX_Model_Object();
@@ -110,6 +114,7 @@
 {
 public:
 #if defined(ON_COMPILER_MSC)
+#if defined(ON_DLL_EXPORTS) || defined(ON_DLL_IMPORTS)
   // See comments at the top of opennurbs_extensions.cpp for details.
 
   // new/delete
@@ -124,6 +129,7 @@
   void* operator new(size_t,void*);
   void  operator delete(void*,void*);
 #endif
+#endif
 
   ONX_Model_RenderLight();
   ~ONX_Model_RenderLight();
@@ -176,6 +182,7 @@
 {
 public:
 #if defined(ON_COMPILER_MSC)
+#if defined(ON_DLL_EXPORTS) || defined(ON_DLL_IMPORTS)
   // See comments at the top of opennurbs_extensions.cpp for details.
 
   // new/delete
@@ -190,6 +197,7 @@
   void* operator new(size_t,void*);
   void  operator delete(void*,void*);
 #endif
+#endif
 
   ONX_Model();
   virtual ~ONX_Model();

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