aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/console/fbcon.c
diff options
context:
space:
mode:
authorAntonino A. Daplas <adaplas@gmail.com>2006-10-03 04:14:48 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-03 11:04:10 -0400
commit212f26398f63bc905ea28f55b31d4ecd4a21a33b (patch)
tree011d7f2032fbd23a0da204efcf31508b64220475 /drivers/video/console/fbcon.c
parente299dd4d7c5f38a24045e0578049d872b62f21eb (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.c17
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}