diff --git a/libinterp/corefcn/interpreter.cc b/libinterp/corefcn/interpreter.cc --- a/libinterp/corefcn/interpreter.cc +++ b/libinterp/corefcn/interpreter.cc @@ -442,6 +442,8 @@ Undocumented internal function. set_liboctave_warning_with_id_handler (warning_with_id); } + std::list interpreter::dynlibs_to_delete; + // Create an interpreter object and perform initialization up to the // point of setting reading command history and setting the load // path. @@ -991,7 +993,7 @@ Undocumented internal function. // and functions to be cleared. OCTAVE_SAFE_CALL (clear_all, ()); - OCTAVE_SAFE_CALL (m_event_manager.set_workspace, ()); + OCTAVE_SAFE_CALL (m_event_manager.clear_workspace, ()); // If we are attached to a GUI, queue and event to close it (only // works with the new terminal widget), process pending events and @@ -1335,6 +1337,8 @@ Undocumented internal function. int interpreter::main_loop (void) { + command_editor::add_event_hook (delete_dynlibs); + return m_evaluator.repl (); } @@ -2021,6 +2025,18 @@ Undocumented internal function. return found; } + void interpreter::delete_later (const dynamic_library& lib) + { + dynlibs_to_delete.push_back (lib); + } + + int interpreter::delete_dynlibs (void) + { + dynlibs_to_delete.clear (); + + return 0; + } + // Remove when corresponding public deprecated function is removed. void interpreter::add_atexit_function_deprecated (const std::string& fname) { diff --git a/libinterp/corefcn/interpreter.h b/libinterp/corefcn/interpreter.h --- a/libinterp/corefcn/interpreter.h +++ b/libinterp/corefcn/interpreter.h @@ -536,6 +536,10 @@ OCTAVE_NAMESPACE_BEGIN bool remove_atexit_fcn (const std::string& fname); + static void delete_later (const dynamic_library& lib); + + static int delete_dynlibs (void); + private: // Remove when corresponding public deprecated function is removed. @@ -670,6 +674,8 @@ OCTAVE_NAMESPACE_BEGIN bool m_executing_atexit; bool m_initialized; + + static std::list dynlibs_to_delete; }; OCTAVE_NAMESPACE_END diff --git a/libinterp/dldfcn/audiodevinfo.cc b/libinterp/dldfcn/audiodevinfo.cc --- a/libinterp/dldfcn/audiodevinfo.cc +++ b/libinterp/dldfcn/audiodevinfo.cc @@ -44,7 +44,6 @@ #include "defun-dld.h" #include "error.h" #include "errwarn.h" -#include "interpreter.h" #include "oct-map.h" #include "ov-int32.h" #include "ov.h" @@ -589,6 +588,8 @@ private: PaStreamParameters output_parameters; audio_type type; + auto_shlib m_containing_dynlib; + DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA }; @@ -882,6 +883,8 @@ audioplayer::audioplayer (void) audioplayer::~audioplayer (void) { + interpreter::delete_later (m_containing_dynlib); + if (isplaying ()) { warning_with_id ("Octave:audio-interrupt", @@ -1338,6 +1341,8 @@ private: PaStreamParameters input_parameters; audio_type type; + auto_shlib m_containing_dynlib; + DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA }; @@ -1554,6 +1559,8 @@ audiorecorder::audiorecorder (void) audiorecorder::~audiorecorder (void) { + interpreter::delete_later (m_containing_dynlib); + if (isrecording ()) { warning_with_id ("Octave:audio-interrupt", @@ -1910,8 +1917,8 @@ audiorecorder::get_stream (void) #endif -DEFMETHOD_DLD (__recorder_audiorecorder__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_audiorecorder__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{recorder} =} __recorder_audiorecorder__ (@var{fs}, @var{nbits}, @var{channels}) @deftypefnx {} {@var{recorder} =} __recorder_audiorecorder__ (@var{fs}, @var{nbits}, @var{channels}, @var{id}) @deftypefnx {} {@var{recorder} =} __recorder_audiorecorder__ (@var{fcn}, @dots{}) @@ -1922,8 +1929,6 @@ Undocumented internal function. #if defined (HAVE_PORTAUDIO) - interp.mlock (); - int nargin = args.length (); audiorecorder *recorder = new audiorecorder (); @@ -1953,7 +1958,6 @@ Undocumented internal function. retval = recorder; #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_audiorecorder__", @@ -1966,10 +1970,8 @@ Undocumented internal function. #if defined (HAVE_PORTAUDIO) static audiorecorder * -get_recorder (interpreter& interp, const octave_value& ov) +get_recorder (const octave_value& ov) { - interp.mlock (); - const octave_base_value& rep = ov.get_rep (); octave_base_value *ncrep = const_cast (&rep); @@ -1983,8 +1985,8 @@ get_recorder (interpreter& interp, const #endif -DEFMETHOD_DLD (__recorder_getaudiodata__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_getaudiodata__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{data} =} __recorder_getaudiodata__ (@var{recorder}) Undocumented internal function. @end deftypefn */) @@ -1992,9 +1994,8 @@ Undocumented internal function. octave_value retval; #if defined (HAVE_PORTAUDIO) - retval = get_recorder (interp, args(0))->getaudiodata (); + retval = get_recorder (args(0))->getaudiodata (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_getaudiodata__", @@ -2004,8 +2005,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__recorder_get_channels__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_get_channels__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{n} =} __recorder_get_channels__ (@var{recorder}) Undocumented internal function. @end deftypefn */) @@ -2013,9 +2014,8 @@ Undocumented internal function. octave_value retval; #if defined (HAVE_PORTAUDIO) - retval = get_recorder (interp, args(0))->get_channels (); + retval = get_recorder (args(0))->get_channels (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_get_channels__", @@ -2025,8 +2025,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__recorder_get_fs__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_get_fs__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{fs} =} __recorder_get_fs__ (@var{recorder}) Undocumented internal function. @end deftypefn */) @@ -2034,9 +2034,8 @@ Undocumented internal function. octave_value retval; #if defined (HAVE_PORTAUDIO) - retval = get_recorder (interp, args(0))->get_fs (); + retval = get_recorder (args(0))->get_fs (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_get_fs__", @@ -2046,8 +2045,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__recorder_get_id__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_get_id__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{id} =} __recorder_get_id__ (@var{recorder}) Undocumented internal function. @end deftypefn */) @@ -2055,9 +2054,8 @@ Undocumented internal function. octave_value retval; #if defined (HAVE_PORTAUDIO) - retval = get_recorder (interp, args(0))->get_id (); + retval = get_recorder (args(0))->get_id (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_get_id__", @@ -2067,8 +2065,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__recorder_get_nbits__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_get_nbits__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{nbits} =} __recorder_get_nbits__ (@var{recorder}) Undocumented internal function. @end deftypefn */) @@ -2076,9 +2074,8 @@ Undocumented internal function. octave_value retval; #if defined (HAVE_PORTAUDIO) - retval = get_recorder (interp, args(0))->get_nbits (); + retval = get_recorder (args(0))->get_nbits (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_get_nbits__", @@ -2088,8 +2085,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__recorder_get_sample_number__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_get_sample_number__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{n} =} __recorder_get_sample_number__ (@var{recorder}) Undocumented internal function. @end deftypefn */) @@ -2097,9 +2094,8 @@ Undocumented internal function. octave_value retval; #if defined (HAVE_PORTAUDIO) - retval = get_recorder (interp, args(0))->get_sample_number (); + retval = get_recorder (args(0))->get_sample_number (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_get_sample_number__", @@ -2109,8 +2105,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__recorder_get_tag__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_get_tag__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{tag} =} __recorder_get_tag__ (@var{recorder}) Undocumented internal function. @end deftypefn */) @@ -2118,9 +2114,8 @@ Undocumented internal function. octave_value retval; #if defined (HAVE_PORTAUDIO) - retval = get_recorder (interp, args(0))->get_tag (); + retval = get_recorder (args(0))->get_tag (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_get_tag__", @@ -2130,8 +2125,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__recorder_get_total_samples__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_get_total_samples__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{n} =} __recorder_get_total_samples__ (@var{recorder}) Undocumented internal function. @end deftypefn */) @@ -2139,9 +2134,8 @@ Undocumented internal function. octave_value retval; #if defined (HAVE_PORTAUDIO) - retval = get_recorder (interp, args(0))->get_total_samples (); + retval = get_recorder (args(0))->get_total_samples (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_get_total_samples__", @@ -2151,8 +2145,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__recorder_get_userdata__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_get_userdata__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{data} =} __recorder_get_userdata__ (@var{recorder}) Undocumented internal function. @end deftypefn */) @@ -2160,9 +2154,8 @@ Undocumented internal function. octave_value retval; #if defined (HAVE_PORTAUDIO) - retval = get_recorder (interp, args(0))->get_userdata (); + retval = get_recorder (args(0))->get_userdata (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_get_userdata__", @@ -2172,8 +2165,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__recorder_isrecording__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_isrecording__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __recorder_isrecording__ (@var{recorder}) Undocumented internal function. @end deftypefn */) @@ -2181,9 +2174,8 @@ Undocumented internal function. octave_value retval; #if defined (HAVE_PORTAUDIO) - retval = get_recorder (interp, args(0))->isrecording (); + retval = get_recorder (args(0))->isrecording (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_isrecording__", @@ -2193,17 +2185,16 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__recorder_pause__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_pause__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __recorder_pause__ (@var{recorder}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) - get_recorder (interp, args(0))->pause (); + get_recorder (args(0))->pause (); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_pause__", @@ -2211,18 +2202,17 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__recorder_recordblocking__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_recordblocking__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __recorder_recordblocking__ (@var{recorder}, @var{seconds}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) float seconds = args(1).float_value (); - get_recorder (interp, args(0))->recordblocking (seconds); + get_recorder (args(0))->recordblocking (seconds); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_recordblocking__", @@ -2230,15 +2220,15 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__recorder_record__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_record__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __recorder_record__ (@var{recorder}) @deftypefnx {} {} __recorder_record__ (@var{recorder}, @var{seconds}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) - audiorecorder *recorder = get_recorder (interp, args(0)); + audiorecorder *recorder = get_recorder (args(0)); if (args.length () == 2) recorder->set_end_sample (args(1).int_value () * recorder->get_fs ()); @@ -2246,7 +2236,6 @@ Undocumented internal function. recorder->record (); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_record__", @@ -2254,18 +2243,17 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__recorder_resume__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_resume__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __recorder_resume__ (@var{recorder}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - get_recorder (interp, args(0))->resume (); + get_recorder (args(0))->resume (); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_resume__", @@ -2273,18 +2261,17 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__recorder_set_fs__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_set_fs__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __recorder_set_fs__ (@var{recorder}, @var{fs}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) if (args.length () == 2) - get_recorder (interp, args(0))->set_fs (args(1).int_value ()); + get_recorder (args(0))->set_fs (args(1).int_value ()); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_set_fs__", @@ -2292,18 +2279,17 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__recorder_set_tag__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_set_tag__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __recorder_set_tag__ (@var{recorder}, @var{tag}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) if (args.length () == 2) - get_recorder (interp, args(0))->set_tag (args(1).char_matrix_value ()); + get_recorder (args(0))->set_tag (args(1).char_matrix_value ()); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_set_tag__", @@ -2311,18 +2297,17 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__recorder_set_userdata__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_set_userdata__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __recorder_set_userdata__ (@var{recorder}, @var{data}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) if (args.length () == 2) - get_recorder (interp, args(0))->set_userdata (args(1)); + get_recorder (args(0))->set_userdata (args(1)); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_set_userdata__", @@ -2330,18 +2315,17 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__recorder_stop__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__recorder_stop__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __recorder_stop__ (@var{recorder}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - get_recorder (interp, args(0))->stop (); + get_recorder (args(0))->stop (); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__recorder_stop__", @@ -2349,8 +2333,8 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__player_audioplayer__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_audioplayer__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs}) @deftypefnx {} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs}, @var{nbits}) @deftypefnx {} {@var{player} =} __player_audioplayer__ (@var{y}, @var{fs}, @var{nbits}, @var{id}) @@ -2360,7 +2344,6 @@ Undocumented internal function. octave_value retval; #if defined (HAVE_PORTAUDIO) - interp.mlock (); audioplayer *recorder = new audioplayer (); @@ -2400,7 +2383,6 @@ Undocumented internal function. retval = recorder; #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_audioplayer__", @@ -2413,10 +2395,8 @@ Undocumented internal function. #if defined (HAVE_PORTAUDIO) static audioplayer * -get_player (interpreter& interp, const octave_value& ov) +get_player (const octave_value& ov) { - interp.mlock (); - const octave_base_value& rep = ov.get_rep (); octave_base_value *ncrep = const_cast (&rep); @@ -2430,8 +2410,8 @@ get_player (interpreter& interp, const o #endif -DEFMETHOD_DLD (__player_get_channels__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_get_channels__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{n} =} __player_get_channels__ (@var{player}) Undocumented internal function. @end deftypefn */) @@ -2440,9 +2420,8 @@ Undocumented internal function. #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - retval = get_player (interp, args(0))->get_channels (); + retval = get_player (args(0))->get_channels (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_get_channels__", @@ -2452,8 +2431,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__player_get_fs__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_get_fs__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{fs} =} __player_get_fs__ (@var{player}) Undocumented internal function. @end deftypefn */) @@ -2462,9 +2441,8 @@ Undocumented internal function. #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - retval = get_player (interp, args(0))->get_fs (); + retval = get_player (args(0))->get_fs (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_get_fs__", @@ -2474,8 +2452,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__player_get_id__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_get_id__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{id} =} __player_get_id__ (@var{player}) Undocumented internal function. @end deftypefn */) @@ -2484,9 +2462,8 @@ Undocumented internal function. #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - retval = get_player (interp, args(0))->get_id (); + retval = get_player (args(0))->get_id (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_get_id__", @@ -2496,8 +2473,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__player_get_nbits__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_get_nbits__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{nbits} =} __player_get_nbits__ (@var{player}) Undocumented internal function. @end deftypefn */) @@ -2506,9 +2483,8 @@ Undocumented internal function. #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - retval = get_player (interp, args(0))->get_nbits (); + retval = get_player (args(0))->get_nbits (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_get_nbits__", @@ -2518,8 +2494,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__player_get_sample_number__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_get_sample_number__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{n} =} __player_get_sample_number__ (@var{player}) Undocumented internal function. @end deftypefn */) @@ -2528,9 +2504,8 @@ Undocumented internal function. #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - retval = get_player (interp, args(0))->get_sample_number (); + retval = get_player (args(0))->get_sample_number (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_get_sample_number__", @@ -2540,8 +2515,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__player_get_tag__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_get_tag__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{tag} =} __player_get_tag__ (@var{player}) Undocumented internal function. @end deftypefn */) @@ -2550,9 +2525,8 @@ Undocumented internal function. #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - retval = get_player (interp, args(0))->get_tag (); + retval = get_player (args(0))->get_tag (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_get_tag__", @@ -2562,8 +2536,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__player_get_total_samples__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_get_total_samples__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{n} =} __player_get_total_samples__ (@var{player}) Undocumented internal function. @end deftypefn */) @@ -2572,9 +2546,8 @@ Undocumented internal function. #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - retval = get_player (interp, args(0))->get_total_samples (); + retval = get_player (args(0))->get_total_samples (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_get_total_samples__", @@ -2584,8 +2557,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__player_get_userdata__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_get_userdata__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {@var{data} =} __player_get_userdata__ (@var{player}) Undocumented internal function. @end deftypefn */) @@ -2594,9 +2567,8 @@ Undocumented internal function. #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - retval = get_player (interp, args(0))->get_userdata (); + retval = get_player (args(0))->get_userdata (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_get_userdata__", @@ -2606,8 +2578,8 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__player_isplaying__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_isplaying__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __player_isplaying__ (@var{player}) Undocumented internal function. @end deftypefn */) @@ -2616,9 +2588,8 @@ Undocumented internal function. #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - retval = get_player (interp, args(0))->isplaying (); + retval = get_player (args(0))->isplaying (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_isplaying__", @@ -2628,18 +2599,17 @@ Undocumented internal function. return retval; } -DEFMETHOD_DLD (__player_pause__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_pause__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __player_pause__ (@var{player}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - get_player (interp, args(0))->pause (); + get_player (args(0))->pause (); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_pause__", @@ -2647,8 +2617,8 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__player_playblocking__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_playblocking__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __player_playblocking__ (@var{player}) @deftypefnx {} {} __player_playblocking__ (@var{player}, @var{start}) @deftypefnx {} {} __player_playblocking__ (@var{player}, [@var{start}, @var{end}]) @@ -2657,7 +2627,7 @@ Undocumented internal function. { #if defined (HAVE_PORTAUDIO) - audioplayer *player = get_player (interp, args(0)); + audioplayer *player = get_player (args(0)); if (args.length () == 1) { @@ -2694,7 +2664,6 @@ Undocumented internal function. return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_playblocking__", @@ -2702,8 +2671,8 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__player_play__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_play__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __player_play__ (@var{player}) @deftypefnx {} {} __player_play__ (@var{player}, @var{start}) @deftypefnx {} {} __player_play__ (@var{player}, [@var{start}, @var{end}]) @@ -2714,11 +2683,11 @@ Undocumented internal function. if (args.length () == 1) { - get_player (interp, args(0))->play (); + get_player (args(0))->play (); } else if (args.length () == 2) { - audioplayer *player = get_player (interp, args(0)); + audioplayer *player = get_player (args(0)); if (args(1).is_matrix_type ()) { @@ -2749,7 +2718,6 @@ Undocumented internal function. return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_play__", @@ -2757,18 +2725,17 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__player_resume__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_resume__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __player_resume__ (@var{player}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - get_player (interp, args(0))->resume (); + get_player (args(0))->resume (); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_resume__", @@ -2776,18 +2743,17 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__player_set_fs__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_set_fs__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __player_set_fs__ (@var{player}, @var{fs}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) if (args.length () == 2) - get_player (interp, args(0))->set_fs (args(1).int_value ()); + get_player (args(0))->set_fs (args(1).int_value ()); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_set_fs__", @@ -2795,18 +2761,17 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__player_set_tag__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_set_tag__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __player_set_tag__ (@var{player}, @var{tag}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) if (args.length () == 2) - get_player (interp, args(0))->set_tag (args(1).char_matrix_value ()); + get_player (args(0))->set_tag (args(1).char_matrix_value ()); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_set_tag__", @@ -2814,18 +2779,17 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__player_set_userdata__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_set_userdata__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __player_set_userdata__ (@var{player}, @var{data}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) if (args.length () == 2) - get_player (interp, args(0))->set_userdata (args(1)); + get_player (args(0))->set_userdata (args(1)); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_set_userdata__", @@ -2833,18 +2797,17 @@ Undocumented internal function. #endif } -DEFMETHOD_DLD (__player_stop__, interp, args, , - doc: /* -*- texinfo -*- +DEFUN_DLD (__player_stop__, args, , + doc: /* -*- texinfo -*- @deftypefn {} {} __player_stop__ (@var{player}) Undocumented internal function. @end deftypefn */) { #if defined (HAVE_PORTAUDIO) if (args.length () == 1) - get_player (interp, args(0))->stop (); + get_player (args(0))->stop (); return ovl (); #else - octave_unused_parameter (interp); octave_unused_parameter (args); err_disabled_feature ("__player_stop__", diff --git a/libinterp/parse-tree/pt-eval.cc b/libinterp/parse-tree/pt-eval.cc --- a/libinterp/parse-tree/pt-eval.cc +++ b/libinterp/parse-tree/pt-eval.cc @@ -899,6 +899,8 @@ OCTAVE_NAMESPACE_BEGIN command_editor::run_event_hooks (); + interpreter::delete_dynlibs (); + sleep (0.1); } catch (const interrupt_exception&)