diff options
author | Jacques Garrigue <garrigue at math.nagoya-u.ac.jp> | 1999-11-16 10:29:03 +0000 |
---|---|---|
committer | Jacques Garrigue <garrigue at math.nagoya-u.ac.jp> | 1999-11-16 10:29:03 +0000 |
commit | 27c082c04663ff18459777e111aca4cde20df265 (patch) | |
tree | d74a2991f4712aa20929a763bb65997c16da94ff /otherlibs/labltk/support/cltkWait.c | |
parent | 8f492b2886fb03a3c23f0d2581222445285d6d28 (diff) |
leave labltk only in olabl branch
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@2536 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'otherlibs/labltk/support/cltkWait.c')
-rw-r--r-- | otherlibs/labltk/support/cltkWait.c | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/otherlibs/labltk/support/cltkWait.c b/otherlibs/labltk/support/cltkWait.c deleted file mode 100644 index 7645dd931..000000000 --- a/otherlibs/labltk/support/cltkWait.c +++ /dev/null @@ -1,89 +0,0 @@ -#include <tcl.h> -#include <tk.h> -#include <caml/mlvalues.h> -#include <caml/memory.h> -#include "camltk.h" - -/* The following are replacements for - tkwait visibility - tkwait window - in the case where we use threads (tkwait internally calls an event loop, - and thus prevents thread scheduling from taking place). - - Instead, one should set up a callback, wait for a signal, and signal - from inside the callback -*/ - -static void WaitVisibilityProc _ANSI_ARGS_((ClientData clientData, - XEvent *eventPtr)); -static void WaitWindowProc _ANSI_ARGS_((ClientData clientData, - XEvent *eventPtr)); - -/* For the other handlers, we need a bit more data */ -struct WinCBData { - int cbid; - Tk_Window win; -}; - -static void WaitVisibilityProc(clientData, eventPtr) - ClientData clientData; - XEvent *eventPtr; /* Information about event (not used). */ -{ - struct WinCBData *vis = clientData; - value cbid = Val_int(vis->cbid); - - Tk_DeleteEventHandler(vis->win, VisibilityChangeMask, - WaitVisibilityProc, clientData); - - stat_free((char *)vis); - callback2(*handler_code,cbid,Val_int(0)); -} - -/* Sets up a callback upon Visibility of a window */ -value camltk_wait_vis(win,cbid) /* ML */ - value win; - value cbid; -{ - struct WinCBData *vis = - (struct WinCBData *)stat_alloc(sizeof(struct WinCBData)); - vis->win = Tk_NameToWindow(cltclinterp, String_val(win), cltk_mainWindow); - if (vis -> win == NULL) { - stat_free((char *)vis); - tk_error(cltclinterp->result); - }; - vis->cbid = Int_val(cbid); - Tk_CreateEventHandler(vis->win, VisibilityChangeMask, - WaitVisibilityProc, (ClientData) vis); - return Val_unit; -} - -static void WaitWindowProc(clientData, eventPtr) - ClientData clientData; - XEvent *eventPtr; -{ - if (eventPtr->type == DestroyNotify) { - struct WinCBData *vis = clientData; - value cbid = Val_int(vis->cbid); - stat_free((char *)clientData); - /* The handler is destroyed by Tk itself */ - callback2(*handler_code,cbid,Val_int(0)); - } -} - -/* Sets up a callback upon window destruction */ -value camltk_wait_des(win,cbid) /* ML */ - value win; - value cbid; -{ - struct WinCBData *vis = - (struct WinCBData *)stat_alloc(sizeof(struct WinCBData)); - vis->win = Tk_NameToWindow(cltclinterp, String_val(win), cltk_mainWindow); - if (vis -> win == NULL) { - stat_free((char *)vis); - tk_error(cltclinterp->result); - }; - vis->cbid = Int_val(cbid); - Tk_CreateEventHandler(vis->win, StructureNotifyMask, - WaitWindowProc, (ClientData) vis); - return Val_unit; -} |