* With QT over EGLFS, the all running QT apps will write to the
  framebuffer whenever they have updates.
* This can cause the following undesired behavior:
  - flickering when both applications try to write updates at the
    same time. For example, if a mouse is used for control, both QT
    apps will update the mouse cursor, causing flickering between both
    apps.
  - Failure for a temporary background app (e.g. matrix) to come to
    the foreground when demo exits. For example, when launching a qt
    app via remote Matrix, the demo app will persist on the target's
    display.
* To work around this, stop matrix before launching a GUI demo, and
  restart once the demo has completed.

Signed-off-by: Jacob Stiffler <[email protected]>
---
v2:
  * Fix typo with including the patch file.
  * Clear background after stopping matrix.

 ...mmand-Stop-matrix-when-running-a-GUI-demo.patch |   84 ++++++++++++++++++++
 .../recipes-core/matrix/matrix-gui_2.0.bb          |    4 +-
 2 files changed, 87 insertions(+), 1 deletion(-)
 create mode 100644 
meta-arago-extras/recipes-core/matrix/matrix-gui/0001-execute_command-Stop-matrix-when-running-a-GUI-demo.patch

diff --git 
a/meta-arago-extras/recipes-core/matrix/matrix-gui/0001-execute_command-Stop-matrix-when-running-a-GUI-demo.patch
 
b/meta-arago-extras/recipes-core/matrix/matrix-gui/0001-execute_command-Stop-matrix-when-running-a-GUI-demo.patch
new file mode 100644
index 0000000..718f6d3
--- /dev/null
+++ 
b/meta-arago-extras/recipes-core/matrix/matrix-gui/0001-execute_command-Stop-matrix-when-running-a-GUI-demo.patch
@@ -0,0 +1,84 @@
+From 7cbf63222897de4e9b021d8d007cca74be4ca56f Mon Sep 17 00:00:00 2001
+From: Jacob Stiffler <[email protected]>
+Date: Wed, 8 Apr 2015 07:34:22 -0400
+Subject: [PATCH] execute_command: Stop matrix when running a GUI demo.
+
+* With QT over EGLFS, all running QT apps will write to the
+  framebuffer whenever they have updates.
+* This can cause the following undesired behavior:
+  - flickering when both applications try to write updates at the
+    same time. For example, if a mouse is used for control, both QT
+    apps will update the mouse cursor, causing flickering between both
+    apps.
+  - Failure for a temporary background app (e.g. matrix) to come to
+    the foreground when demo exits. For example, when launching a qt
+    app via remote Matrix, the demo app will persist on the target's
+    display.
+* To work around this, stop matrix before launching a GUI demo, and
+  restart once the demo has completed.
+
+Signed-off-by: Jacob Stiffler <[email protected]>
+---
+ execute_command.sh |   21 +++++++++++++++++++++
+ run_script.php     |    2 +-
+ 2 files changed, 22 insertions(+), 1 deletion(-)
+
+diff --git a/execute_command.sh b/execute_command.sh
+index 018c632..c636b92 100755
+--- a/execute_command.sh
++++ b/execute_command.sh
+@@ -59,6 +59,11 @@ do
+       outputfilename=$item 
+   fi
+ 
++  if [ $i -eq 2 ]
++  then
++    program_type=$item
++  fi
++
+   if [ $i -gt 1 ]
+   then
+     touch "lock/"$item
+@@ -68,10 +73,26 @@ do
+ 
+ done
+ 
++if [ $program_type == gui ]
++then
++    /etc/init.d/matrix-gui-2.0 stop
++
++    chvt 4
++    echo 0 > /sys/class/graphics/fbcon/cursor_blink
++    echo -ne "\033[9;0]\033[14;0]" > /dev/tty4
++
++    refresh_screen background-black
++fi
++
+ echo "Filename:"$filename
+ echo "Output:"$outputfilename
+ eval $filename > "tmp/"$outputfilename 2>&1
+ 
++if [ $program_type == gui ]
++then
++    /etc/init.d/matrix-gui-2.0 start
++fi
++
+ #Using a more unique string to detect if the script is completed
+ echo "_?!!MATRIX_SCRIPT_COMPLETED!!?_" >> "tmp/"$outputfilename
+ 
+diff --git a/run_script.php b/run_script.php
+index 9dd7a10..5b8351b 100644
+--- a/run_script.php
++++ b/run_script.php
+@@ -91,7 +91,7 @@ if($currently_locked==false)
+       $random_string = strval(rand());
+       $random_string .= strval(rand());
+ 
+-      $script_command = "./execute_command.sh \"".addslashes($script_link). 
"\" ".$random_string.".txt ".$lock_list;
++      $script_command = "./execute_command.sh \"".addslashes($script_link). 
"\" ".$random_string.".txt \"".$found_app["ProgramType"]."\" ".$lock_list;
+ 
+       $last_line = system($script_command." > /dev/null 2>/dev/null & ", 
$retval);
+ }
+-- 
+1.7.9.5
+
diff --git a/meta-arago-extras/recipes-core/matrix/matrix-gui_2.0.bb 
b/meta-arago-extras/recipes-core/matrix/matrix-gui_2.0.bb
index 162340e..7cfc65e 100644
--- a/meta-arago-extras/recipes-core/matrix/matrix-gui_2.0.bb
+++ b/meta-arago-extras/recipes-core/matrix/matrix-gui_2.0.bb
@@ -22,7 +22,9 @@ MATRIX_INITSCRIPT = "${@base_conditional('QT_PROVIDER', 
'qt5', base_contains('DI
 
 SRC_URI = 
"git://gitorious.org/matrix-gui-v2/matrix-gui-v2.git;protocol=http;branch=${BRANCH}
 \
            file://${MATRIX_INITSCRIPT} \
-           file://php.ini"
+           file://php.ini \
+           ${@base_conditional('QT_PROVIDER', 'qt5', 
base_contains('DISTRO_FEATURES', 'wayland', '', 
'file://0001-execute_command-Stop-matrix-when-running-a-GUI-demo.patch', d), 
'', d)} \
+"
 
 require matrix-gui-paths.inc
 
-- 
1.7.9.5

_______________________________________________
meta-arago mailing list
[email protected]
http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago

Reply via email to