lib: consolidate pipe crc exit handler
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 31 Oct 2013 15:09:46 +0000 (16:09 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 1 Nov 2013 20:10:59 +0000 (21:10 +0100)
No need to sprinkle this all over:
- exit handlers will only be registered once
- they're always called when exiting, so no need to explictly call
  them.

This allows us to hide all the pipe crc cleanup in the library.

Cc: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
lib/igt_debugfs.c
lib/igt_debugfs.h
tests/debugfs_pipe_crc.c
tests/kms_cursor_crc.c

index 167b50e..7d710e2 100644 (file)
@@ -177,6 +177,34 @@ static bool igt_pipe_crc_do_start(igt_pipe_crc_t *pipe_crc)
        return true;
 }
 
+static void igt_pipe_crc_pipe_off(int fd, enum pipe pipe)
+{
+       char buf[32];
+
+       sprintf(buf, "pipe %c none", pipe_name(pipe));
+       write(fd, buf, strlen(buf));
+}
+
+static void igt_pipe_crc_reset(void)
+{
+       igt_debugfs_t debugfs;
+       int fd;
+
+       igt_debugfs_init(&debugfs);
+       fd = igt_debugfs_open(&debugfs, "i915_display_crc_ctl", O_WRONLY);
+
+       igt_pipe_crc_pipe_off(fd, PIPE_A);
+       igt_pipe_crc_pipe_off(fd, PIPE_B);
+       igt_pipe_crc_pipe_off(fd, PIPE_C);
+
+       close(fd);
+}
+
+static void pipe_crc_exit_handler(int sig)
+{
+       igt_pipe_crc_reset();
+}
+
 igt_pipe_crc_t *
 igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
                 enum intel_pipe_crc_source source)
@@ -184,6 +212,8 @@ igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
        igt_pipe_crc_t *pipe_crc;
        char buf[128];
 
+       do_or_die(igt_install_exit_handler(pipe_crc_exit_handler));
+
        pipe_crc = calloc(1, sizeof(struct _igt_pipe_crc));
 
        pipe_crc->ctl_fd = igt_debugfs_open(debugfs,
@@ -211,32 +241,6 @@ igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
        return pipe_crc;
 }
 
-static void igt_pipe_crc_pipe_off(int fd, enum pipe pipe)
-{
-       char buf[32];
-
-       sprintf(buf, "pipe %c none", pipe_name(pipe));
-       write(fd, buf, strlen(buf));
-}
-
-/*
- * Turn off everything
- */
-void igt_pipe_crc_reset(void)
-{
-       igt_debugfs_t debugfs;
-       int fd;
-
-       igt_debugfs_init(&debugfs);
-       fd = igt_debugfs_open(&debugfs, "i915_display_crc_ctl", O_WRONLY);
-
-       igt_pipe_crc_pipe_off(fd, PIPE_A);
-       igt_pipe_crc_pipe_off(fd, PIPE_B);
-       igt_pipe_crc_pipe_off(fd, PIPE_C);
-
-       close(fd);
-}
-
 void igt_pipe_crc_free(igt_pipe_crc_t *pipe_crc)
 {
        if (!pipe_crc)
index 4e82a2c..c2810ee 100644 (file)
@@ -73,7 +73,6 @@ char *igt_crc_to_string(igt_crc_t *crc);
 igt_pipe_crc_t *
 igt_pipe_crc_new(igt_debugfs_t *debugfs, int drm_fd, enum pipe pipe,
                 enum intel_pipe_crc_source source);
-void igt_pipe_crc_reset(void);
 void igt_pipe_crc_free(igt_pipe_crc_t *pipe_crc);
 bool igt_pipe_crc_start(igt_pipe_crc_t *pipe_crc);
 void igt_pipe_crc_stop(igt_pipe_crc_t *pipe_crc);
index 770bbdb..01cd8b5 100644 (file)
@@ -206,11 +206,6 @@ static void test_read_crc(data_t *data, int pipe, unsigned flags)
 
 }
 
-static void exit_handler(int sig)
-{
-       igt_pipe_crc_reset();
-}
-
 int main(int argc, char **argv)
 {
        data_t data = {0, };
@@ -226,7 +221,6 @@ int main(int argc, char **argv)
 
                data.drm_fd = drm_open_any();
                do_or_die(igt_set_vt_graphics_mode());
-               do_or_die(igt_install_exit_handler(exit_handler));
 
                display_init(&data);
 
@@ -262,7 +256,6 @@ int main(int argc, char **argv)
        }
 
        igt_fixture {
-               igt_pipe_crc_reset();
                display_fini(&data);
                fclose(data.ctl);
        }
index cddfe10..c82d3e7 100644 (file)
@@ -304,11 +304,6 @@ static void run_test(data_t *data, enum cursor_type cursor_type, bool onscreen)
        igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
 }
 
-static void exit_handler(int sig)
-{
-       igt_pipe_crc_reset();
-}
-
 static void create_cursor_fb(data_t *data,
                             enum cursor_type cursor_type,
                             double r, double g, double b, double a)
@@ -340,7 +335,6 @@ int main(int argc, char **argv)
 
                data.drm_fd = drm_open_any();
                do_or_die(igt_set_vt_graphics_mode());
-               do_or_die(igt_install_exit_handler(exit_handler));
 
                igt_debugfs_init(&data.debugfs);
                data.ctl = igt_debugfs_fopen(&data.debugfs,
@@ -378,7 +372,6 @@ int main(int argc, char **argv)
                run_test(&data, BLACK_INVISIBLE, false);
 
        igt_fixture {
-               igt_pipe_crc_reset();
                display_fini(&data);
                fclose(data.ctl);
        }