diff libinterp/interpfcn/octave-link.cc @ 16479:7a71ea0b7ae9

eliminate event listener class * main-window.h, main-window.cc (main_window::exit): New function. (main_window::_ocxtave_qt_event_listener): Delete member variable and all uses. main_window::construct_octave_qt_link): connect _octave_qt_link::octave_thread_finished to main_window::exit. * octave-qt-event-listener.h, octave-qt-event-listener.cc: Delete. * libgui/src/module.mk (octave_gui_MOC, noinst_HEADERS, src_libgui_src_la_SOURCES): Update lists. * octave-qt-link.h, octave-qt-link.cc (octave_qt_link::octave_thread_finished): New signal. (octave_qt_link::~octave_qt_link): Delete main_thread. (octave_qt_link::octave_qt_link): Connect main_thread::finished and main_thread::terminated to octave_qt_link::octave_thread_finished signal. * octave-event-listener.h: Delete. * libinterp/interp-core/module.mk (INTERPFCN_INC): Remove it from the list. * octave-link.h, octave-link.cc (octave_exit_hook): Delete. (octave_link::discard_events, octave_link::do_discard_events, octave_link::exit, octave_link::do_exit): New functions. (octave_link::event_listener): Delete member variable and all uses. (octave_link::about_to_exit, octave_link::register_event_listener, octave_link::do_about_to_exit, octave_link::do_register_event_listener): Delete. (octave_link::accepting_events): New member variable. (octave_link::octave_link): Set octave_exit to octave_link::exit. Initialize accepting_events. (octave_link::do_post_event): Only add to gui_event_queue if accepting_events is true.
author John W. Eaton <jwe@octave.org>
date Tue, 09 Apr 2013 13:47:43 -0400
parents 0f143f68078d
children 8b783661e03f
line wrap: on
line diff
--- a/libinterp/interpfcn/octave-link.cc	Tue Apr 09 03:40:28 2013 -0400
+++ b/libinterp/interpfcn/octave-link.cc	Tue Apr 09 13:47:43 2013 -0400
@@ -46,21 +46,15 @@
   return 0;
 }
 
-static void
-octave_exit_hook (int)
-{
-  octave_link::about_to_exit ();
-}
-
 octave_link *octave_link::instance = 0;
 
 octave_link::octave_link (void)
-  : event_listener (0), event_queue_mutex (new octave_mutex ()),
-    gui_event_queue (), debugging (false)
+  : event_queue_mutex (new octave_mutex ()), gui_event_queue (),
+    debugging (false), accepting_events (true)
 {
   command_editor::add_event_hook (octave_readline_hook);
 
-  octave_exit = octave_exit_hook;
+  octave_exit = octave_link::exit;
 }
 
 // OBJ should be an object of a class that is derived from the base
@@ -77,12 +71,6 @@
 }
 
 void
-octave_link::do_register_event_listener (octave_event_listener *el)
-{
-  event_listener = el;
-}
-
-void
 octave_link::do_generate_events (void)
 {
 }
@@ -98,16 +86,21 @@
 }
 
 void
-octave_link::do_about_to_exit (void)
+octave_link::do_discard_events (void)
 {
   event_queue_mutex->lock ();
 
   gui_event_queue.discard ();
 
   event_queue_mutex->unlock ();
+}
 
-  if (event_listener)
-    event_listener->about_to_exit ();
+void
+octave_link::do_exit (int)
+{
+  accepting_events = false;
+
+  do_process_events ();
 }
 
 bool