Revision: 75311
          http://sourceforge.net/p/brlcad/code/75311
Author:   starseeker
Date:     2020-04-08 22:07:29 +0000 (Wed, 08 Apr 2020)
Log Message:
-----------
Do some of the translation for the other dm backends

Modified Paths:
--------------
    brlcad/trunk/src/libdm/dm-X.c
    brlcad/trunk/src/libdm/dm-ogl.c
    brlcad/trunk/src/libdm/dm-osgl.cpp
    brlcad/trunk/src/libdm/dm-qt.cpp
    brlcad/trunk/src/libdm/dm-wgl.c

Modified: brlcad/trunk/src/libdm/dm-X.c
===================================================================
--- brlcad/trunk/src/libdm/dm-X.c       2020-04-08 21:36:44 UTC (rev 75310)
+++ brlcad/trunk/src/libdm/dm-X.c       2020-04-08 22:07:29 UTC (rev 75311)
@@ -448,6 +448,9 @@
 
 #ifdef HAVE_TK
     if ((tkwin = (*context->dm_window_main)(dmp)) == NULL) {
+       bu_free((void *)privars, "privars");
+       bu_free((void *)pubvars, "pubvars");
+       bu_free((void *)dmp, "dmp");
        return DM_NULL;
     }
 #endif

Modified: brlcad/trunk/src/libdm/dm-ogl.c
===================================================================
--- brlcad/trunk/src/libdm/dm-ogl.c     2020-04-08 21:36:44 UTC (rev 75310)
+++ brlcad/trunk/src/libdm/dm-ogl.c     2020-04-08 22:07:29 UTC (rev 75311)
@@ -673,6 +673,9 @@
     bu_vls_init(&(dmp->dm_log));
 
     if ((tkwin = (*context->dm_window_main)(dmp)) == NULL) {
+       bu_free((void *)privvars, "privvars");
+       bu_free((void *)pubvars, "pubvars");
+       bu_free((void *)dmp, "dmp");
        return DM_NULL;
     }
 

Modified: brlcad/trunk/src/libdm/dm-osgl.cpp
===================================================================
--- brlcad/trunk/src/libdm/dm-osgl.cpp  2020-04-08 21:36:44 UTC (rev 75310)
+++ brlcad/trunk/src/libdm/dm-osgl.cpp  2020-04-08 22:07:29 UTC (rev 75311)
@@ -82,7 +82,7 @@
 extern "C" {
     struct dm_internal *osgl_open(Tcl_Interp *interp, int argc, char **argv);
 }
-HIDDEN int osgl_close(struct dm_internal *dmp);
+HIDDEN int osgl_close(struct dm_internal *dmp, struct dm_context *context);
 HIDDEN int osgl_drawBegin(struct dm_internal *dmp);
 HIDDEN int osgl_drawEnd(struct dm_internal *dmp);
 HIDDEN int osgl_normal(struct dm_internal *dmp);
@@ -355,7 +355,7 @@
  * Gracefully release the display.
  */
 HIDDEN int
-osgl_close(struct dm_internal *dmp)
+osgl_close(struct dm_internal *dmp, struct dm_context *UNUSED(context))
 {
     ((struct osgl_vars 
*)dmp->dm_vars.priv_vars)->graphicsContext->makeCurrent();
     ((struct osgl_vars 
*)dmp->dm_vars.priv_vars)->graphicsContext->releaseContext();
@@ -382,7 +382,7 @@
  *
  */
 extern "C" struct dm_internal *
-osgl_open(Tcl_Interp *interp, int argc, char **argv)
+osgl_open(Tcl_Interp *interp, struct dm_context *context, int argc, char 
**argv)
 {
     static int count = 0;
     GLfloat backgnd[4];
@@ -395,10 +395,6 @@
     struct dm_xvars *pubvars = NULL;
     struct osgl_vars *privvars = NULL;
 
-    if ((tkwin = Tk_MainWindow(interp)) == NULL) {
-       return DM_NULL;
-    }
-
     BU_GET(dmp, struct dm_internal);
 
     *dmp = dm_osgl; /* struct copy */
@@ -424,6 +420,13 @@
     }
     privvars = (struct osgl_vars *)dmp->dm_vars.priv_vars;
 
+    if ((tkwin = (*context->dm_window_main)(dmp)) == NULL) {
+       bu_free((void *)privars, "privars");
+       bu_free((void *)pubvars, "pubvars");
+       bu_free((void *)dmp, "dmp");
+       return DM_NULL;
+    }
+
     dmp->dm_get_internal(dmp);
     mvars = (struct modifiable_osgl_vars *)dmp->m_vars;
 
@@ -471,11 +474,8 @@
 
     if (dmp->dm_top) {
        /* Make xtkwin a toplevel window */
-       pubvars->xtkwin =
-           Tk_CreateWindowFromPath(interp,
-                                   tkwin,
-                                   bu_vls_addr(&dmp->dm_pathName),
-                                   bu_vls_addr(&dmp->dm_dName));
+       pubvars->xtkwin = 
(Tk_Window)(*context->dm_window_create_from_path)(dmp, tkwin,
+               bu_vls_cstr(&dmp->dm_pathName), bu_vls_cstr(&dmp->dm_dName));
        pubvars->top = pubvars->xtkwin;
     } else {
        char *cp;
@@ -488,21 +488,18 @@
 
            bu_vls_strncpy(&top_vls, (const char 
*)bu_vls_addr(&dmp->dm_pathName), cp - bu_vls_addr(&dmp->dm_pathName));
 
-           pubvars->top =
-               Tk_NameToWindow(interp, bu_vls_addr(&top_vls), tkwin);
+           pubvars->top = (Tk_Window)(*context->dm_window_from_name)(dmp, 
bu_vls_cstr(&top_vls), tkwin);
            bu_vls_free(&top_vls);
        }
 
        /* Make xtkwin an embedded window */
-       pubvars->xtkwin =
-           Tk_CreateWindow(interp, pubvars->top,
-                           cp + 1, (char *)NULL);
+       pubvars->xtkwin = 
(Tk_Window)((*context->dm_window_create_embedded)(dmp, pubvars->top, cp + 1));
     }
 
     if (pubvars->xtkwin == NULL) {
        bu_log("dm-osgl: Failed to open %s\n", bu_vls_addr(&dmp->dm_pathName));
        bu_vls_free(&init_proc_vls);
-       (void)osgl_close(dmp);
+       (void)osgl_close(dmp, context);
        return DM_NULL;
     }
 
