Revision: 76001
          http://sourceforge.net/p/brlcad/code/76001
Author:   starseeker
Date:     2020-06-02 18:17:32 +0000 (Tue, 02 Jun 2020)
Log Message:
-----------
Expose the png2fb, fb2pix, pix2fb and fbclear GED commands in MGED.  Still 
haven't fully run to ground the consequences of getting the fb through the dm 
rather than fbserv_obj, but with the addtion of the fb_refresh calls these 
commands do successfully update the MGED embedded framebuffer.

Modified Paths:
--------------
    brlcad/branches/dm-fb-merge/src/libged/fb2pix.c
    brlcad/branches/dm-fb-merge/src/libged/fbclear.c
    brlcad/branches/dm-fb-merge/src/libged/pix2fb.c
    brlcad/branches/dm-fb-merge/src/libged/png2fb.c
    brlcad/branches/dm-fb-merge/src/mged/setup.c

Modified: brlcad/branches/dm-fb-merge/src/libged/fb2pix.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libged/fb2pix.c     2020-06-02 07:00:20 UTC 
(rev 76000)
+++ brlcad/branches/dm-fb-merge/src/libged/fb2pix.c     2020-06-02 18:17:32 UTC 
(rev 76001)
@@ -116,7 +116,8 @@
        return GED_ERROR;
     }
 
-    struct fb *fbp = dm_get_fb((struct dm *)gedp->ged_dmp);
+    struct dm *dmp = (struct dm *)gedp->ged_dmp;
+    struct fb *fbp = dm_get_fb(dmp);
 
     if (!fbp) {
        bu_vls_printf(gedp->ged_result_str, "display manager does not have a 
framebuffer");
@@ -148,8 +149,12 @@
     if (outfp != stdout)
        fclose(outfp);
 
-    if (ret == BRLCAD_OK)
+    if (ret == BRLCAD_OK) {
+       (void)dm_draw_begin(dmp);
+       fb_refresh(fbp, 0, 0, dm_get_width(dmp), dm_get_height(dmp));
+       (void)dm_draw_end(dmp);
        return GED_OK;
+    }
 
     return GED_ERROR;
 }

Modified: brlcad/branches/dm-fb-merge/src/libged/fbclear.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libged/fbclear.c    2020-06-02 07:00:20 UTC 
(rev 76000)
+++ brlcad/branches/dm-fb-merge/src/libged/fbclear.c    2020-06-02 18:17:32 UTC 
(rev 76001)
@@ -60,7 +60,8 @@
        return GED_ERROR;
     }
 
-    struct fb *fbp = dm_get_fb((struct dm *)gedp->ged_dmp);
+    struct dm *dmp = (struct dm *)gedp->ged_dmp;
+    struct fb *fbp = dm_get_fb(dmp);
 
     if (!fbp) {
        bu_vls_printf(gedp->ged_result_str, "display manager does not have a 
framebuffer");
@@ -92,6 +93,10 @@
     if (ret)
        return GED_ERROR;
 
+    (void)dm_draw_begin(dmp);
+    fb_refresh(fbp, 0, 0, dm_get_width(dmp), dm_get_height(dmp));
+    (void)dm_draw_end(dmp);
+
     return GED_OK;
 }
 

Modified: brlcad/branches/dm-fb-merge/src/libged/pix2fb.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libged/pix2fb.c     2020-06-02 07:00:20 UTC 
(rev 76000)
+++ brlcad/branches/dm-fb-merge/src/libged/pix2fb.c     2020-06-02 18:17:32 UTC 
(rev 76001)
@@ -183,7 +183,8 @@
        return GED_ERROR;
     }
 
-    struct fb *fbp = dm_get_fb((struct dm *)gedp->ged_dmp);
+    struct dm *dmp = (struct dm *)gedp->ged_dmp;
+    struct fb *fbp = dm_get_fb(dmp);
 
     if (!fbp) {
        bu_vls_printf(gedp->ged_result_str, "display manager does not have a 
framebuffer");
@@ -219,8 +220,13 @@
 
     bu_snooze(BU_SEC2USEC(pause_sec));
 
-    if (ret == BRLCAD_OK)
+
+    if (ret == BRLCAD_OK) {
+       (void)dm_draw_begin(dmp);
+       fb_refresh(fbp, 0, 0, dm_get_width(dmp), dm_get_height(dmp));
+       (void)dm_draw_end(dmp);
        return GED_OK;
+    }
 
     return GED_ERROR;
 }

Modified: brlcad/branches/dm-fb-merge/src/libged/png2fb.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libged/png2fb.c     2020-06-02 07:00:20 UTC 
(rev 76000)
+++ brlcad/branches/dm-fb-merge/src/libged/png2fb.c     2020-06-02 18:17:32 UTC 
(rev 76001)
@@ -144,7 +144,8 @@
        return GED_ERROR;
     }
 
-    struct fb *fbp = dm_get_fb((struct dm *)gedp->ged_dmp);
+    struct dm *dmp = (struct dm *)gedp->ged_dmp;
+    struct fb *fbp = dm_get_fb(dmp);
 
     if (!fbp) {
        bu_vls_printf(gedp->ged_result_str, "display manager does not have a 
framebuffer");
@@ -177,6 +178,10 @@
     if (fp_in != stdin)
        fclose(fp_in);
 
+    (void)dm_draw_begin(dmp);
+    fb_refresh(fbp, 0, 0, dm_get_width(dmp), dm_get_height(dmp));
+    (void)dm_draw_end(dmp);
+
     if (ret == BRLCAD_OK)
        return GED_OK;
 

Modified: brlcad/branches/dm-fb-merge/src/mged/setup.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/mged/setup.c        2020-06-02 07:00:20 UTC 
(rev 76000)
+++ brlcad/branches/dm-fb-merge/src/mged/setup.c        2020-06-02 18:17:32 UTC 
(rev 76001)
@@ -154,6 +154,8 @@
     {"exists", cmd_ged_plain_wrapper, ged_exists},
     {"facedef", f_facedef, GED_FUNC_PTR_NULL},
     {"facetize", cmd_ged_plain_wrapper, ged_facetize},
+    {"fb2pix", cmd_ged_dm_wrapper, ged_fb2pix},
+    {"fbclear", cmd_ged_dm_wrapper, ged_fbclear},
     {"form", cmd_ged_plain_wrapper, ged_form},
     {"fracture", cmd_ged_plain_wrapper, ged_fracture},
     {"front", f_bv_front, GED_FUNC_PTR_NULL},
@@ -257,8 +259,10 @@
     {"pathlist", cmd_ged_plain_wrapper, ged_pathlist},
     {"paths", cmd_ged_plain_wrapper, ged_pathsum},
     {"permute", f_permute, GED_FUNC_PTR_NULL},
+    {"pix2fb", cmd_ged_dm_wrapper, ged_pix2fb},
     {"plot", cmd_ged_plain_wrapper, ged_plot},
     {"png", cmd_ged_plain_wrapper, ged_png},
+    {"png2fb", cmd_ged_dm_wrapper, ged_png2fb},
     {"pnts", cmd_ged_plain_wrapper, ged_pnts},
     {"prcolor", cmd_ged_plain_wrapper, ged_prcolor},
     {"prefix", cmd_ged_plain_wrapper, ged_prefix},

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