From: David Lechner <david@lechnology.com> To: linux-fbdev@vger.kernel.org Cc: David Lechner <david@lechnology.com>, Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/2] fbcon: add VT notifier for VT_UPDATE event Date: Mon, 31 Jul 2017 14:09:45 -0500 [thread overview] Message-ID: <1501528185-9976-3-git-send-email-david@lechnology.com> (raw) In-Reply-To: <1501528185-9976-1-git-send-email-david@lechnology.com> This adds notifier callback for VT events. We are currently interested in the VT_UPDATE event, which indicates there was some major change to the VT. This is used to redraw the margins. For example when the console is inverted we receive the VT_UPDATE event. The color of the margins depend on the inverted state, so it is necessary redraw the margins at this time. Signed-off-by: David Lechner <david@lechnology.com> --- drivers/video/console/fbcon.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 12ded23..8e7ac2f 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c @@ -3329,6 +3329,28 @@ static int fbcon_event_notify(struct notifier_block *self, return ret; } +static int vt_notifier_call(struct notifier_block *blk, + unsigned long code, void *_param) +{ + struct vt_notifier_param *param = _param; + struct vc_data *vc = param->vc; + + switch (code) { + case VT_UPDATE: + /* + * This event could indicate that the terminal has been + * inverted (or there was some other major change), in which + * case we need to re-draw the margins. + */ + if (con_is_visible(vc) && vc->vc_mode == KD_TEXT) + fbcon_clear_margins(vc, 0); + break; + default: + break; + } + return NOTIFY_OK; +} + /* * The console `switch' structure for the frame buffer based console */ @@ -3364,6 +3386,10 @@ static struct notifier_block fbcon_event_notifier = { .notifier_call = fbcon_event_notify, }; +static struct notifier_block vt_notifier_block = { + .notifier_call = vt_notifier_call, +}; + static ssize_t store_rotate(struct device *device, struct device_attribute *attr, const char *buf, size_t count) @@ -3612,6 +3638,7 @@ static int __init fb_console_init(void) console_lock(); fb_register_client(&fbcon_event_notifier); + register_vt_notifier(&vt_notifier_block); fbcon_device = device_create(fb_class, NULL, MKDEV(0, 0), NULL, "fbcon"); @@ -3650,6 +3677,7 @@ static void __exit fbcon_deinit_device(void) static void __exit fb_console_exit(void) { console_lock(); + unregister_vt_notifier(&vt_notifier_block); fb_unregister_client(&fbcon_event_notifier); fbcon_deinit_device(); device_destroy(fb_class, MKDEV(0, 0)); -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: David Lechner <david@lechnology.com> To: linux-fbdev@vger.kernel.org Cc: David Lechner <david@lechnology.com>, Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/2] fbcon: add VT notifier for VT_UPDATE event Date: Mon, 31 Jul 2017 19:09:45 +0000 [thread overview] Message-ID: <1501528185-9976-3-git-send-email-david@lechnology.com> (raw) In-Reply-To: <1501528185-9976-1-git-send-email-david@lechnology.com> This adds notifier callback for VT events. We are currently interested in the VT_UPDATE event, which indicates there was some major change to the VT. This is used to redraw the margins. For example when the console is inverted we receive the VT_UPDATE event. The color of the margins depend on the inverted state, so it is necessary redraw the margins at this time. Signed-off-by: David Lechner <david@lechnology.com> --- drivers/video/console/fbcon.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 12ded23..8e7ac2f 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c @@ -3329,6 +3329,28 @@ static int fbcon_event_notify(struct notifier_block *self, return ret; } +static int vt_notifier_call(struct notifier_block *blk, + unsigned long code, void *_param) +{ + struct vt_notifier_param *param = _param; + struct vc_data *vc = param->vc; + + switch (code) { + case VT_UPDATE: + /* + * This event could indicate that the terminal has been + * inverted (or there was some other major change), in which + * case we need to re-draw the margins. + */ + if (con_is_visible(vc) && vc->vc_mode = KD_TEXT) + fbcon_clear_margins(vc, 0); + break; + default: + break; + } + return NOTIFY_OK; +} + /* * The console `switch' structure for the frame buffer based console */ @@ -3364,6 +3386,10 @@ static struct notifier_block fbcon_event_notifier = { .notifier_call = fbcon_event_notify, }; +static struct notifier_block vt_notifier_block = { + .notifier_call = vt_notifier_call, +}; + static ssize_t store_rotate(struct device *device, struct device_attribute *attr, const char *buf, size_t count) @@ -3612,6 +3638,7 @@ static int __init fb_console_init(void) console_lock(); fb_register_client(&fbcon_event_notifier); + register_vt_notifier(&vt_notifier_block); fbcon_device = device_create(fb_class, NULL, MKDEV(0, 0), NULL, "fbcon"); @@ -3650,6 +3677,7 @@ static void __exit fbcon_deinit_device(void) static void __exit fb_console_exit(void) { console_lock(); + unregister_vt_notifier(&vt_notifier_block); fb_unregister_client(&fbcon_event_notifier); fbcon_deinit_device(); device_destroy(fb_class, MKDEV(0, 0)); -- 2.7.4
next prev parent reply other threads:[~2017-07-31 19:10 UTC|newest] Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-07-31 19:09 [PATCH v2 0/2] Invert margin colors when terminal is inverted David Lechner 2017-07-31 19:09 ` David Lechner 2017-07-31 19:09 ` [PATCH v2 1/2] fbcon: " David Lechner 2017-07-31 19:09 ` David Lechner 2017-07-31 19:09 ` David Lechner [this message] 2017-07-31 19:09 ` [PATCH v2 2/2] fbcon: add VT notifier for VT_UPDATE event David Lechner 2017-08-02 2:30 ` [lkp-robot] [fbcon] 903a69cad7: BUG:unable_to_handle_kernel kernel test robot 2017-08-02 2:30 ` kernel test robot 2017-07-31 19:30 ` [PATCH v2 0/2] Invert margin colors when terminal is inverted Alan Cox 2017-07-31 19:30 ` Alan Cox 2017-07-31 20:43 ` David Lechner 2017-07-31 20:43 ` David Lechner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1501528185-9976-3-git-send-email-david@lechnology.com \ --to=david@lechnology.com \ --cc=b.zolnierkie@samsung.com \ --cc=linux-fbdev@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.