lib/igt_aux: Improve wait_for_keypress helper a bit
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 5 Sep 2014 06:51:27 +0000 (08:51 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 5 Sep 2014 07:30:53 +0000 (09:30 +0200)
- Use keys in just one env variable to enable/disable it.
- Add an informational message so that the users knows when to press
  the key (more useful over ssh than when run on the terminal ofc).
- Improve the documentation so that it's clearer how to use this
  when running tests.

Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Damien Lespiau <damien.lespiau@intel.com>
Acked-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
lib/igt_aux.c
lib/igt_aux.h
lib/igt_kms.c

index 5ddc8b6..05cb4bd 100644 (file)
@@ -344,21 +344,37 @@ void igt_drop_root(void)
 }
 
 /**
- * igt_wait_for_keypress:
+ * igt_debug_wait_for_keypress:
+ * @key: env var lookup to to enable this wait
  *
- * Waits for a key press when run interactively. When not connected to a
- * terminal immediately continues.
+ * Waits for a key press when run interactively and when the corresponding debug
+ * key is set in the IGT_DEBUG_INTERACTIVE environment variable. Multiple keys
+ * can be specified as a comma-separated list or alternatively "all" if a wait
+ * should happen for all keys.  When not connected to a terminal the enviroment
+ * setting is ignored and execution immediately continues.
  *
  * This is useful for display tests where under certain situation manual
- * inspection of the display is useful.
+ * inspection of the display is useful. Or when running a testcase in the
+ * background.
  */
-void igt_wait_for_keypress(void)
+void igt_debug_wait_for_keypress(const char *key)
 {
        struct termios oldt, newt;
+       const char *env;
 
        if (!isatty(STDIN_FILENO))
                return;
 
+       env = getenv("IGT_DEBUG_INTERACTIVE");
+
+       if (!env)
+               return;
+
+       if (!strstr(env, key) && !strstr(env, "all"))
+               return;
+
+       igt_info("Press any key to continue ...\n");
+
        tcgetattr ( STDIN_FILENO, &oldt );
        newt = oldt;
        newt.c_lflag &= ~( ICANON | ECHO );
index a90d8d9..d958abe 100644 (file)
@@ -56,7 +56,7 @@ void igt_system_suspend_autoresume(void);
 /* dropping priviledges */
 void igt_drop_root(void);
 
-void igt_wait_for_keypress(void);
+void igt_debug_wait_for_keypress(const char *key);
 
 enum igt_runtime_pm_status {
        IGT_RUNTIME_PM_STATUS_ACTIVE,
index d763013..f483e2d 100644 (file)
@@ -1401,8 +1401,7 @@ static int do_display_commit(igt_display_t *display,
 
        LOG_UNINDENT(display);
 
-       if (getenv("IGT_DISPLAY_WAIT_AT_COMMIT"))
-               igt_wait_for_keypress();
+       igt_debug_wait_for_keypress("modeset");
 
        return 0;
 }