[igt-dev] [PATCH i-g-t v2 6/8] tests/fbcon_fbt: Enable cursor blinking
Maarten Lankhorst
maarten.lankhorst at linux.intel.com
Tue Apr 9 17:59:55 UTC 2019
Op 27-03-2019 om 21:03 schreef José Roberto de Souza:
> If cursor blinking is disabled no screen updates will happen and
> fbcon_fbt subtests will fail, so lets enable cursor blink while
> running this test and restore to the previous value when exiting it.
>
> Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
> ---
> lib/igt_sysfs.c | 46 +++++++++++++++++++++++++++++++++++++++++++
> lib/igt_sysfs.h | 1 +
> tests/kms_fbcon_fbt.c | 1 +
> 3 files changed, 48 insertions(+)
>
> diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
> index f806f4fc..904fbd17 100644
> --- a/lib/igt_sysfs.c
> +++ b/lib/igt_sysfs.c
> @@ -610,3 +610,49 @@ void kick_snd_hda_intel(void)
> out:
> close(fd);
> }
> +
> +static int fbcon_blink_restore_debugfs_fd = -1;
> +static uint8_t fbcon_blink_restore_value;
> +
> +static void fbcon_blink_restore(int sig)
> +{
> + char buffer[4];
> + int r;
> +
> + r = snprintf(buffer, sizeof(buffer), "%u", fbcon_blink_restore_value);
> + write(fbcon_blink_restore_debugfs_fd, buffer, r + 1);
> +}
> +
> +/**
> + * fbcon_blink_enable:
> + * @enable: if true enables the fbcon cursor blinking otherwise disables it
> + *
> + * Enables or disables the cursor blinking in fbcon, it also restores the
> + * previous blinking state when exiting test.
> + *
> + */
> +void fbcon_blink_enable(bool enable)
> +{
> + const char *cur_blink_path = "/sys/class/graphics/fbcon/cursor_blink";
> + char buffer[4];
> + int fd, r;
> +
> + fd = open(cur_blink_path, O_RDWR);
> + igt_assert(fd >= 0);
> +
> + /* Restore original value on exit */
> + if (fbcon_blink_restore_debugfs_fd == -1) {
> + r = read(fd, buffer, sizeof(buffer));
> + if (r > 0) {
> + fbcon_blink_restore_value = (uint8_t)strtol(buffer,
> + NULL, 10);
> + fbcon_blink_restore_debugfs_fd = dup(fd);
> + igt_assert(fbcon_blink_restore_debugfs_fd >= 0);
> + igt_install_exit_handler(fbcon_blink_restore);
> + }
> + }
> +
> + r = snprintf(buffer, sizeof(buffer), enable ? "1" : "0");
> + write(fd, buffer, r + 1);
> + close(fd);
> +}
This looks like it will work, but is it also possible to write to the console to explicitly update it to make it more explicit?
Either way is fine with me.
~Maarten
More information about the igt-dev
mailing list