diff options
author | Antonino A. Daplas <adaplas@gmail.com> | 2006-10-03 04:14:48 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-03 11:04:10 -0400 |
commit | 212f26398f63bc905ea28f55b31d4ecd4a21a33b (patch) | |
tree | 011d7f2032fbd23a0da204efcf31508b64220475 /drivers/video/console/fbcon.c | |
parent | e299dd4d7c5f38a24045e0578049d872b62f21eb (diff) |
[PATCH] fbcon: Remove cursor timer if unused
Remove the cursor timer (cursor flashing) on the following conditions:
- if vc is in KD_GRAPHICS mode, ie, when X owns the console
- if vc is blanked
This misbehavior was exposed by Dave Jones.
Signed-off-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/video/console/fbcon.c')
-rw-r--r-- | drivers/video/console/fbcon.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 050856e09e87..9e3ff00e4c14 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c | |||
@@ -396,9 +396,8 @@ static void fb_flashcursor(void *private) | |||
396 | vc = vc_cons[ops->currcon].d; | 396 | vc = vc_cons[ops->currcon].d; |
397 | 397 | ||
398 | if (!vc || !CON_IS_VISIBLE(vc) || | 398 | if (!vc || !CON_IS_VISIBLE(vc) || |
399 | fbcon_is_inactive(vc, info) || | ||
400 | registered_fb[con2fb_map[vc->vc_num]] != info || | 399 | registered_fb[con2fb_map[vc->vc_num]] != info || |
401 | vc_cons[ops->currcon].d->vc_deccm != 1) { | 400 | vc->vc_deccm != 1) { |
402 | release_console_sem(); | 401 | release_console_sem(); |
403 | return; | 402 | return; |
404 | } | 403 | } |
@@ -2166,7 +2165,12 @@ static int fbcon_switch(struct vc_data *vc) | |||
2166 | fbcon_del_cursor_timer(old_info); | 2165 | fbcon_del_cursor_timer(old_info); |
2167 | } | 2166 | } |
2168 | 2167 | ||
2169 | fbcon_add_cursor_timer(info); | 2168 | if (fbcon_is_inactive(vc, info) || |
2169 | ops->blank_state != FB_BLANK_UNBLANK) | ||
2170 | fbcon_del_cursor_timer(info); | ||
2171 | else | ||
2172 | fbcon_add_cursor_timer(info); | ||
2173 | |||
2170 | set_blitting_type(vc, info); | 2174 | set_blitting_type(vc, info); |
2171 | ops->cursor_reset = 1; | 2175 | ops->cursor_reset = 1; |
2172 | 2176 | ||
@@ -2276,10 +2280,11 @@ static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch) | |||
2276 | update_screen(vc); | 2280 | update_screen(vc); |
2277 | } | 2281 | } |
2278 | 2282 | ||
2279 | if (!blank) | 2283 | if (fbcon_is_inactive(vc, info) || |
2280 | fbcon_add_cursor_timer(info); | 2284 | ops->blank_state != FB_BLANK_UNBLANK) |
2281 | else | ||
2282 | fbcon_del_cursor_timer(info); | 2285 | fbcon_del_cursor_timer(info); |
2286 | else | ||
2287 | fbcon_add_cursor_timer(info); | ||
2283 | 2288 | ||
2284 | return 0; | 2289 | return 0; |
2285 | } | 2290 | } |