diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-07-28 09:14:59 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-07-28 09:14:59 +0000 |
commit | 41d41fbdb9e2448404865310c295dd666ce60d00 (patch) | |
tree | 8a2a332a7cae900cfd066998598bf60e4493f5e7 /ext/tk/stubs.h | |
parent | 501fdc09d8fa09adc1e326c87942276102cbd92b (diff) | |
download | ruby-41d41fbdb9e2448404865310c295dd666ce60d00.tar.gz |
* ext/tk/stubs.c: When --enable-tcltk-stubs, the initialize
routine creates a Tcl/Tk interpreter and deletes it. However,
init cost of Tk's MainWindow is not so small. And that makes it
impossible to use libraries written with Tcl functions only on
an environment without a graphical display. This changes support
delaying initalization of Tk_Stubs until the script needs Tk.
* ext/tk/stubs.h: New file. Define prototypes and return codes of
functions on stubs.c.
* ext/tk/tcltklib.c: Support delaying initalization of Tk_Stubs
until the script needs Tk.
* ext/tk/tcltklib.c: Show friendly error messages for errors on
initialization.
* ext/tk/tcltklib.c: Avoid SEGV on ip_finalize() when ruby is
exiting and $DEBUG is true. (Not fix. If you know the reason of
why, please fix it.)
* ext/tk/tkutil/tkutil.c (ary2list, ary2list2): bug fix on handling
of encoding.
* ext/tk/lib/multi-tk.rb: MultiTkIp#eval_string and bg_eval_string
don't work propery.
* ext/tk/lib/tk.rb: Forget extending Tk::Encoding module to Tk.
* ext/tk/lib/tk/variable.rb: TkVarAccess fails to initialize the
object for an element of a Tcl's array variable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk/stubs.h')
-rw-r--r-- | ext/tk/stubs.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/ext/tk/stubs.h b/ext/tk/stubs.h new file mode 100644 index 0000000000..7c913fb393 --- /dev/null +++ b/ext/tk/stubs.h @@ -0,0 +1,33 @@ +#include <tcl.h> + +extern int ruby_open_tcl_dll(char *); +extern int ruby_open_tk_dll(); +extern int ruby_open_tcltk_dll(char *); +extern int tcl_stubs_init_p(); +extern int tk_stubs_init_p(); +extern Tcl_Interp *ruby_tcl_create_ip_and_stubs_init(int*); +extern int ruby_tcl_stubs_init(); +extern int ruby_tk_stubs_init(Tcl_Interp*); +extern int ruby_tk_stubs_safeinit(Tcl_Interp*); +extern int ruby_tcltk_stubs(); + +/* no error */ +#define TCLTK_STUBS_OK (0) + +/* return value of ruby_open_tcl_dll() */ +#define NO_TCL_DLL (1) +#define NO_FindExecutable (2) + +/* return value of ruby_open_tk_dll() */ +#define NO_TK_DLL (-1) + +/* status value of ruby_tcl_create_ip_and_stubs_init(st) */ +#define NO_CreateInterp (3) +#define NO_DeleteInterp (4) +#define FAIL_CreateInterp (5) +#define FAIL_Tcl_InitStubs (6) + +/* return value of ruby_tk_stubs_init() */ +#define NO_Tk_Init (7) +#define FAIL_Tk_Init (8) +#define FAIL_Tk_InitStubs (9) |