# HG changeset patch # User John W. Eaton # Date 1242751797 14400 # Node ID 9d4b84b14bf0bde8b888537da5e97d19718b6c7c # Parent 1500d0197484a68e41418e97a6811cdfcf37d38a call mlock in __fltk_init__ diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,13 @@ 2009-05-19 John W. Eaton + * DLD-FUNCTIONS/fltk_backend.cc (F__fltk_redraw__): New function. + (F__init_fltk__): Call add_input_event_hook with feval to add + __fltk_redraw__ to the list of even hook functions to call. + Call mlock when initializing. + (F__remove_fltk__): Call remove_input_event_hook with feval to + remove __fltk_redraw__ from the list of event hook functions. + Unlock __init_fltk__ when shutting down. + * input.cc (Finput_event_hook): Delete. (input_event_hook): Handle set of functions instead of just one. (Fadd_input_event_hook, Fremove_input_event_hook): New functions. diff --git a/src/DLD-FUNCTIONS/fltk_backend.cc b/src/DLD-FUNCTIONS/fltk_backend.cc --- a/src/DLD-FUNCTIONS/fltk_backend.cc +++ b/src/DLD-FUNCTIONS/fltk_backend.cc @@ -60,6 +60,7 @@ #include "gl-render.h" #include "graphics.h" #include "parse.h" +#include "variables.h" #define FLTK_BACKEND_NAME "fltk" @@ -836,15 +837,26 @@ return 0; } +DEFUN_DLD (__fltk_redraw__, , , "") +{ + __fltk_redraw__ (); + + return octave_value (); +} + // call this to init the fltk backend DEFUN_DLD (__init_fltk__, , , "") { if (! backend_registered) { + mlock (); + graphics_backend::register_backend (new fltk_backend); backend_registered = true; - command_editor::add_event_hook (__fltk_redraw__); + octave_value_list args; + args(0) = "__fltk_redraw__"; + feval ("add_input_event_hook", args, 0); } octave_value retval; @@ -857,11 +869,15 @@ { if (backend_registered) { + munlock ("__init_fltk__"); + figure_manager::close_all (); graphics_backend::unregister_backend (FLTK_BACKEND_NAME); backend_registered = false; - command_editor::remove_event_hook (__fltk_redraw__); + octave_value_list args; + args(0) = "__fltk_redraw__"; + feval ("remove_input_event_hook", args, 0); // FIXME ??? // give FLTK 10 seconds to wrap it up @@ -872,7 +888,6 @@ return retval; } -// call this to delete the fltk backend DEFUN_DLD (__fltk_maxtime__, args, ,"") { octave_value retval = fltk_maxtime;