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