Revision: 75292
          http://sourceforge.net/p/brlcad/code/75292
Author:   starseeker
Date:     2020-04-07 23:30:24 +0000 (Tue, 07 Apr 2020)
Log Message:
-----------
Begin preparing to pass a context to dm_open.  (Right now it's a no-op.)

Modified Paths:
--------------
    brlcad/trunk/include/dm.h
    brlcad/trunk/include/tclcad.h
    brlcad/trunk/src/adrt/isst.c
    brlcad/trunk/src/libdm/dm-generic.c
    brlcad/trunk/src/libtclcad/dm_tcl.c
    brlcad/trunk/src/libtclcad/tclcad_obj.c
    brlcad/trunk/src/mged/attach.c
    brlcad/trunk/src/util/CMakeLists.txt
    brlcad/trunk/src/util/plot3-dm.c

Modified: brlcad/trunk/include/dm.h
===================================================================
--- brlcad/trunk/include/dm.h   2020-04-07 20:19:53 UTC (rev 75291)
+++ brlcad/trunk/include/dm.h   2020-04-07 23:30:24 UTC (rev 75292)
@@ -247,13 +247,13 @@
     /* Tk_MakeWindowExist */
     void (*dm_window_make_exist)(dm *, dm_win);
     /* Tk_MapWindow */
-    const char *(*dm_window_map)(dm *, dm_win);
+    void(*dm_window_map)(dm *, dm_win);
     /* Tk_SetWindowVisual */
     int (*dm_window_set_visual)(dm *, dm_win, dm_visual_info, dm_cmap);
     /* Tk_DestroyWindow */
     void (*dm_window_destroy)(dm *, dm_win);
     /* _init_dm */
-    int (*dm_init)(dm *);
+    int (*dm_init)(dm *, const char *);
     /* Tk_GeometryRequest */
     void (*dm_window_geom)(dm *, dm_win, int *width, int *height);
     /* Tk_Display */
@@ -260,8 +260,6 @@
     dm_dpy (*dm_display)(dm *, dm_win);
 };
 
-#define DM_OPEN(_interp, _type, _argc, _argv) dm_open(_interp, _type, _argc, 
_argv)
-
 __BEGIN_DECLS
 
 DM_EXPORT extern dm dm_ogl;
@@ -276,6 +274,7 @@
 DM_EXPORT extern dm dm_osgl;
 
 DM_EXPORT extern dm *dm_open(Tcl_Interp *interp,
+                            struct dm_context *context,
                             int type,
                             int argc,
                             const char *argv[]);
@@ -485,7 +484,7 @@
 #  include "../src/libdm/dm_private.h"
 #endif
 
-#define DM_OPEN(_interp, _type, _argc, _argv) dm_open(_interp, _type, _argc, 
_argv)
+#define DM_OPEN(_interp, _context, _type, _argc, _argv) dm_open(_interp, 
_context, _type, _argc, _argv)
 #define DM_CLOSE(_dmp) _dmp->dm_close(_dmp)
 #define DM_DRAW_BEGIN(_dmp) _dmp->dm_drawBegin(_dmp)
 #define DM_DRAW_END(_dmp) _dmp->dm_drawEnd(_dmp)

Modified: brlcad/trunk/include/tclcad.h
===================================================================
--- brlcad/trunk/include/tclcad.h       2020-04-07 20:19:53 UTC (rev 75291)
+++ brlcad/trunk/include/tclcad.h       2020-04-07 23:30:24 UTC (rev 75292)
@@ -488,6 +488,8 @@
 TCLCAD_EXPORT extern int Dm_Init(Tcl_Interp *interp);
 
 
+TCLCAD_EXPORT extern struct dm_context dm_tk_context;
+
 __END_DECLS
 
 #endif /* TCLCAD_H */

