diff libgui/src/octave-qt-link.cc @ 17918:a38cee8f0a9b

derive octave_main_thread from QObject, not QThread * main-window.h, main-window.cc (main_window::_octave_main_thread): Delete member variable and all uses. * libgu/src/module.mk (octave_gui_MOC): Include src/moc-octave-main-thread.cc in the list. * octave-main-thread.h, octave-main-thread.cc (octave_main_thread::run): Delete. (octave_main_thread::execute): Rename from octave_main_thread::run. (class octave_main_thread): Derive from QObject, not QThread. * octave-qt-link.h, octave-qt-link.cc (octave_qt_link::octave_interpreter): New member variable. (octave_qt_link::main_thread): Now a pointer to a QThread object. (octave_qt_link::execute_interpreter_signal): New signal. (octave_qt_link::octave_qt_link): Create thread and octave_interpreter object here instead of accepting thread as argument. Move octave_interpreter to the main_thread object and connect the execute_interpreter signal to the corresponding slot.
author John W. Eaton <jwe@octave.org>
date Tue, 12 Nov 2013 12:36:30 -0500
parents 766ad9be2966
children b6d07dd90f3d
line wrap: on
line diff
--- a/libgui/src/octave-qt-link.cc	Wed Nov 13 06:36:50 2013 +0000
+++ b/libgui/src/octave-qt-link.cc	Tue Nov 12 12:36:30 2013 -0500
@@ -43,16 +43,24 @@
 
 #include "resource-manager.h"
 
-octave_qt_link::octave_qt_link (octave_main_thread *mt)
-  : octave_link (), main_thread (mt)
-{ }
+octave_qt_link::octave_qt_link (void)
+  : octave_link (), main_thread (new QThread ()),
+    octave_interpreter (new octave_main_thread ())
+{
+  connect (this, SIGNAL (execute_interpreter_signal (void)),
+           octave_interpreter, SLOT (execute_interpreter (void)));
+
+  octave_interpreter->moveToThread (main_thread);
+
+  main_thread->start ();
+}
 
 octave_qt_link::~octave_qt_link (void) { }
 
 void
 octave_qt_link::execute_interpreter (void)
 {
-  main_thread->execute_interpreter ();
+  emit execute_interpreter_signal ();
 }
 
 bool