@@ -519,7 +516,7 @@
            if (Tcl_Eval(interp, bu_vls_addr(&str)) == TCL_ERROR) {
                bu_vls_free(&init_proc_vls);
                bu_vls_free(&str);
-               (void)osgl_close(dmp);
+               (void)osgl_close(dmp, context);
                return DM_NULL;
            } else {
                Tcl_Obj *tclresult = Tcl_GetObjResult(interp);
@@ -532,7 +529,7 @@
            if (Tcl_Eval(interp, bu_vls_addr(&str)) == TCL_ERROR) {
                bu_vls_free(&init_proc_vls);
                bu_vls_free(&str);
-               (void)osgl_close(dmp);
+               (void)osgl_close(dmp, context);
                return DM_NULL;
            } else {
                Tcl_Obj *tclresult = Tcl_GetObjResult(interp);
@@ -550,18 +547,13 @@
        }
     }
 
-    bu_vls_printf(&dmp->dm_tkName, "%s",
-                 (char *)Tk_Name(pubvars->xtkwin));
+    const char *winname = (*context->dm_window_name)(dmp, pubvars->xtkwin);
+    bu_vls_printf(&dmp->dm_tkName, "%s", winname);
 
-    /* Important - note that this is a bu_vls_sprintf, to clear the string */
-    bu_vls_sprintf(&str, "_init_dm %s %s\n",
-                 bu_vls_addr(&init_proc_vls),
-                 bu_vls_addr(&dmp->dm_pathName));
-
-    if (Tcl_Eval(interp, bu_vls_addr(&str)) == TCL_ERROR) {
+    if ((*context->dm_init)(dmp, bu_vls_cstr(&init_proc_vls)) == BRLCAD_ERROR) 
{
        bu_vls_free(&init_proc_vls);
        bu_vls_free(&str);
-       (void)osgl_close(dmp);
+       (void)osgl_close(dmp, context);
        return DM_NULL;
     }
 
@@ -568,29 +560,26 @@
     bu_vls_free(&init_proc_vls);
     bu_vls_free(&str);
 
-    pubvars->dpy =
-       Tk_Display(pubvars->top);
+    pubvars->dpy = (Display *)(*context->dm_display)(dmp, pubvars->top);
 
     /* make sure there really is a display before proceeding. */
     if (!(pubvars->dpy)) {
        bu_vls_free(&init_proc_vls);
        bu_vls_free(&str);
-       (void)osgl_close(dmp);
+       (void)osgl_close(dmp, context);
        return DM_NULL;
     }
 
-    Tk_GeometryRequest(pubvars->xtkwin,
-                      dmp->dm_width,
-                      dmp->dm_height);
+    (*context->dm_window_geom)(dmp, pubvars->xtkwin, &dmp->dm_width, 
&dmp->dm_height);
 
     pubvars->depth = mvars->depth;
 
-    Tk_MakeWindowExist(pubvars->xtkwin);
+    (*context->dm_window_make_exist)(dmp, pubvars->xtkwin);
 
-    pubvars->win = Tk_WindowId(pubvars->xtkwin);
+    pubvars->win = (*context->dm_window_id)(dmp, pubvars->xtkwin);
     dmp->dm_id = pubvars->win;
 
-    Tk_MapWindow(pubvars->xtkwin);
+    (*context->dm_window_map)(dmp, pubvars->xtkwin);
 
     // Init the Windata Variable that holds the handle for the Window to 
display OSG in.
     // Check the QOSGWidget.cpp example for more logic relevant to this.  Need 
to find
@@ -637,7 +626,7 @@
     if (privvars->fs == NULL) {
        bu_log("dm-osgl: Failed to create font stash");
        bu_vls_free(&init_proc_vls);
-       (void)osgl_close(dmp);
+       (void)osgl_close(dmp, context);
        return DM_NULL;
     }
     privvars->fontNormal = FONS_INVALID;

Modified: brlcad/trunk/src/libdm/dm-qt.cpp
===================================================================
--- brlcad/trunk/src/libdm/dm-qt.cpp    2020-04-08 21:36:44 UTC (rev 75310)
+++ brlcad/trunk/src/libdm/dm-qt.cpp    2020-04-08 22:07:29 UTC (rev 75311)
@@ -61,7 +61,7 @@
  * Release the display manager
  */
 HIDDEN int
-qt_close(dm *dmp)
+qt_close(dm *dmp, struct dm_context *context)
 {
     struct dm_xvars *pubvars = (struct dm_xvars *)dmp->dm_vars.pub_vars;
     struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars;
@@ -77,7 +77,7 @@
     delete privars->parent;
 
     privars->qapp->quit();
-    Tk_DestroyWindow(pubvars->xtkwin);
+    (*context->dm_window_destroy)(dmp, pubvars->xtkwin);
 
     bu_vls_free(&dmp->dm_pathName);
     bu_vls_free(&dmp->dm_tkName);
@@ -572,14 +572,16 @@
 
 
 HIDDEN int
-qt_configureWin(dm *dmp, int force)
+qt_configureWin(dm *dmp, struct dm_context *context, int force)
 {
     struct dm_xvars *pubvars = (struct dm_xvars *)dmp->dm_vars.pub_vars;
     struct qt_vars *privars = (struct qt_vars *)dmp->dm_vars.priv_vars;
 
-    int width = Tk_Width(pubvars->xtkwin);
-    int height = Tk_Height(pubvars->xtkwin);
+    int width = 0;
+    int height = 0;
 
+    (*context->dm_window_geom)(dmp, pubvars->xtkwin, &dmp->dm_width, 
&dmp->dm_height);
+
     if (!force &&
        dmp->dm_height == height &&
        dmp->dm_width == width)
@@ -774,7 +776,7 @@
  *
  */
 dm *
-qt_open(Tcl_Interp *interp, int argc, char **argv)
+qt_open(Tcl_Interp *interp, struct dm_context *context, int argc, char **argv)
 {
     static int count = 0;
     int make_square = -1;
@@ -790,10 +792,6 @@
        return DM_NULL;
     }
 
-    if ((tkwin = Tk_MainWindow(interp)) == NULL) {
-       return DM_NULL;
-    }
-
     BU_ALLOC(dmp, struct dm_internal);
 
     *dmp = dm_qt; /* struct copy */
@@ -805,6 +803,13 @@
     BU_ALLOC(dmp->dm_vars.priv_vars, struct qt_vars);
     privars = (struct qt_vars *)dmp->dm_vars.priv_vars;
 
+    if ((tkwin = (Tk_Window)(*context->dm_window_main)(dmp)) == NULL) {
+       bu_free((void *)privars, "privars");
+       bu_free((void *)pubvars, "pubvars");
+       bu_free((void *)dmp, "dmp");
+       return DM_NULL;
+    }
+
     bu_vls_init(&dmp->dm_pathName);
     bu_vls_init(&dmp->dm_tkName);
     bu_vls_init(&dmp->dm_dName);
@@ -837,9 +842,8 @@
 
     if (dmp->dm_top) {
        /* Make xtkwin a toplevel window */
-       pubvars->xtkwin = Tk_CreateWindowFromPath(interp, tkwin,
-                                                 
bu_vls_addr(&dmp->dm_pathName),
-                                                 bu_vls_addr(&dmp->dm_dName));
+       pubvars->xtkwin = 
(Tk_Window)(*context->dm_window_create_from_path)(dmp, tkwin,
+               bu_vls_cstr(&dmp->dm_pathName), bu_vls_cstr(&dmp->dm_dName));
        pubvars->top = pubvars->xtkwin;
     } else {
        char *cp;
@@ -852,31 +856,27 @@
 
            bu_vls_strncpy(&top_vls, (const char 
*)bu_vls_addr(&dmp->dm_pathName), cp - bu_vls_addr(&dmp->dm_pathName));
 
-           pubvars->top = Tk_NameToWindow(interp, bu_vls_addr(&top_vls), 
tkwin);
+           pubvars->top = (Tk_Window)(*context->dm_window_from_name)(dmp, 
bu_vls_cstr(&top_vls), tkwin);
            bu_vls_free(&top_vls);
        }
 
        /* Make xtkwin an embedded window */
-       pubvars->xtkwin =
-           Tk_CreateWindow(interp, pubvars->top,
-                           cp + 1, (char *)NULL);
+       pubvars->xtkwin = (Tk_Window)(*context->dm_window_create_embedded)(dmp, 
pubvars->top, cp + 1);
     }
 
     if (pubvars->xtkwin == NULL) {
        bu_log("qt_open: Failed to open %s\n", bu_vls_addr(&dmp->dm_pathName));
-       (void)qt_close(dmp);
+       (void)qt_close(dmp, context);
        return DM_NULL;
     }
 
-    bu_vls_printf(&dmp->dm_tkName, "%s", (char *)Tk_Name(pubvars->xtkwin));
+    const char *winname = (*context->dm_window_name)(dmp, pubvars->xtkwin);
+    bu_vls_printf(&dmp->dm_tkName, "%s", winname);
 
-    bu_vls_printf(&str, "_init_dm %s %s\n", bu_vls_addr(&init_proc_vls), 
bu_vls_addr(&dmp->dm_pathName));
-
-    if (Tcl_Eval(interp, bu_vls_addr(&str)) == TCL_ERROR) {
-       bu_log("qt_open: _init_dm failed\n");
+    if ((*context->dm_init)(dmp, bu_vls_cstr(&init_proc_vls)) == BRLCAD_ERROR) 
{
        bu_vls_free(&init_proc_vls);
        bu_vls_free(&str);
-       (void)qt_close(dmp);
+       (void)qt_close(dmp, context);
        return DM_NULL;
     }
 
@@ -883,12 +883,12 @@
     bu_vls_free(&init_proc_vls);
     bu_vls_free(&str);
 
-    pubvars->dpy = Tk_Display(pubvars->top);
+    pubvars->dpy = (Display *)(*context->dm_display)(dmp, pubvars->top);
 
     /* make sure there really is a display before proceeding. */
     if (!pubvars->dpy) {
        bu_log("qt_open: Unable to attach to display (%s)\n", 
bu_vls_addr(&dmp->dm_pathName));
-       (void)qt_close(dmp);
+       (void)qt_close(dmp, context);
        return DM_NULL;
     }
 
@@ -913,14 +913,16 @@
            dmp->dm_height = dmp->dm_width;
     }
 
-    Tk_GeometryRequest(pubvars->xtkwin, dmp->dm_width, dmp->dm_height);
+    (*context->dm_window_geom)(dmp, pubvars->xtkwin, &dmp->dm_width, 
&dmp->dm_height);
 
-    Tk_MakeWindowExist(pubvars->xtkwin);
-    pubvars->win = Tk_WindowId(pubvars->xtkwin);
+    (*context->dm_window_make_exist)(dmp, pubvars->xtkwin);
+
+    pubvars->win = (*context->dm_window_id)(dmp, pubvars->xtkwin);
     dmp->dm_id = pubvars->win;
 
-    Tk_SetWindowBackground(pubvars->xtkwin, 0);
-    Tk_MapWindow(pubvars->xtkwin);
+    //(*context->dm_window_set_bg)(dmp, pubvars->xtkwin, privars->bg);
+    (*context->dm_window_map)(dmp, pubvars->xtkwin);
+
     privars->qapp = new QApplication(argc, argv);
 
     privars->parent = QWindow::fromWinId(pubvars->win);
@@ -937,7 +939,7 @@
     qt_setFGColor(dmp, 1, 0, 0, 0, 0);
     qt_setBGColor(dmp, 0, 0, 0);
 
-    qt_configureWin(dmp, 1);
+    qt_configureWin(dmp, context, 1);
 
     MAT_IDN(privars->mod_mat);
     MAT_IDN(privars->disp_mat);

Modified: brlcad/trunk/src/libdm/dm-wgl.c
===================================================================
--- brlcad/trunk/src/libdm/dm-wgl.c     2020-04-08 21:36:44 UTC (rev 75310)
+++ brlcad/trunk/src/libdm/dm-wgl.c     2020-04-08 22:07:29 UTC (rev 75311)
@@ -241,6 +241,9 @@
     dmp->dm_vp = &default_viewscale;
 
     if ((tkwin = (*context->dm_window_main)(dmp)) == NULL) {
+       bu_free((void *)privvars, "privvars");
+       bu_free((void *)pubvars, "pubvars");
+       bu_free((void *)dmp, "dmp");
        return DM_NULL;
     }
 

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