Revision: 75468
http://sourceforge.net/p/brlcad/code/75468
Author: starseeker
Date: 2020-04-20 13:56:34 +0000 (Mon, 20 Apr 2020)
Log Message:
-----------
Merge changes from trunk through r75467
Modified Paths:
--------------
brlcad/branches/dm-fb-merge/include/tclcad.h
brlcad/branches/dm-fb-merge/src/librt/cache.c
brlcad/branches/dm-fb-merge/src/libtclcad/tclcad_obj.c
brlcad/branches/dm-fb-merge/src/mged/setup.c
Property Changed:
----------------
brlcad/branches/dm-fb-merge/
brlcad/branches/dm-fb-merge/include/
Index: brlcad/branches/dm-fb-merge
===================================================================
--- brlcad/branches/dm-fb-merge 2020-04-20 13:54:12 UTC (rev 75467)
+++ brlcad/branches/dm-fb-merge 2020-04-20 13:56:34 UTC (rev 75468)
Property changes on: brlcad/branches/dm-fb-merge
___________________________________________________________________
Modified: svn:mergeinfo
## -7,4 +7,4 ##
/brlcad/branches/osg:62110-62113
/brlcad/branches/prep-cache:68236-68933
/brlcad/branches/tcltk86:68300-75257
-/brlcad/trunk:75440-75462
\ No newline at end of property
+/brlcad/trunk:75440-75467
\ No newline at end of property
Index: brlcad/branches/dm-fb-merge/include
===================================================================
--- brlcad/branches/dm-fb-merge/include 2020-04-20 13:54:12 UTC (rev 75467)
+++ brlcad/branches/dm-fb-merge/include 2020-04-20 13:56:34 UTC (rev 75468)
Property changes on: brlcad/branches/dm-fb-merge/include
___________________________________________________________________
Modified: svn:mergeinfo
## -6,4 +6,5 ##
/brlcad/branches/opencl/include:65867-66137
/brlcad/branches/osg/include:62110-62113
/brlcad/branches/prep-cache/include:68236-68933
-/brlcad/branches/tcltk86/include:68300-75257
\ No newline at end of property
+/brlcad/branches/tcltk86/include:68300-75257
+/brlcad/trunk/include:75463-75467
\ No newline at end of property
Modified: brlcad/branches/dm-fb-merge/include/tclcad.h
===================================================================
--- brlcad/branches/dm-fb-merge/include/tclcad.h 2020-04-20 13:54:12 UTC
(rev 75467)
+++ brlcad/branches/dm-fb-merge/include/tclcad.h 2020-04-20 13:56:34 UTC
(rev 75468)
@@ -469,7 +469,18 @@
*/
TCLCAD_EXPORT extern int tclcad_init(Tcl_Interp *interp, int init_gui, struct
bu_vls *tlog);
+/**
+ * Create Tcl specific I/O handlers
+ */
+TCLCAD_EXPORT void
+tclcad_create_io_handler(void **chan, struct bu_process *p, int fd, int mode,
void *data, ged_io_handler_callback_t callback);
+/**
+ * Delete Tcl specific I/O handlers
+ */
+TCLCAD_EXPORT void
+tclcad_delete_io_handler(void *interp, void *chan, struct bu_process *p, int
fd, void *data, ged_io_handler_callback_t callback);
+
__END_DECLS
#endif /* TCLCAD_H */
Modified: brlcad/branches/dm-fb-merge/src/librt/cache.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/librt/cache.c 2020-04-20 13:54:12 UTC
(rev 75467)
+++ brlcad/branches/dm-fb-merge/src/librt/cache.c 2020-04-20 13:56:34 UTC
(rev 75468)
@@ -387,7 +387,7 @@
buffer = (uint8_t *)bu_malloc(dest->ext_nbytes, "buffer");
BU_ASSERT(dest->ext_nbytes < INT_MAX);
- ret = LZ4_decompress_safe((const char *)(external->ext_buf +
SIZEOF_NETWORK_LONG), (char *)buffer, external->ext_nbytes -
SIZEOF_NETWORK_LONG, (int)dest->ext_nbytes);
+ ret = LZ4_decompress_fast((const char *)(external->ext_buf +
SIZEOF_NETWORK_LONG), (char *)buffer, (int)dest->ext_nbytes);
if (ret > 0)
uncompressed = 1;
Modified: brlcad/branches/dm-fb-merge/src/libtclcad/tclcad_obj.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libtclcad/tclcad_obj.c 2020-04-20
13:54:12 UTC (rev 75467)
+++ brlcad/branches/dm-fb-merge/src/libtclcad/tclcad_obj.c 2020-04-20
13:56:34 UTC (rev 75468)
@@ -54,6 +54,7 @@
#include "rt/geom.h"
#include "wdb.h"
#include "raytrace.h"
+#include "ged.h"
#include "tclcad.h"
#include "rt/solid.h"
@@ -60,7 +61,6 @@
#include "dm.h"
#include "dm/bview.h"
-#include "ged.h"
#include "icv/io.h"
#include "icv/ops.h"
#include "icv/crop.h"
@@ -1494,7 +1494,6 @@
return TCL_OK;
}
-
/**
* @brief create the Tcl command for to_open
*
@@ -1666,6 +1665,52 @@
}
+/* Wrappers for setting up/tearing down IO handler */
+#ifndef _WIN32
+void
+tclcad_create_io_handler(void **UNUSED(chan), struct bu_process *p, int fd,
int mode, void *data, ged_io_handler_callback_t callback)
+{
+ int *fdp;
+ if (!p) return;
+ fdp = (int *)bu_process_fd(p, fd);
+ Tcl_CreateFileHandler(*fdp, mode, callback, (ClientData)data);
+}
+
+void
+tclcad_delete_io_handler(void *UNUSED(interp), void *UNUSED(chan), struct
bu_process *p, int fd, void *UNUSED(data), ged_io_handler_callback_t
UNUSED(callback))
+{
+ int *fdp;
+ if (!p) return;
+ fdp = (int *)bu_process_fd(p, fd);
+ Tcl_DeleteFileHandler(*fdp);
+ close(*fdp);
+}
+
+#else
+void
+tclcad_create_io_handler(void **chan, struct bu_process *p, int fd, int mode,
void *data, ged_io_handler_callback_t callback)
+{
+ HANDLE *fdp;
+ if (!chan || !p) return;
+ fdp = (HANDLE *)bu_process_fd(p, fd);
+ (*chan) = (void *)Tcl_MakeFileChannel(*fdp, mode);
+ Tcl_CreateChannelHandler((Tcl_Channel)(*chan), mode, callback,
(ClientData)data);
+}
+
+void
+tclcad_delete_io_handler(void *interp, void *chan, struct bu_process *p, int
fd, void *data, ged_io_handler_callback_t callback)
+{
+ HANDLE *fdp;
+ Tcl_Interp *tcl_interp;
+ if (!chan || !p) return;
+ tcl_interp = (Tcl_Interp *)interp;
+ fdp = (HANDLE *)bu_process_fd(p, fd);
+ Tcl_DeleteChannelHandler((Tcl_Channel)chan, callback, (ClientData)data);
+ Tcl_Close(tcl_interp, (Tcl_Channel)chan);
+}
+#endif
+
+
/**
* @brief
* A TCL interface to wdb_fopen() and wdb_dbopen().
@@ -1741,6 +1786,11 @@
}
gedp->ged_interp = (void *)interp;
+ /* Set the Tcl specific I/O handlers for asynchronous subprocess I/O */
+ gedp->ged_create_io_handler = &tclcad_create_io_handler;
+ gedp->ged_delete_io_handler = &tclcad_delete_io_handler;
+ gedp->io_mode = TCL_READABLE;
+
/* initialize tclcad_obj */
BU_ALLOC(top, struct tclcad_obj);
top->to_interp = interp;
Modified: brlcad/branches/dm-fb-merge/src/mged/setup.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/mged/setup.c 2020-04-20 13:54:12 UTC
(rev 75467)
+++ brlcad/branches/dm-fb-merge/src/mged/setup.c 2020-04-20 13:56:34 UTC
(rev 75468)
@@ -474,6 +474,9 @@
mged_global_variable_setup(*interpreter);
mged_variable_setup(*interpreter);
GEDP->ged_interp = (void *)*interpreter;
+ GEDP->ged_create_io_handler = &tclcad_create_io_handler;
+ GEDP->ged_delete_io_handler = &tclcad_delete_io_handler;
+ GEDP->io_mode = TCL_READABLE;
GEDP->ged_interp_eval = &mged_db_search_callback;
/* Tcl needs to write nulls onto subscripted variable names */
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