Modified: brlcad/trunk/src/adrt/isst.c
===================================================================
--- brlcad/trunk/src/adrt/isst.c        2020-04-07 20:19:53 UTC (rev 75291)
+++ brlcad/trunk/src/adrt/isst.c        2020-04-07 23:30:24 UTC (rev 75292)
@@ -547,7 +547,7 @@
 {
     char *av[] = { "Ogl_open", "-t", "0", "-n", ".w0", "-W", "800", "-N", 
"600", NULL };
 
-    dmp = dm_open(interp, dm_default_type(), sizeof(av)/sizeof(void*)-1, 
(const char **)av);
+    dmp = dm_open(interp, &dm_tk_context, dm_default_type(), 
sizeof(av)/sizeof(void*)-1, (const char **)av);
 
     if (dmp == DM_NULL) {
        printf("dm failed?\n");

Modified: brlcad/trunk/src/libdm/dm-generic.c
===================================================================
--- brlcad/trunk/src/libdm/dm-generic.c 2020-04-07 20:19:53 UTC (rev 75291)
+++ brlcad/trunk/src/libdm/dm-generic.c 2020-04-07 23:30:24 UTC (rev 75292)
@@ -113,7 +113,7 @@
 
 
 dm *
-dm_open(Tcl_Interp *interp, int type, int argc, const char *argv[])
+dm_open(Tcl_Interp *interp, struct dm_context *UNUSED(context), int type, int 
argc, const char *argv[])
 {
     switch (type) {
        case DM_TYPE_NULL:

Modified: brlcad/trunk/src/libtclcad/dm_tcl.c
===================================================================
--- brlcad/trunk/src/libtclcad/dm_tcl.c 2020-04-07 20:19:53 UTC (rev 75291)
+++ brlcad/trunk/src/libtclcad/dm_tcl.c 2020-04-07 23:30:24 UTC (rev 75292)
@@ -2645,6 +2645,155 @@
 }
 
 
+/* Tk_MainWindow */
+static dm_win
+tk_window_main(dm *dmp)
+{
+    Tcl_Interp *interp = (Tcl_Interp *)dm_interp(dmp);
+    dm_win mwin = (dm_win)Tk_MainWindow(interp);
+    return mwin;
+}
+/* Tk_CreateWindowFromPath */
+static dm_win
+tk_window_create_from_path(dm *dmp, dm_win win, const char *path, const char 
*dname)
+{
+    Tcl_Interp *interp = (Tcl_Interp *)dm_interp(dmp);
+    dm_win mwin = (dm_win)Tk_CreateWindowFromPath(interp, (Tk_Window)win, 
path, dname);
+    return mwin;
+}
+
+/* Tk_NameToWindow */
+static dm_win
+tk_window_from_name(dm *dmp, const char *name, dm_win win)
+{
+    Tcl_Interp *interp = (Tcl_Interp *)dm_interp(dmp);
+    dm_win mwin = (dm_win)Tk_NameToWindow(interp, name, (Tk_Window)win);
+    return mwin;
+}
+
+/* Tk_CreateWindow */
+static dm_win
+tk_window_create_embedded(dm *dmp, dm_win win, const char *name)
+{
+    Tcl_Interp *interp = (Tcl_Interp *)dm_interp(dmp);
+    dm_win mwin = (dm_win)Tk_CreateWindow(interp, (Tk_Window)win, name, (char 
*)NULL);
+    return mwin;
+}
+
+/* Tk_Name */
+static const char *
+tk_window_name(dm *UNUSED(dmp), dm_win win)
+{
+    return Tk_Name((Tk_Window)win);
+}
+
+/* Tk_WindowId */
+static int
+tk_window_id(dm *UNUSED(dmp), dm_win win)
+{
+    return Tk_WindowId((Tk_Window)win);
+}
+
+/* Tk_MakeWindowExist */
+static void
+tk_window_make_exist(dm *UNUSED(dmp), dm_win win)
+{
+    Tk_MakeWindowExist((Tk_Window)win);
+}
+
+/* Tk_MapWindow */
+static void
+tk_window_map(dm *UNUSED(dmp), dm_win win)
+{
+    Tk_MapWindow((Tk_Window)win);
+}
+
+/* Tk_SetWindowVisual */
+static int
+tk_window_set_visual(dm *UNUSED(dmp), dm_win win, dm_visual_info visual, 
dm_cmap cmap)
+{
+    Colormap *color_map = (Colormap *)cmap;
+    XVisualInfo *xvis = (XVisualInfo *)visual;
+    return Tk_SetWindowVisual((Tk_Window)(win), xvis->visual, xvis->depth, 
*color_map);
+}
+
+/* Tk_DestroyWindow */
+static void
+tk_window_destroy(dm *UNUSED(dmp), dm_win win)
+{
+    Tk_DestroyWindow((Tk_Window)win);
+}
+
+/* _init_dm */
+static int
+tk_dm_init(dm *dmp, const char *iproc)
+{
+    Tcl_Interp *interp = (Tcl_Interp *)dm_interp(dmp);
+    struct bu_vls str = BU_VLS_INIT_ZERO;
+    bu_vls_printf(&str, "_init_dm %s %s\n", iproc, 
bu_vls_cstr(dm_get_pathname(dmp)));
+    int ret = Tcl_Eval(interp, bu_vls_cstr(&str));
+    bu_vls_free(&str);
+    return ret;
+}
+
+/* Tk_GeometryRequest */
+static void
+tk_window_geom(dm *UNUSED(dmp), dm_win win, int *width, int *height)
+{
+    Tk_GeometryRequest((Tk_Window)win, *width, *height);
+}
+
+/* Tk_Display */
+static dm_dpy
+tk_display(dm *UNUSED(dmp), dm_win win)
+{
+    return (dm_dpy)Tk_Display((Tk_Window)win);
+}
+
+struct dm_context dm_tk_context = {
+    /* Tk_MainWindow -> dm_window_main */
+    &tk_window_main,
+
+    /* dm_window_create_from_path -> Tk_CreateWindowFromPath */
+    &tk_window_create_from_path,
+
+    /* dm_window_from_name -> Tk_NameToWindow */
+    &tk_window_from_name,
+
+    /* dm_window_create_embedded -> Tk_CreateWindow */
+    &tk_window_create_embedded,
+
+    /* dm_window_name -> Tk_Name */
+    &tk_window_name,
+
+    /* dm_window_id -> Tk_WindowId */
+    &tk_window_id,
+
+    /* dm_window_make_exist -> Tk_MakeWindowExist */
+    &tk_window_make_exist,
+
+    /* dm_window_map -> Tk_MapWindow */
+    &tk_window_map,
+
+    /* dm_window_set_visual -> Tk_SetWindowVisual */
+    &tk_window_set_visual,
+
+    /* dm_window_destroy -> Tk_DestroyWindow */
+    &tk_window_destroy,
+
+    /* dm_init -> _init_dm */
+    &tk_dm_init,
+
+    /* dm_window_geom -> Tk_GeometryRequest */
+    &tk_window_geom,
+
+    /* dm_display -> Tk_Display */
+    &tk_display,
+};
+
+
+
+
 /*
  * Open/create a display manager object.
  *
@@ -2748,7 +2897,7 @@
            av[i+newargs] = argv[i];
        av[i+newargs] = (const char *)NULL;
 
-       if ((dmp = dm_open(interp, type, ac, av)) == DM_NULL) {
+       if ((dmp = dm_open(interp, &dm_tk_context, type, ac, av)) == DM_NULL) {
            if (Tcl_IsShared(obj))
                obj = Tcl_DuplicateObj(obj);
 
@@ -2943,97 +3092,6 @@
 }
 
 
-static dm_win
-tk_window_main(dm *dmp)
-{
-    Tcl_Interp *interp = (Tcl_Interp *)dm_interp(dmp);
-    void *mwin = (void *)Tk_MainWindow(interp);
-    return mwin;
-}
-
-#if 0
-/* Tk_CreateWindowFromPath */
-dm_win dm_window_create_from_path(dm *dmp, dm_win win, const char *path, const 
char *dname);
-
-/* Tk_NameToWindow */
-dm_win dm_window_from_name(dm *dmp, const char *name, dm_win win);
-
-/* Tk_CreateWindow */
-dm_win dm_window_create_embedded(dm *dmp, dm_win win, const char *name);
-
-/* Tk_Name */
-const char *dm_window_name(dm *dmp, dm_win win);
-
-/* Tk_WindowId */
-int dm_window_id(dm *dmp, dm_win win);
-
-/* Tk_MakeWindowExist */
-void dm_window_make_exist(dm *dmp, dm_win win);
-
-/* Tk_MapWindow */
-const char *dm_window_map(dm *dmp, dm_win win);
-
-/* Tk_SetWindowVisual */
-int dm_window_set_visual(dm *dmp, dm_win win, visual, depth, cmap);
-
-/* Tk_DestroyWindow */
-void dm_window_destroy(dm *dmp, dm_win win);
-
-
-/* _init_dm */
-int dm_init(dm *dmp);
-
-/* Tk_GeometryRequest */
-void dm_window_geom(dm *dmp, dm_win win, int *width, int *height);
-
-/* Tk_Display */
-typedef void * dm_dpy;
-dm_dpy dm_display(dm *dmp, dm_win win);
-#endif
-
-struct dm_context dm_tk_context = {
-    /* Tk_MainWindow -> dm_window_main */
-    &tk_window_main,
-
-    /* dm_window_create_from_path -> Tk_CreateWindowFromPath */
-    NULL,
-
-    /* dm_window_from_name -> Tk_NameToWindow */
-    NULL,
-
-    /* dm_window_create_embedded -> Tk_CreateWindow */
-    NULL,
-
-    /* dm_window_name -> Tk_Name */
-    NULL,
-
-    /* dm_window_id -> Tk_WindowId */
-    NULL,
-
-    /* dm_window_make_exist -> Tk_MakeWindowExist */
-    NULL,
-
-    /* dm_window_map -> Tk_MapWindow */
-    NULL,
-
-    /* dm_window_set_visual -> Tk_SetWindowVisual */
-    NULL,
-
-    /* dm_window_destroy -> Tk_DestroyWindow */
-    NULL,
-
-    /* dm_init -> _init_dm */
-    NULL,
-
-    /* dm_window_geom -> Tk_GeometryRequest */
-    NULL,
-
-    /* dm_display -> Tk_Display */
-    NULL,
-};
-
-
-
 /*
  * Local Variables:
  * mode: C

Modified: brlcad/trunk/src/libtclcad/tclcad_obj.c
===================================================================
--- brlcad/trunk/src/libtclcad/tclcad_obj.c     2020-04-07 20:19:53 UTC (rev 
75291)
+++ brlcad/trunk/src/libtclcad/tclcad_obj.c     2020-04-07 23:30:24 UTC (rev 
75292)
@@ -11638,7 +11638,7 @@
            av[i+newargs] = argv[i];
        av[i+newargs] = (const char *)NULL;
 
-       new_gdvp->gdv_dmp = dm_open(current_top->to_interp, type, ac, av);
+       new_gdvp->gdv_dmp = dm_open(current_top->to_interp, &dm_tk_context, 
type, ac, av);
        if (new_gdvp->gdv_dmp == DM_NULL) {
            bu_free((void *)new_gdvp->gdv_view, "ged_view");
            bu_free((void *)new_gdvp, "ged_dm_view");

Modified: brlcad/trunk/src/mged/attach.c
===================================================================
--- brlcad/trunk/src/mged/attach.c      2020-04-07 20:19:53 UTC (rev 75291)
+++ brlcad/trunk/src/mged/attach.c      2020-04-07 23:30:24 UTC (rev 75292)
@@ -271,7 +271,7 @@
     Tk_DeleteGenericHandler(doEvent, (ClientData)NULL);
 #endif
 
-    if ((DMP = dm_open(INTERP, dm_type, argc-1, argv)) == DM_NULL)
+    if ((DMP = dm_open(INTERP, &dm_tk_context, dm_type, argc-1, argv)) == 
DM_NULL)
        return TCL_ERROR;
 
     /*XXXX this eventually needs to move into Ogl's private structure */

Modified: brlcad/trunk/src/util/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/util/CMakeLists.txt        2020-04-07 20:19:53 UTC (rev 
75291)
+++ brlcad/trunk/src/util/CMakeLists.txt        2020-04-07 23:30:24 UTC (rev 
75292)
@@ -27,7 +27,7 @@
 
 if(BRLCAD_ENABLE_TK)
   BRLCAD_ADDEXEC(bombardier bombardier.c 
"libtclcad;libbu;${TK_LIBRARY};${TCL_LIBRARY}")
-  BRLCAD_ADDEXEC(plot3-dm plot3-dm.c 
"libdm;libbu;${TK_LIBRARY};${TCL_LIBRARY};${M_LIBRARY}")
+  BRLCAD_ADDEXEC(plot3-dm plot3-dm.c 
"libtclcad;libdm;libbu;${TK_LIBRARY};${TCL_LIBRARY};${M_LIBRARY}")
 else(BRLCAD_ENABLE_TK)
   CMAKEFILES(
     bombardier.c

Modified: brlcad/trunk/src/util/plot3-dm.c
===================================================================
--- brlcad/trunk/src/util/plot3-dm.c    2020-04-07 20:19:53 UTC (rev 75291)
+++ brlcad/trunk/src/util/plot3-dm.c    2020-04-07 23:30:24 UTC (rev 75292)
@@ -44,6 +44,7 @@
 #include "raytrace.h"
 #include "bn.h"
 #include "dm.h"
+#include "tclcad.h"
 
 
 struct cmdtab {
@@ -1047,7 +1048,7 @@
     av[2] = "sampler_bind_dm";
     av[3] = (char *)NULL;
 
-    if ((dmp = DM_OPEN(INTERP, DM_TYPE_X, 3, av)) == DM_NULL) {
+    if ((dmp = DM_OPEN(INTERP, &dm_tk_context, DM_TYPE_X, 3, av)) == DM_NULL) {
        Tcl_AppendResult(INTERP, "Failed to open a display manager\n", (char 
*)NULL);
        return TCL_ERROR;
     }
@@ -1073,7 +1074,7 @@
     av[2] = "sampler_bind_dm";
     av[3] = (char *)NULL;
 
-    if ((dmp = DM_OPEN(INTERP, DM_TYPE_OGL, 3, (const char **)av)) == DM_NULL) 
{
+    if ((dmp = DM_OPEN(INTERP, &dm_tk_context, DM_TYPE_OGL, 3, (const char 
**)av)) == DM_NULL) {
        Tcl_AppendResult(INTERP, "Failed to open a display manager\n", (char 
*)NULL);
        return TCL_ERROR;
     }

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