Blame support/cltkEvent.c

Packit bd2e5d
/***********************************************************************/
Packit bd2e5d
/*                                                                     */
Packit bd2e5d
/*                 MLTk, Tcl/Tk interface of OCaml                     */
Packit bd2e5d
/*                                                                     */
Packit bd2e5d
/*    Francois Rouaix, Francois Pessaux, Jun Furuse and Pierre Weis    */
Packit bd2e5d
/*               projet Cristal, INRIA Rocquencourt                    */
Packit bd2e5d
/*            Jacques Garrigue, Kyoto University RIMS                  */
Packit bd2e5d
/*                                                                     */
Packit bd2e5d
/*  Copyright 2002 Institut National de Recherche en Informatique et   */
Packit bd2e5d
/*  en Automatique and Kyoto University.  All rights reserved.         */
Packit bd2e5d
/*  This file is distributed under the terms of the GNU Library        */
Packit bd2e5d
/*  General Public License, with the special exception on linking      */
Packit bd2e5d
/*  described in file LICENSE found in the OCaml source tree.          */
Packit bd2e5d
/*                                                                     */
Packit bd2e5d
/***********************************************************************/
Packit bd2e5d
Packit bd2e5d
/* $Id$ */
Packit bd2e5d
Packit bd2e5d
#include <tcl.h>
Packit bd2e5d
#include <tk.h>
Packit bd2e5d
#include <mlvalues.h>
Packit bd2e5d
#include <alloc.h>
Packit bd2e5d
#include "camltk.h"
Packit bd2e5d
Packit bd2e5d
CAMLprim value camltk_tk_mainloop(value unit)
Packit bd2e5d
{
Packit bd2e5d
  CheckInit();
Packit bd2e5d
Packit bd2e5d
  if (cltk_slave_mode) return Val_unit;
Packit bd2e5d
Packit bd2e5d
  if (!signal_events) {
Packit bd2e5d
    /* Initialise signal handling */
Packit bd2e5d
    signal_events = 1;
Packit bd2e5d
    Tk_CreateTimerHandler(100, invoke_pending_caml_signals, NULL);
Packit bd2e5d
  }
Packit bd2e5d
  Tk_MainLoop();
Packit bd2e5d
  return Val_unit;
Packit bd2e5d
}
Packit bd2e5d
Packit bd2e5d
/* Note: this HAS to be reported "as-is" in ML source */
Packit bd2e5d
static int event_flag_table[] = {
Packit bd2e5d
  TK_DONT_WAIT, TK_X_EVENTS, TK_FILE_EVENTS, TK_TIMER_EVENTS, TK_IDLE_EVENTS,
Packit bd2e5d
  TK_ALL_EVENTS
Packit bd2e5d
};
Packit bd2e5d
Packit bd2e5d
CAMLprim value camltk_dooneevent(value flags)
Packit bd2e5d
{
Packit bd2e5d
  int ret;
Packit bd2e5d
Packit bd2e5d
  CheckInit();
Packit bd2e5d
Packit bd2e5d
  ret = Tk_DoOneEvent(caml_convert_flag_list(flags, event_flag_table));
Packit bd2e5d
  return Val_int(ret);
Packit bd2e5d
}