[rkward-cvs] SF.net SVN: rkward:[3105] trunk/rkward

tfry at users.sourceforge.net tfry at users.sourceforge.net
Tue Oct 5 07:07:39 UTC 2010


Revision: 3105
          http://rkward.svn.sourceforge.net/rkward/?rev=3105&view=rev
Author:   tfry
Date:     2010-10-05 07:07:39 +0000 (Tue, 05 Oct 2010)

Log Message:
-----------
Fix more place for the wrong assumption that there is always a command running, when something happens in the backend.
Second half of a fix for https://sourceforge.net/tracker/?func=detail&atid=459007&aid=3081071&group_id=50231 .

Modified Paths:
--------------
    trunk/rkward/TODO
    trunk/rkward/rkward/rbackend/rcommandstack.cpp
    trunk/rkward/rkward/rbackend/rthread.cpp

Modified: trunk/rkward/TODO
===================================================================
--- trunk/rkward/TODO	2010-10-04 20:10:40 UTC (rev 3104)
+++ trunk/rkward/TODO	2010-10-05 07:07:39 UTC (rev 3105)
@@ -37,6 +37,9 @@
 	- cleanup DISABLE_RKWINDOWCATCHER (either get rid of it, or do it right)
 	- eventually the whole RData-structure should be made to use QList-types
 
+R backend:
+	- tcl/tk can evaluate all sorts of R stuff, even if there is no "command". It would help, if we simply defined a "default" command to be active at such times.
+
 UI-stuff
 	- find/create a set of menu icons (https://sourceforge.net/mailarchive/message.php?msg_id=37891606)
 	- "First-run wizard"
@@ -241,12 +244,6 @@
 	- X11->Export:
 		- provide SVG export option
 	- provide context menu / other UI to export to different formats / edit
-	- PHP-backend:
-		- http://de3.php.net/manual/en/function.call-user-func.php seems to be faster than eval
-		- find out why an error in the backend often leads to a subsequent crash
-		- it might be possible to create only one "master" PHP process, and fork off child processes as needed from that (pcntl_fork() in PHP).
-			- Do some timing, on how much faster this would actually be
-			- The main drawback is that communication could no longer go via stdin/out, but some other mechanism would be needed. This would also mean ditching KProcess, and using perhaps QTcpServer/Socket.
 	- plugins (general)
 		- ODS filter (try to find someone to implement one in R)
 	- formula-widget:

Modified: trunk/rkward/rkward/rbackend/rcommandstack.cpp
===================================================================
--- trunk/rkward/rkward/rbackend/rcommandstack.cpp	2010-10-04 20:10:40 UTC (rev 3104)
+++ trunk/rkward/rkward/rbackend/rcommandstack.cpp	2010-10-05 07:07:39 UTC (rev 3105)
@@ -2,7 +2,7 @@
                           rcommandstack  -  description
                              -------------------
     begin                : Mon Sep 6 2004
-    copyright            : (C) 2004, 2007 by Thomas Friedrichsmeier
+    copyright            : (C) 2004, 2007, 2010 by Thomas Friedrichsmeier
     email                : tfry at users.sourceforge.net
  ***************************************************************************/
 
@@ -520,7 +520,7 @@
 	RK_ASSERT (!RInterface::inRThread ());
 
 	QModelIndex parent_index = indexFor (parent);
-	if (parent->commandPointer ()) {
+	if ((!parent) || parent->commandPointer ()) {
 		beginInsertRows (parent_index, 0, 0);
 	} else {
 		// items are always added at the end

Modified: trunk/rkward/rkward/rbackend/rthread.cpp
===================================================================
--- trunk/rkward/rkward/rbackend/rthread.cpp	2010-10-04 20:10:40 UTC (rev 3104)
+++ trunk/rkward/rkward/rbackend/rthread.cpp	2010-10-05 07:07:39 UTC (rev 3105)
@@ -390,8 +390,8 @@
 
 	if (call.count () == 2) {		// schedule symbol update for later
 		if (call[0] == "ws") {
-			RK_ASSERT (current_command);
-			if ((current_command->type () & RCommand::ObjectListUpdate) || (!(current_command->type () & RCommand::Sync))) {		// ignore Sync commands that are not flagged as ObjectListUpdate
+			// always keep in mind: No current command can happen for tcl/tk events.
+			if ((!current_command) || (current_command->type () & RCommand::ObjectListUpdate) || (!(current_command->type () & RCommand::Sync))) {		// ignore Sync commands that are not flagged as ObjectListUpdate
 				if (!changed_symbol_names.contains (call[1])) changed_symbol_names.append (call[1]);
 			}
 			return;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the rkward-tracker mailing list