comparison src/DLD-FUNCTIONS/fltk_backend.cc @ 9991:1300d9ced492

F__init_fltk__: add __remove_fltk__ to atexit function list
author John W. Eaton <jwe@octave.org>
date Wed, 16 Dec 2009 01:25:40 -0500
parents 118158f10628
children b6261d776a82
comparison
equal deleted inserted replaced
9990:2b008f1d3794 9991:1300d9ced492
61 #include "error.h" 61 #include "error.h"
62 #include "gl-render.h" 62 #include "gl-render.h"
63 #include "gl2ps-renderer.h" 63 #include "gl2ps-renderer.h"
64 #include "graphics.h" 64 #include "graphics.h"
65 #include "parse.h" 65 #include "parse.h"
66 #include "toplev.h"
66 #include "variables.h" 67 #include "variables.h"
67 68
68 #define FLTK_BACKEND_NAME "fltk" 69 #define FLTK_BACKEND_NAME "fltk"
69 70
70 // Give FLTK no more than 0.01 sec to do its stuff. 71 // Give FLTK no more than 0.01 sec to do its stuff.
1003 1004
1004 // Initialize the fltk backend. 1005 // Initialize the fltk backend.
1005 1006
1006 DEFUN_DLD (__init_fltk__, , , "") 1007 DEFUN_DLD (__init_fltk__, , , "")
1007 { 1008 {
1009 static bool remove_fltk_registered = false;
1010
1008 if (! backend_registered) 1011 if (! backend_registered)
1009 { 1012 {
1010 mlock (); 1013 mlock ();
1011 1014
1012 graphics_backend::register_backend (new fltk_backend); 1015 graphics_backend::register_backend (new fltk_backend);
1013 backend_registered = true; 1016 backend_registered = true;
1014 1017
1015 octave_value_list args; 1018 octave_value_list args;
1016 args(0) = "__fltk_redraw__"; 1019 args(0) = "__fltk_redraw__";
1017 feval ("add_input_event_hook", args, 0); 1020 feval ("add_input_event_hook", args, 0);
1021
1022 if (! remove_fltk_registered)
1023 {
1024 octave_add_atexit_function ("__remove_fltk__");
1025
1026 remove_fltk_registered = true;
1027 }
1018 } 1028 }
1019 1029
1020 octave_value retval; 1030 octave_value retval;
1021 return retval; 1031 return retval;
1022 } 1032 }
1037 octave_value_list args; 1047 octave_value_list args;
1038 args(0) = "__fltk_redraw__"; 1048 args(0) = "__fltk_redraw__";
1039 feval ("remove_input_event_hook", args, 0); 1049 feval ("remove_input_event_hook", args, 0);
1040 1050
1041 // FIXME ??? 1051 // FIXME ???
1042 // give FLTK 10 seconds to wrap it up 1052 Fl::wait (fltk_maxtime);
1043 Fl::wait(10);
1044 } 1053 }
1045 1054
1046 octave_value retval; 1055 octave_value retval;
1047 return retval; 1056 return retval;
1048 } 1057 }